第一部分的内容:
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子句的表
*/