视图的使用

视图的使用

1.先在命令行中创建一个视图YGGL

create database YGGL;

2.设置字符集

set names gbk;

3.选择数据库:

use YGGL;

创建Departments,Employees,Salary三张表

  • Departments
DROP TABLE IF EXISTS `departments`;
CREATE TABLE `departments` (
  `DepartmentID` char(3) NOT NULL,
  `DepartmentName` char(20) NOT NULL,
  `Note` text,
  PRIMARY KEY (`DepartmentID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
  • 向Departments表中插入若干条数据
INSERT INTO `departments` VALUES ('1', '财务部', null);
INSERT INTO `departments` VALUES ('2', '人力资源部', null);
INSERT INTO `departments` VALUES ('3', '经理办公室', null);
INSERT INTO `departments` VALUES ('4', '研发部', null);
INSERT INTO `departments` VALUES ('5', '市场部', null);
  • Employees表

DROP TABLE IF EXISTS `employees`;
CREATE TABLE `employees` (
  `EmployeeID` char(6) NOT NULL,
  `Name` char(10) NOT NULL,
  `Education` char(4) NOT NULL,
  `Birthday` date NOT NULL,
  `Sex` char(2) NOT NULL,
  `WorkYear` tinyint(1) DEFAULT NULL,
  `Address` varchar(20) DEFAULT NULL,
  `PhoneNumber` char(12) DEFAULT NULL,
  `DepartmentID` char(3) NOT NULL,
  PRIMARY KEY (`EmployeeID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
  • 向Employees表中插入若干条数据
INSERT INTO `employees` VALUES ('000001', '王林', '大专', '1966-01-23', '1', '8', '中山路32-1-508', '83355668', '2');
INSERT INTO `employees` VALUES ('010008', '伍容华', '本科', '1976-03-28', '1', '3', '北京东路100-2', '83321321', '1');
INSERT INTO `employees` VALUES ('020010', '王向容', '硕士', '1982-12-09', '1', '2', '四牌楼10-0-108', '83792361', '1');
INSERT INTO `employees` VALUES ('020018', '李丽', '大专', '1960-07-30', '0', '6', '中山东路102-2', '83413301', '1');
INSERT INTO `employees` VALUES ('102201', '刘明', '本科', '1972-10-18', '1', '3', '虎踞路100-2', '83606608', '5');
INSERT INTO `employees` VALUES ('102208', '朱俊', '硕士', '1965-09-28', '1', '2', '牌楼巷5-3-106', '84708817', '5');
INSERT INTO `employees` VALUES ('108991', '钟敏', '硕士', '1979-08-10', '0', '4', '中山路10-3-105', '83346722', '3');
INSERT INTO `employees` VALUES ('111006', '张石兵', '本科', '1974-10-01', '1', '1', '解放路34-1-203', '84563418', '5');
INSERT INTO `employees` VALUES ('210678', '林涛', '大专', '1977-04-02', '1', '2', '中山北路24-35', '83467336', '3');
INSERT INTO `employees` VALUES ('302566', '李玉珉', '本科', '1968-09-20', '1', '3', '热河路209-3', '58765991', '4');
INSERT INTO `employees` VALUES ('308759', '叶凡', '本科', '1978-11-18', '1', '2', '北京西路3-7-52', '83308901', '4');
INSERT INTO `employees` VALUES ('504209', '陈林琳', '大专', '1969-09-03', '0', '5', '汉中路120-4-12', '84468158', '4');
  • Salary表

DROP TABLE IF EXISTS `salary`;
CREATE TABLE `salary` (
  `EmployeeID` char(6) NOT NULL,
  `InCome` float(8,0) NOT NULL,
  `OutCome` float(5,0) NOT NULL,
  PRIMARY KEY (`EmployeeID`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
  • 向Salary表中插入若干条数据
INSERT INTO `salary` VALUES ('000001', '2101', '123');
INSERT INTO `salary` VALUES ('010008', '1583', '88');
INSERT INTO `salary` VALUES ('102201', '2570', '186');
INSERT INTO `salary` VALUES ('111006', '1987', '80');
INSERT INTO `salary` VALUES ('504209', '2066', '108');
INSERT INTO `salary` VALUES ('302566', '2981', '210');
INSERT INTO `salary` VALUES ('108991', '3260', '282');
INSERT INTO `salary` VALUES ('020010', '2860', '198');
INSERT INTO `salary` VALUES ('020018', '2348', '180');
INSERT INTO `salary` VALUES ('308759', '2532', '199');
INSERT INTO `salary` VALUES ('210678', '2240', '121');
INSERT INTO `salary` VALUES ('102208', '1980', '100');

一、创建视图

1.创建YGGL数据库上的视图DS_VIVE,视图包含部门的全部信息。

create view yggl.ds_vive
as
select * from departments;

运行结果:

image-20210423165852645

2.创建YGGL数据库上的视图EM_VIVE,视图包含员工的员工号、姓名、收入和支出。

create view yggl.em_vive(employeeID,name,income,outcome)
as
select employees.employeeID,name,income,outcome
from employees,salary
where employees.employeeID=salary.employeeID;

运行结果:

image-20210423165959707

3.创建YGGL数据库上的视图ED_VIVE,视图包含员工的员工号、姓名、所在部门名称和实际收入。

create view yggl.ed_vive(employeeID,name,departmentname,RealIncome)
as
select employees.employeeID,name,departmentname,income-outcome
from employees,departments,salary
where employees.employeeID=salary.employeeID and departments.departmentID=employees.departmentID;

运行结果:

image-20210423170101438

4.创建视图SS_VIVE,视图中包含每个部门员工的月收入平均数。

create view yggl.ss_vive
as
select departments.departmentid,avg(income)
from departments,salary,employees
where employees.employeeID=salary.employeeID and departments.departmentID=employees.departmentID
group by departments.departmentid;

运行结果:

image-20210423170158489

5.创建视图DC_VIVE,视图中要求统计出各个年份工作的人数,如工作1年的多少人,工作2年的多少人。

create view yggl.dc_vive
as
select name,year(now())-year(birthday) as 工作年份,count(year(now())-year(birthday)) as 人数
from employees
group by 工作年份;

运行结果:

image-20210423170254330

二、查询视图

1.从视图DS_VIVE中查询出部门号为4的部门名称。

select departmentID,departmentname
from DS_VIVE
where departmentID='4';

运行结果:

image-20210423170344063

2.从视图EM_VIVE中查询王林的实际收入。

select name,income-outcome as 实际收入
from EM_VIVE
where name='王林';

运行结果:

image-20210423170423143

三、更新并查看视图
1.向视图DS_VIVE中插入一行数据:6,销售部,产品销售,并查看更新后的视图信息。

insert into DS_VIVE
values('6','销售部','产品销售');
select * from DS_VIVE;

运行结果:

image-20210423170504639

2.将视图DS_VIVE中部门号为4的部门名称修改为测试部,并查看更新后的视图信息。

update DS_VIVE
set departmentname='测试部'
where departmentID='4';
select * from DS_VIVE;

运行结果:

image-20210423170544063

3.将视图EM_VIVE中所有员工的收入增加1000,并查看更新后的视图信息。

update EM_VIVE
set income=income+1000;
select * from EM_VIVE;

运行结果:

image-20210423170640363

4.修改视图ED_VIVE,将员工号为000001的员工姓名改为“王浩”,并查看更新后的视图信息。

update ED_VIVE
set name='王浩'
where employeeID='000001';
select * from ED_VIVE;

运行结果:

image-20210423170719031

5.删除视图DS_VIVE中部门号为1的数据。

delete from DS_VIVE
where departmentID='1';

运行结果:

image-20210423170820243

四、删除视图

删除视图EM_VIVE。

drop view EM_VIVE;

运行结果:

image-20210423170950899
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值