什么是视图?

视图(view)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。

视图相对普通的表的优势主要包括一下几项:

(1)简单:使用视图的用户完全不需要关心后面对应的表结构、关联条件和筛选条件,对用户来说已经是过滤好的符合条件的结果集。

(2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。

(3)数据独立:一旦视图的结构确定的,可以屏蔽不表结构的变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

视图操作

视图的操作包括创建或者修改视图、删除视图,以及查看视图定义。

创建或者修改视图

创建视图需要有CREATE VIEW的权限,并且对于查询涉及的列有SELECT权限。如果使用CREATE OR REPLACE或者ALTER修改视图,那么还需要该视图的DROP权限

创建视图的语法为:

CREATE [OR REPLACE] [ALGORITHM  = {UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED|LOCAL] CHECK OPTION]

修改视图的语法为:

ALTER [ALGORITHM ={UNDEFINED|MERGE|TEMPTABLE}]

VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED|LOCAL] CHECK OPTION]

MYSQL视图的定义有一些限制,例如,在FROM关键字后面不能包含子查询,这和其他数据库是不同的,如果视图是从其他数据库迁移过来的,那么可能需要因此做一些改动,可以将子查询的内容先定义成一个视图,然后对该视图在创建视图就可以实现类似的功能了。

视图的可更新性和视图中查询的定义有关系,以下类型的视图是不可更新的。

(1)包含以下关键字的SQL语句:聚合函数(SUM、MIN、MAX、COUNT等) DISTINCT、GROUP BY 、HAVING、UNION或者UNION ALL。

(2)常量视图

(3)SELECT 中包含子查询

(4)JION:外左联合查询、外右联合查询、内查询

(5)FROM 一个不能更新的视图

(6)WHERE字句的子查询引用了FROM字句中的表。

WITH [CASCADED|LOCAL] CHECK OPTION决定了是否允许更新数据使记录不再满足视图的条件。这个选项与ORACLE数据库中的选项是类似的,其中:

(1)LOCAL是只要满足本视图的条件就可以更新;

(2)CASCADED则是必须满足所有针对该视图的所有视图的条件才可以更新。如果没有明确是LOCAL还是CASCADED,则默认是CASCDAED

(3)删除视图

用户可以一次删除一个或者多个视图,前提是必须有该视图的DROP权限。

DROP VIEW [IF EXISTS] view_name [,view_name] ...[RESTRICT|CASCADE]

(1)设计视图

1) 建立一个名为V_CX_ZG的视图,功能是从职工信息表中查询非汉族的职工记录,并按出生日期排序。(该视图用于“固定条件查询”功能)

MYSQL>CREATE OR REPLACE VIEM V_CX_ZG AS SELECT NATIONAL,BRITH FROM EMPLOYEE WHERE NATIONAL NOT IN('汉') GROUP BY BRITH;

MYSQL>SELECT * FROM V_CX_ZG;

2)建立一个名为V_CX_GZ的视图,功能是从工资档案表中查询岗位工资和补贴都高于500元的记录,要求显示出部门名称、姓名、性别、职称、基本工资、岗位工资、补贴和奖金,并按部门和基本工资的降序排列。(该视图用于“固定条件查询”功能)

MYSQL>CREATE OR REPLACE VIEW V_CX_GZ AS SELECT A.DEPARTMENT_NAME,A.EMPLOYEE_NAME,A.GENDER,A.TITLE,B.BASIC_WAGE,B.POST_WAGE,B.SUBSIDIES,B.FUND FROM EMPLOYEE A LEFT JOIN WAGE B ON (A.EMPLOYEE_ID=B.EMPLOYEE_ID)  WHERE (B.POST_WAGE >500) AND (B.SUBSIDIES >500);

MYSQL>SELECT * FROM V_CX_GZ;

3)建立一个所有职工工资统计视图V_ZGGZTJ,计算所有人员的基本工资的总和、平均值、最大值和最小值。(该视图用于“数据统计”功能)

MYSQL>CREATE OR REPLACE VIEW V_ZGGZTJ AS SELECT SUM(BASIC_WAGE),AVG(BASIC_WAGE),MAX(BASIC_WAGE),MIN(BASIC_WAGE) FROM WAGE;

MYSQL>SELECT * FROM V_ZGGZTJ;

4)建立一个各部门人数统计的视图V_BMTJ,功能是从职工信息表中统计各部门的人数。(该视图用于“数据统计”功能)

