SQL(8)视图的创建+修改+删除+更新

第一部分的内容:

SQL(2)DQL语言 条件查询+排序查询+常见函数+分组查询+连接查询

https://blog.csdn.net/Lee_Yu_Rui/article/details/107527594

SQL(3)DQL语言 子查询+分页查询+联合查询

https://blog.csdn.net/Lee_Yu_Rui/article/details/107566293

SQL(4)DML语言 增删改

https://blog.csdn.net/Lee_Yu_Rui/article/details/107584843

SQL(5) DDL语言 库和表的创建,修改和删除

https://blog.csdn.net/Lee_Yu_Rui/article/details/107598414

SQL(6) 数据的常见约束和标识项

https://blog.csdn.net/Lee_Yu_Rui/article/details/107603411

SQL(7)TCL 事务控制语言 特点+演示+隔离级别+save point

https://blog.csdn.net/Lee_Yu_Rui/article/details/107603412

感谢以下链接的教学分享,很好的视频和资源,笔记记录在这里,便于日后查看

新i版-链接: https://pan.baidu.com/s/1GDhRzV_3lUQaETsH4CM8zQ 提取码: rpte
 

视图

/*
含义:虚拟表,和普通表同样使用,通过表动态生成的数据
特点:
    1.重用视图
    2.简化复杂的sql操作,不必要指导它的查询细节
    3.保护基表数据,提高安全性

             创建语法的关键字         是否实际占用物理空间                   使用
视图      create view                     是(为逻辑开辟很小空间)        一般增删改
表          create table                   否                                                   可以   
*/

# 查询姓张的学生名和专业名
SELECT `stuname`,`majorName`
FROM `stuinfo` s
INNER JOIN `major` m ON s.`majorId` = m.`id`
WHERE s.`stuname` LIKE '张%'

CREATE VIEW v1
AS
SELECT `stuname`,`majorName`
FROM `stuinfo` s
INNER JOIN `major` m ON s.`majorId` = m.`id`;

SELECT * FROM v1 WHERE s.`stuname` LIKE '张%'

 

一 创建视图


/*
语法:
create view 视图名
as
查询语句;
*/

USE `myemployees`;
#案例1:查询姓名中包含a字符的员工名,部门名和工种信息
SELECT e.`last_name`,d.`department_name`,j.*
FROM `employees` e
INNER JOIN `departments` d ON e.`department_id` = d.`department_id`
INNER JOIN `jobs` j ON e.`job_id` = j.`job_id`
WHERE `last_name` LIKE '%a%';

 

#1.创建
CREATE VIEW myv1
AS
SELECT e.`last_name`,d.`department_name`,j.*
FROM `employees` e
INNER JOIN `departments` d ON e.`department_id` = d.`department_id`
INNER JOIN `jobs` j ON e.`job_id` = j.`job_id`;
#2.使用
SELECT * FROM myv1 WHERE `last_name` LIKE '%a%';

 

#案例3:查询平均工资最低的部门信息

# 创建视图 查看每个部门的平均工资
CREATE VIEW myv2
AS
SELECT AVG(salary) ag,e.`department_id`
FROM`employees` e
GROUP BY e.`department_id`;

SELECT * FROM myv2 ORDER BY ag LIMIT 1;


#案例4: 查询平均工资最低的部门名和工资


SELECT d.*,myv2.ag
FROM `departments` d
INNER JOIN myv2
ON d.`department_id` = myv2.`department_id`
ORDER BY myv2.ag
LIMIT 1


二 修改视图


/*
方式一
    create or replace view 视图名
    as
    查询语句
方式二
    alter view 视图名
    as
    查询语句
*/

三 删除视图

/*
语法:
    drop view 视图名,视图名
*/

DROP VIEW myv2,myv1

四 查看表的结构


DESC myv2;
SHOW CREATE VIEW myv2; #显示创建的所有过程

 

五 视图的更新

CREATE OR REPLACE VIEW myv1
AS 
SELECT `last_name`,`email`,`salary`*12*(1+IFNULL(`commission_pct`,0)) 'annual salary'
FROM `employees`
SELECT * FROM myv1;

CREATE OR REPLACE VIEW myv1
AS 
SELECT `last_name`,`email`
FROM `employees`
SELECT * FROM myv1;


INSERT INTO myv1 VALUES('john','zhangfeiqq')

SELECT * FROM `employees`;  # 对视图的插入 会使得原始表也出现修改  增删改都可以使用 update delete

## 一般不对视图进行修改,所以一般设置只读
/*
以下特点的都是不能更新的
1.包含以下关键字,分组函数,distinct,group by ,having union 
2.常量视图
3.select 中有子视图
4.join
5. from一个不能更新的视图
6. where字句的子查询引用了from子句的表
*/

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lee_Yu_Rui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值