MySQL——视图

视图

  • 虚拟表,和普通的表一样使用。
  • 行列数据来自定义视图的查询中使用的表,是使用时动态生成的,只保存sql逻辑,不保存查询结果,具有临时性。
    (类似一键查询,封装)

创建视图

语法:

create view 视图名
as
查询语句;

例:查询邮箱包含a的员工名,部门名,工种id

CREATE VIEW v1
AS 
SELECT last_name,department_name,job_id
FROM employees e
INNER JOIN departments d ON e.department_id=d.department_id
WHERE email LIKE'%a%';

使用视图

例:使用上述视图,从中找出名字包含a的信息

SELECT * FROM v1 WHERE last_name LIKE '%a%';
  • 由上述操作可以得到启发,以前需要通过连接,嵌套查询等方法完成的操作,现在可以通过视图完成

例:查询各部门平均工资级别

#创建视图查询各个部门平均工资
CREATE VIEW v2
AS 
SELECT AVG(salary) ag, department_id
FROM employees
GROUP BY department_id;

#使用并查询平均工资级别
SELECT grade_level, department_id
FROM job_grades j
JOIN v2 v 
ON v.`ag` BETWEEN j.`lowest_sal` AND j.`highest_sal`;

修改视图

语法:

#方式一
create or replace view 视图名
as
查询语句;

#方式二
alter view 视图名
as 
查询语句;

删除视图

语法(可以删除多个):

drop view 视图名, 视图名,...;

查看视图

#方法一
DESC 视图名;

#方法二
SHOW CREATE VIEW 视图名;

更新视图

对于视图的数据更新和对普通表的操作基本上一样。

  • 插入——insert
  • 修改——update
  • 删除——delete

注意:

  1. 与修改区别,此处是修改视图中的数据,上面的修改视图是修改sql语句。
  2. 一般不对视图数据做修改
  3. 视图的可更新性和视图中查询的定义有关系。具备以下特点的视图不允许更新(not updatable):
    包含分组函数,distinct,group by,having,union;
    常量视图(即查询的是某个常量);
    select包含子查询;
    使用了连接查询;
    查询from一个不能更新的视图;
    where子句的子查询引用了from子句中的表

级联删除

级联删除的作用在于,当两个表以外键相连接时,如果删除主表某一行信息,会影响到从表,导致无法进行删除的问题。但是如果加上了级联删除的限制,在删除主表信息时,从表中与该行相关的信息也会被删除,如:删除专业信息表中的数学专业,则学生表中的数学专业的学生信息都会被删除。

语法:在外键命令后添加on delete cascade

constraint 外键名 foreign key(列名) references 主表(列名) on delete cascade;

级联置空

加上级联置空的限制,在删除主表信息时,从表中与该行相关的信息也会被设为null,如:删除专业信息表中的数学专业,则学生表中的数学专业的学生其专业信息都会被设为null。

语法:在外键命令后添加on delete set null

constraint 外键名 foreign key(列名) references 主表(列名) on delete set null;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值