MYSQL>CREATE OR REPLACE VIEW V_BMTJ AS SELECT DEPARTMENT_NAME,COUNT(DEPARTMENT_ANEM) FROM EMPLOYEE GROUP BY DEPARTMENT_NAME;

MYSQL>SELECT * FROM V_BMTJ;

5)建立一个各类职称人数统计的视图V_ZCTJ,功能是从职工信息表中统计各类职称的人数。(该视图用于“数据统计”功能)

MYSQL>CREATE OR REPLACE VIEW V_ZCTJ AS SELECT TITLE,COUNT(TITLE) FROM EMPLOYEE GROUP BY TITLE;

MYSQL>SELECT * FROM V_ZCTJ;

6)建立一个各民族人数统计的视图V_MZTJ,功能是从职工信息表中统计各民族的人数。(该视图用于“数据统计”功能)

MYSQL>CREATE OR REPLACE VIEW V_MZTJ AS SELECT NATIONAL,COUNT(NATIONAL) FROM EMPLOYEE GROUP BY NATIONAL;

MYSQL>SELECT * FROM V_MZTJ;

7)建立一个职工工资视图V_ZGGZ,功能是从职工信息、工资档案和工资发放三个表中查询所有职工的工资情况,其中包括部门名、姓名、性别、职称、基本工资、岗位工资、补贴、奖金、应得工资、其他加、其他扣、实发工资、发放日期。(其中:应得工资=基本工资+岗位工资+补贴+奖金+其他加;实发工资=基本工资+岗位工资+补贴+奖金+其他加-其他扣。)(该视图用于“选择条件查询”功能)

内部查询

MYSQL>CREATE OR REPLACE VIEW V_ZGGZ AS SELECT EMPLOYEE.DEPARTMENT_NAME,EMPLOYEE.EMPLOYEE_NAME,EMPLOYEE.GENDER,EMPLOYEE.TITLE,WAGE.BASIC_WAGE,WAGE.POST_WAGE,WAGE.SUBSICDIES,WAGE.FUND,WAGE.BASIC_WAGE+WAGE.POST_WAGE+WAGE.SUBSIDIES+WAGE.FUND+PWAGE.BAISE_WAGE AS TOTAL_WAGE,PWAGE.RAISE_WAGE,PWAGE.CUT_WAGE,WAGE.BASIC_WAGE+WAGE.POST_WAGE+WAGE.SUBSIDIES+WAGE.FUND+PWAGE.RAISE_WAGE-PWAGE.CUT_WAGE AS WAGES FROM EMPLOYEE INNER JOIN WAGE ON EMPLOYEE.EMPLOYEE_ID=WAGE.EMPLOYEE_ID INNER JOIN PWAGE ON  WAGE.EMPLOYEE_ID=PWAGE.EMPLOYEE_ID;

MYSQL>SELECT * FROM V_ZGGZ;

8)建立一个月工资汇总视图V_YGZHZ,功能是从视图V_ZGGZ中统计每个月发放的基本工资、岗位工资、补贴、奖金、其他加、应得工资、其他扣、实发工资的总和。 (该视图用于“数据统计”功能)

MYSQL>CREATE OR REPLACE VIEW V_YGZHZ AS SELECT SUM(BASIC_WAGE),SUM(POST_WAGE),SUM(SUBSIDIES),SUM(FUND),SUM(RAISE_WAGE),SUM(TOTAL_WAGE),SUM(WAGES) FROM V_ZGGZ;

MYSQL>SELECT * FROM V_YGZHZ;

9)建立一个部门工资汇总视图V_BMGZHZ,功能是从视图V_ZGGZ中统计各个部门的基本工资、岗位工资、补贴、奖金、其他加、应得工资、其他扣、实发工资的总和。(该视图用于“数据统计”功能)

MYSQL>CREATE OR REPLACE VIEW V_BMGZHZ AS SELECT SUM(BASIC_WAGE),SUM(POST_WAGE),SUM(SUBSIDIES),SUM(FUND),SUM(RAISE_WAGE),SUM(TOTAL_WAGES),SUM(CUT_WAGE),SUM(WAGES) FROM V_ZGGZ GROUP BY DEPARTMENT_NAME;

MYSQL>SELECT * FROM V_BMGZHZ;

哈! 。。写完了。如有什么不足之处,请指正。顺便给点意见和建议。

