MySql(七)子查询与虚表

MySql(七)子查询与虚表,第1张

子查询在主查询前执行一次

主查询使用子查询的结果

子查询要用括号括起来

将子查询放在比较运算符的右边

子查询中不要加ORDER BY子句

对单行子查询使用单行运算符  (如:=、>、>=、<、<=、<>)

对多行子查询使用多行运算符  

>ANY 指大于最小值

<ANY指小于最大值

>ALL 指大于最大值

<ALL指小于最小值

#查询高于自己部门平均工资的员工名字,部门号,工资,平均工资*** 虚表

------------------------示例-----------------

#1.使用标准SQL嵌套子查询和连接查询两种方法查询选修课程名称为'gs'的学生学号和姓名

#2 使用标准SQL嵌套语句查询选修课程编号为‘2’的学生姓名和所属班级

#3.使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属班级  *******

#4.查询选修了课程的学生人数

#5.查询选修课程超过3门的学员学号和所属班级 ****

合并思想. N个表 -->1个表

连接的定义

将2个或2个以上的表通过一定的条件拼接起来形成一个虚表的过程。连接是from子句的一部分.

从2个表的连接开始.

左表: 放置在你左手边的表. left_tab

右表: 放置在你右手边的表. right_tab

连接语法

三种基本类型:交叉连接,内连接与外连接

交叉连接

返回的就是一个笛卡尔积.

交叉连接语法

内连接

在交叉连接的基础上,仅返回满足连接条件的行.

连接条件

1.使用on关键字来指定.

2.on的用法与where类似.

3.on可以使用连接的所有表中的列值进行判断

内连接的语法

外连接

在内连接的基础上,返回一些额外的行.

左外连接(左连接)

在内连接的基础上,左表除了返回满足连接条件的行之外,剩下的所有不满足连接条件的行也要一并返回,右表中与之没有匹配的行的列值设置为null

右外连接(右连接)

在内连接的基础上,右表除了返回满足连接条件的行之外,剩下的所有不满足连接条件的行也要一并返回,左表中与之没有匹配的行的列值设置为null

外连接语法

语法:

表的别名

注意: 一旦给表设置了别名,则以后只能通过别名引用表中的列.别名会隐藏表名.

join嵌套

可以在一个join中嵌套另外一个join

一般来说,当连接的表的个数N>=3时需要使用嵌套join.

当连接的表的个数为N时,则至少需要N-1个连接条件.

语法:

join嵌套

与内连接中的join嵌套用法类似.

视图又叫虚表。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

视图主要有以下作用:

1、安全。一些数据表有着重要的信息。有些字段是保密的,不能让用户直接看到。这时就可以创建一个视图,在这张视图中只保留一部分字段。这样,用户就可以查询自己需要的字段,不能查看保密的字段。

2、性能。关系数据库的数据常常会分表存储,使用外键建立这些表的之间关系。这时,数据库查询通常会用到连接(JOIN)。这样做不但麻烦,效率相对也比较低。如果建立一个视图,将相关的表和字段组合在一起,就可以避免使用JOIN查询数据。

3、灵活。如果系统中有一张旧的表,这张表由于设计的问题,即将被废弃。然而,很多应用都是基于这张表,不易修改。这时就可以建立一张视图,视图中的数据直接映射到新建的表。这样,就可以少做很多改动,也达到了升级数据表的目的。

关于视图的学习,我建议你参考mysql手册。在网上找一些示例,很快就入门了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7195608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存