建设会计协会网站,wordpress wap模板,网站在百度突然搜不到了,网站建设借鉴mysql视图和sql语句 一.mysql视图1.数据的虚拟表示#xff1a;2.简化复杂查询#xff1a;3.安全性和权限控制#xff1a;4.逻辑数据组织#xff1a;5.更新限制#xff1a;6.视图的创建#xff1a; 二.mysq语句使用案列 MySQL的视图#xff08;View#xff09;是一个虚拟… mysql视图和sql语句 一.mysql视图1.数据的虚拟表示2.简化复杂查询3.安全性和权限控制4.逻辑数据组织5.更新限制6.视图的创建 二.mysq语句使用案列 MySQL的视图View是一个虚拟表它基于一个或多个实际表或其他视图的查询结果而创建。视图本身不包含实际的数据而是根据定义视图的查询时动态生成的结果集。以下是有关MySQL视图的一些重要信息
一.mysql视图
1.数据的虚拟表示
视图提供了一个虚拟的数据表示方式它并不存储实际数据而是根据查询实时生成结果。这意味着视图是对底层表的动态引用。
2.简化复杂查询
视图可以将复杂的查询、连接和计算封装成单个易于使用的虚拟表。通过创建视图可以隐藏复杂性并且可以让用户使用简单的SELECT语句访问数据。
3.安全性和权限控制
视图可以用于控制用户对数据的访问权限。通过只向用户授予对视图的访问权限可以隐藏底层表的细节和敏感信息确保用户只能看到他们被授权查看的数据。
4.逻辑数据组织
视图可以帮助组织数据逻辑使其更容易理解和管理。它们可以根据特定的业务需求或查询模式对数据进行重组使数据更具可读性和易用性。
5.更新限制
某些视图是可更新的可用于INSERT、UPDATE和DELETE操作但并非所有视图都支持这些操作。更新视图可能受到复杂性、聚合函数或连接等因素的限制。
6.视图的创建
在MySQL中可以使用CREATE VIEW语句创建视图定义视图的查询以及需要展示的列。
示例创建视图的语法
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;视图提供了一种灵活的数据访问方式有助于简化复杂查询、增强安全性并改善数据组织。但需要注意视图也可能增加系统开销因为每次查询视图时都会重新计算视图的结果集。
二.mysq语句使用案列
-- 学生表
insert into t_mysql_student values(01 , 赵雷 , 1990-01-01 , 男);
insert into t_mysql_student values(02 , 钱电 , 1990-12-21 , 男);
insert into t_mysql_student values(03 , 孙风 , 1990-12-20 , 男);
insert into t_mysql_student values(04 , 李云 , 1990-12-06 , 男);
insert into t_mysql_student values(05 , 周梅 , 1991-12-01 , 女);
insert into t_mysql_student values(06 , 吴兰 , 1992-01-01 , 女);
insert into t_mysql_student values(07 , 郑竹 , 1989-01-01 , 女);
insert into t_mysql_student values(09 , 张三 , 2017-12-20 , 女);
insert into t_mysql_student values(10 , 李四 , 2017-12-25 , 女);
insert into t_mysql_student values(11 , 李四 , 2012-06-06 , 女);
insert into t_mysql_student values(12 , 赵六 , 2013-06-13 , 女);
insert into t_mysql_student values(13 , 孙七 , 2014-06-01 , 女);-- 教师表
insert into t_mysql_teacher values(01 , 张三);
insert into t_mysql_teacher values(02 , 李四);
insert into t_mysql_teacher values(03 , 王五);-- 课程表
insert into t_mysql_course values(01 , 语文 , 02);
insert into t_mysql_course values(02 , 数学 , 01);
insert into t_mysql_course values(03 , 英语 , 03);-- 成绩表
insert into t_mysql_score values(01 , 01 , 80);
insert into t_mysql_score values(01 , 02 , 90);
insert into t_mysql_score values(01 , 03 , 99);
insert into t_mysql_score values(02 , 01 , 70);
insert into t_mysql_score values(02 , 02 , 60);
insert into t_mysql_score values(02 , 03 , 80);
insert into t_mysql_score values(03 , 01 , 80);
insert into t_mysql_score values(03 , 02 , 80);
insert into t_mysql_score values(03 , 03 , 80);
insert into t_mysql_score values(04 , 01 , 50);
insert into t_mysql_score values(04 , 02 , 30);
insert into t_mysql_score values(04 , 03 , 20);
insert into t_mysql_score values(05 , 01 , 76);
insert into t_mysql_score values(05 , 02 , 87);
insert into t_mysql_score values(06 , 01 , 31);
insert into t_mysql_score values(06 , 03 , 34);
insert into t_mysql_score values(07 , 02 , 89);
insert into t_mysql_score values(07 , 03 , 98);01查询 01 “课程比” 02 课程成绩高的学生的信息及课程分数 考核内连接 涉及表
t_mysql_courset_mysql_score
SELECTs.*,( CASE WHEN t1.cid 01 THEN t1.score END ) 语文,( CASE WHEN t2.cid 02 THEN t2.score END ) 数学
FROMt_mysql_student s,( SELECT * FROM t_mysql_score WHERE cid 01 ) t1,( SELECT * FROM t_mysql_score WHERE cid 02 ) t2
WHEREs.sid t1.sid AND t1.sid t2.sid AND t1.score t2.score02查询同时存在 01 “课程和” 02 课程的情况
SELECTs.*,( CASE WHEN t1.cid 01 THEN t1.score END ) 语文,( CASE WHEN t2.cid 02 THEN t2.score END ) 数学
FROMt_mysql_student s,( SELECT * FROM t_mysql_score WHERE cid 01 ) t1,( SELECT * FROM t_mysql_score WHERE cid 02 ) t2
WHEREs.sid t1.sid AND t1.sid t2.sid03查询存在 01 “课程但可能不存在” 02 课程的情况(不存在时显示为 null )
SELECTs.*,( CASE WHEN t1.cid 01 THEN t1.score END ) 语文,( CASE WHEN t2.cid 02 THEN t2.score END ) 数学
FROMt_mysql_student sINNER JOIN ( SELECT * FROM t_mysql_score WHERE cid 01 ) t1 ON s.sid t1.sidLEFT JOIN ( SELECT * FROM t_mysql_score WHERE cid 02 ) t2 ON t1.sid t2.sid04查询不存在 01 “课程但存在” 02 课程的情况
SELECTs.*,( CASE WHEN sc.cid 01 THEN sc.score END ) 语文,( CASE WHEN sc.cid 02 THEN sc.score END ) 数学
FROMt_mysql_student s,t_mysql_score sc
WHEREs.sid sc.sid AND s.sid NOT IN ( SELECT sid FROM t_mysql_score WHERE cid 01 ) AND sc.cid 0205查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
SELECTs.sid,s.sname,round( avg( sc.score ), 2 ) 平均数
FROMt_mysql_student sLEFT JOIN t_mysql_score sc ON s.sid sc.sid
GROUP BYs.sid,s.sname
HAVING平均数 60
06查询在t_mysql_score表存在成绩的学生信息
SELECTs.sid,s.sname
FROMt_mysql_student sLEFT JOIN t_mysql_score sc ON s.sid sc.sid
GROUP BYs.sid,s.sname07查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null ) 考核聚合函数外连接
SELECTs.sid,s.sname,count( sc.score ) 选课总数,sum( sc.score ) 总成绩
FROMt_mysql_student sLEFT JOIN t_mysql_score sc ON s.sid sc.sid
GROUP BYs.sid,s.sname08查询「李」姓老师的数量
select count(*) from t_mysql_teacher where tname like 李%