MySQL-视图
视图
视图的语法
案例1.查询姓名中包含a字符的员工名、部门名和工种信息
#1.查询姓名中包含a字符的员工名、部门名和工种信息
# 创建
create view myv1
as
select `last_name`,`department_name`,`job_title`
from `employees` e
join `departments` d on e.`department_id`=d.`department_id`
join `jobs` j on e.`job_id`=j.`job_id`
# 使用
select * from myv1
where `last_name` like '%a%';
视图的优点
视图的修改
CREATE OR REPLACE VIEW myv3
AS
SELECT AVG(`salary`),`job_id`
FROM `employees`
GROUP BY `job_id`;
SELECT * FROM myv3
删除视图
查看视图
案例:创建视图emp_v1,要求查询电话号码以"011"开头的员工姓名和工资、邮箱
# 案例:创建视图emp_v1,要求查询电话号码以"011"开头的员工姓名和工资、邮箱
CREATE OR REPLACE VIEW emp_v1
AS
SELECT `last_name`,`salary`,`email`
FROM `employees`
WHERE `phone_number` LIKE '011%';
SELECT * FROM emp_v1;
案例:创建视图emp_v2,要求查询部门的最高工资高于12000的部门信息
# 案例:创建视图emp_v2,要求查询部门的最高工资高于12000的部门信息
CREATE OR REPLACE VIEW emp_v2
AS
SELECT MAX(`salary`) mx_dep,`department_id`
FROM `employees`
GROUP BY `department_id`
HAVING MAX(`salary`)>12000;
SELECT * FROM emp_v2;
SELECT d.*,emp_v2.`mx_dep`
FROM `departments` d
JOIN emp_v2
ON d.`department_id`=emp_v2.`department_id`
视图的更新
先创建一个视图
CREATE OR REPLACE VIEW myv1
AS
SELECT `last_name`,`email`
FROM `employees`;
SELECT * FROM myv1;
1.插入
#1.插入
INSERT INTO myv1 VALUES('张飞','ggh@163.com');
2.修改
#2.修改
UPDATE myv1 SET `last_name`='张无忌' WHERE `last_name`='张飞'
3.删除
#3.删除
DELETE FROM myv1 WHERE `last_name`='张无忌'
这时候视图和原始表里面 张无忌这一条记录都被删掉了
总体代码:
# 视图的更新
CREATE OR REPLACE VIEW myv1
AS
SELECT `last_name`,`email`
FROM `employees`;
SELECT * FROM myv1;
#1.插入
INSERT INTO myv1 VALUES('张飞','ggh@163.com');
SELECT * FROM `employees`;
#2.修改
UPDATE myv1 SET `last_name`='张无忌' WHERE `last_name`='张飞'
#3.删除
DELETE FROM myv1 WHERE `last_name`='张无忌'
视图和表的大对比
delete和truncate在事物中的区别
先创建一个表
CREATE TABLE account(
id INT,
username VARCHAR(20),
balance INT
)
插入两行测试数据
INSERT INTO account VALUES(1,'张无忌',1000),(2,'赵敏',1000)
SELECT * FROM `account`
演示delete
# 演示delete
SET autocommit=0;
START TRANSACTION;
DELETE FROM account;
ROLLBACK;
演示truncate
# 演示truncate
SET autocommit=0;
START TRANSACTION;
TRUNCATE TABLE account;
ROLLBACK;
其中 delete from 和truncate table 都是删除表的内容,DROP TABLE 是把整个表进行删除
测试题
测试题1
测试题2
测试题3
测试题4
测试题5
复习
外键中 删除主表的记录(一般先删除从表 再删除主表),下面的语句可以帮助你删除主表的记录
转载请注明出处,欢迎讨论和交流!