MySQL 视图

视图

1. 视图介绍


  1. 视图本质
  2. 视图作用
  3. 视图特点
  4. 出现

    • 本质 : 封装复杂的查询语句,形成虚表
    • 作用 :
    • 可以避免操作真实表
    • 限制可操作的字段数量
    • 更专注与需求数据而不受表影响,前提是完成实现需求的查询语句
    • 特点 :
    • 表 + 需求逻辑(查询语句) => 虚表
    • 关联性

      • alter,add, delete操作内容影响表
      • create,drop操作视图不影响表
      • 视图来自多表,不可add,delete数据
    • 注意

      • 修改内容的操作,会触控底层的表,需要根据底层的约束条件设计视图
    • 出现 : 5.0.1 版本

2. 视图基本操作

2.1 视图操作 - 单张表

-- 创建视图
CREATE VIEW view_student AS
    SELECT sid,sname,sage,ssex,classid FROM student;

-- 展示视图数据
SELECT * FROM view_student;

-- 增加,删除,修改视图数据
INSERT INTO view_student VALUES (123,'丁夏丛',
18,'女', 2); 
UPDATE view_student SET sage=23 WHE
RE sname='丁夏丛';
DELETE FROM view_student WHERE sname='丁夏丛';

-- 显示底层数据库的数据,检查add,delete,update是否成功
SELECT sid,sname,sage,ssex FROM student;

eg 以上 view_student 视图中,如果缺少 classid

在执行IUD(增删改)时,会发生什么情况?
由于插入数据会向底层数据插入,classid 是外键,来自班级表,将会发生错误。


2.2 视图操作 - 多张表

-- 根据多表创建索引
CREATE VIEW view_stu_cour_sc AS
    SELECT stu.sname,stu.sage,course.cname,score.score 
    FROM student stu,course,score
    WHERE stu.sid=score.sid AND course.cid=score.cid;
SELECT*FROM view_stu_cour_sc;

-- 向该视图插入数据
INSERT INTO view_stu_cour_sc VALUES ('qq',1,'ww',21);
-- 报错
--  Can not insert into join view 'exercisemysql.view_stu_cour_sc' without fields list

-- 删除一条数据
DELETE FROM view_stu_cour_sc WHERE sage=23;
-- 报错
-- Can not delete from join view 'exercisemysql.view_stu_cour_sc'
-- 修改数据

-- 修改数据
UPDATE view_stu_cour_sc SET sname='hu',score=20 WHERE sage=23;
-- 报错
-- Can not modify more than one base table through a join view 'exercisemysql.view_stu_cour_sc'
UPDATE view_stu_cour_sc SET sname='胡思' WHERE sname='胡思11111';
-- 成功

-- 获取表的详细信息
SHOW TABLE STATUS LIKE 'view%'; 

2.3 视图的查看,修改,删除

-- 查看视图的结构,视图的设计信息
SHOW CREATE VIEW view_stu_cour_sc;
desc v_deptCount;

-- 修改视图名字
ALTER VIEW view_stu_cour_sc AS
    SELECT*FROM student;

-- 修改视图名字
CREATE OR REPLACE VIEW view_stu_cour_sc AS
    SELECT * FROM class;

--删除视图
DROP VIEW view_stu_cour_sc;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值