建立视图实发工资mysql_MYSQL人事工资管理系统--设计视图(四)相关推荐

  1. MYSQL人事工资管理系统--数据库表及表设计(一)

    在做人事工资管理系统之前,要学习MySQL基础知识.比如:创建数据库及数据库表,增加字段,删除字段,修改字段,创建主键和外键,查询数据.创建视图.创建存储过程.创建触发器等.<?xml:name ...

  2. asp.net人事工资管理系统

    随着我国的政策开发,国家经济一直在稳步的上升,国内企业更是呈现欣欣向荣的一片景象,同时企业的人员调动也在不断的扩大,随着企业的人员不断的增加,传统的企业人事管理模式已经不能使用这种高速发展的状态,所有 ...

  3. 基于Struts2框架的超市人事工资管理系统

    基于Struts2框架的超市人事工资管理系统 摘要: 由于计算机技术的飞速发展,网页与数据库技术作为数据管理的一个重要手段,在各行各业中得到了广泛的应用.本文基于Struts2框架技术,利用MyEcl ...

  4. java计算机毕业设计基于springboot企业人事工资管理系统

    项目介绍 在这个计算机信息时代深处,对于每个公司来说,人事管理的信息化是企业发展的重要组成部分.使用计算机管理人员信息具有传统管理无法比拟的巨大优势.比如:快速查询.管理方便.可靠性高.存储容量大.保 ...

  5. Java+MySQL 基于ssm的公司员工人事工资管理系统#毕业设计

    文末获取源码 开发环境 项目编号:Java+MySQL ssm270公司员工人事工资管理系统#毕业设计 开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:T ...

  6. 基于PHP+MYSQL的公司人事工资管理系统

    通过设计本项目作为毕业设计,可以充分查看我大学期间所学习的知识,提高了自己面对实际开发过程中解决问题的能力.在项目本身出发,通过企业人员管理系统的设计与实现,可以提高企业的管理效率,保障了工作有序进行 ...

  7. 人事工资管理系统 c语言,c语言人事工资管理系统源程序.doc

    c语言人事工资管理系统源程序 #include #include #include #define N 300 void input(); //输入模块 void save(); //保存模块 voi ...

  8. 企业人事工资管理系统(源码+数据库+三层架构)

    人事工资管理系统是一个企业单位不可缺少的部分,它能够为用户提供充足的信息和快捷的查询手段,所以人事工资管理系统的内容对于企业的决策者和管理者来说都是至关重要的. 文件:590m.com/f/25127 ...

  9. c语言工资管理程序用文档,c语言人事工资管理系统源程序

    c语言人事工资管理系统源程序代码 #include #include #include #define N 300 void input(); //输入模块 void save(); //保存模块 v ...

最新文章

  1. C语言 · 黑色星期五
  2. php的instanceof和判断闭包Closure
  3. python中__call__方法_Python中__call__用法实例
  4. FGSM实例:利用fgsm攻击RMB识别模型
  5. 韦根协议c语言,韦根协议(26位)及其读取算法
  6. vscode美化:主题切换+背景图片设置
  7. 自动化测试平台化[v1.0.0][模块化设计方法]
  8. 《精益数据分析》:网易创始人丁磊力荐
  9. Bartender 的二维码QR Code出现编码错误:输入数据包含对所选编码无效的字符
  10. Keras,今天7岁啦
  11. Redis底层数据结构(图文详解)
  12. 《TCP/IP具体解释卷2:实现》笔记--选路请求和选路消息
  13. 微信小程序56个民族数组选择器
  14. GeForce GTX 970 硬件特性
  15. 计算机软件图标乱码,win7系统图标汉字显示乱码变成奇怪符号的解决方法
  16. 字符串拷贝函数:strcpy的详解及模拟实现
  17. c语言 不定参数printf的实现
  18. 制作JavaSript小轮播
  19. 康佳H8 Pro投影仪和哈趣H1谁更值得买 最详分析给你答案
  20. 自动化软件测试工作内容,软件测试工程师的主要工作内容

热门文章

  1. android 10.0 SystemUI屏蔽某个app的通知
  2. Activiti学习(4)简单的请假流程
  3. 书评《HTTP权威指南》
  4. 关于AI视觉-如何连接使用智能语音开发套件(USB语音开发套件)
  5. 【深度学习】卷积神经网络(CNN)
  6. i7处理器好吗_i7笔记本电脑比i3和i5笔记本电脑好吗
  7. iOS开发,tableView在Grouped样式下,表头表尾空白问题解决
  8. JSP PHP ASP 语言的比较和区别 详解
  9. 登录页面html代码菜鸟,CSS+html登录界面(菜鸟学前端)
  10. 通达信行情数据获取--python_股票量化交易-获取数据的两种方法