MySQL学习笔记(9)视图

/*1.创建视图
语法格式:
CREATE [ALGORITHM = {UNDEFINED |MERGE | TEMPTABLE}]
VIEW 视图名 [(视图列表)]
AS 查询语句
[WITH [CASCADED| LOCAL] CHECK OPTTION] */



CREATE VIEW student_view1(SNAME,CNAME,SCORE) 
AS SELECT SN,CN,SCORE FROM S
INNER JOIN SC
ON S.SNO=SC.SNO
INNER JOIN C
ON SC.CNO=C.CNO;

SELECT * FROM student_view1;

CREATE VIEW  student_view2(SNUM,SNAME,SAGE) 
AS SELECT SNO,SN,AGE FROM S ;

CREATE VIEW student_view3 AS SELECT S.SN  ,D.SCORE FROM S
JOIN (SELECT SNO ,SCORE FROM SC WHERE SC.CNO='C1' ) AS D
ON D.SNO=S.SNO;

CREATE VIEW student_view4(AVGSCORE) AS SELECT AVG(SCORE) FROM SC 
GROUP BY CNO  
HAVING CNO='C2';

CREATE VIEW student_view5 AS SELECT SNO ,SCORE
FROM SC WHERE CNO='C2' AND SCORE>
(SELECT AVG(SCORE) FROM SC 
GROUP BY CNO  
HAVING CNO='C2');

/*2.查看视图
语法格式:
1) DESCRIBE语句,语法格式:DESCRIBE 视图名称;  或者DESC 视图名称;
2) SHOW TABLE STATUS语句,语法格式: SHOW TABLE STATUS LIKE '视图名'
3) SHOW CREATE VIEW语句,语法格式:SHOW CREATE VIEW '视图名'
*/

DESC student_view1;
SHOW TABLE STATUS LIKE 'student_view1'\G
SHOW CREATE VIEW student_view2 ;

/*2.修改视图
语法格式:
1) CREATE OR REPLACE 语句格式:
CREATE OR REPLACE [ALGORITHM = {UNDEFINED |MERGE | TEMPTABLE}]
VIEW 视图名 [(视图列表)]
AS 查询语句
[WITH [CASCADED| LOCAL] CHECK OPTTION];

2) ALTER语句,语法格式: 
ALTER  [ALGORITHM = {UNDEFINED |MERGE | TEMPTABLE}]
VIEW 视图名 [(视图列表)]
AS 查询语句
[WITH [CASCADED| LOCAL] CHECK OPTTION];
3) SHOW CREATE VIEW语句,语法格式:SHOW CREATE VIEW '视图名'
*/

CREATE OR REPLACE VIEW student_view1(姓名,课程名,成绩) 
AS SELECT SN,CN,SCORE FROM S
INNER JOIN SC
ON S.SNO=SC.SNO
INNER JOIN C
ON SC.CNO=C.CNO;


ALTER VIEW student_view1(SNAME,CNAME,SCORE) 
AS SELECT SN,CN,SCORE FROM S
INNER JOIN SC
ON S.SNO=SC.SNO
INNER JOIN C
ON SC.CNO=C.CNO;


/*4.删除视图
语法格式:DROP VIEW [IF EXISTS]
VIEW_NAME[,VIEW_NAME2]…
*/

DROP VIEW IF EXISTS student_view1;

/*查询视图*/
SELECT SNAME,SCORE FROM student_view1;



/*5.更新视图数据
 尽量不要用视图更新数据
*/
UPDATE student_view1 SET SCORE=75 WHERE SNAME='李立勇' AND CNAME='数据库';
UPDATE student_view2 SET SAGE=35 WHERE SNAME='李立勇';
--视图中包含子查询,并且内层查询的from子句中涉及的表也是导出该视图的基本表,则此视图不能允许更新;
UPDATE student_view3 SET SCORE=35 WHERE SNAME='李立勇';
--视图中包含sum(),count()等聚集函数的;
UPDATE student_view4  SET AVGSCORE=85;
--视图中包含union、union all、distinct、group by、having等关键字的;
UPDATE student_view5 SET SCORE=70 WHERE SNO='S1';

--级联的数据表无法进行插入和删除操作
INSERT INTO student_view1 SET SNAME='士大夫',CNAME='英语',SCORE='70';
INSERT INTO student_view2 SET SNUM='S7',SNAME='王含',SAGE=22;
DELETE FROM student_view1;
DELETE FROM student_view2 WHERE SNUM='S1';


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值