#进阶 : 联合查询 /* union 联合 合并: 将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union ... 应用语境: 要查询的结果来自多个表,但查询的列数的列信息一致时,可将最终结果归于一个表中 注意: 需要自己将所有的字段名自己按顺序摆放; */ #引入的案例 : 查询部门编号 或邮箱包含a的员工信息 ; SELECT * FROM employees WHERE email LIKE '%a%' UNION ; #案例1: 查询中国用户中年龄>…
#进阶7:子查询 /* 含义: 出现在其他语句中的select语句,称为子查询或者内查询 外部的查询语句,称为主查询或外查询 分类: 按照子查询出现的位置: select后面:只支持标量子查询 from后面:支持表子查询 重点:where或者having后面: 标量子查询,重点 列子查询,重点 行子查询(用的较少) exists后面(相关子查询):表子查询 按照结果集的行列不同: 标量子查询(结果集中只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集为一行多列) 表子查询(结果集为…
多表查询 在大部分情况下,我们用到的表都是彼此相关联的,所以我们会有相当大的需求用到跨表的查询,这个时候我们就需要将相关联的表连起来做多表查询. 多表查询分为连表查询和子查询,连表查询即将相关联的表连城一张表后进行查询:子查询即将一张表查询所得结果作为另一张表的条件进行二次查询,为嵌套式查询. 链表操作放在where之前,只有连完表后在内存中生成虚拟的一张连起来的表才能做条件.分组.筛选等操作. 这里我们准备两张表做演示,两张表相关联.(数据自己插吧...) #创建部门表 create tabl…
#进阶9:联合查询 /* union 联合 合并:将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union..... 应用场景:要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时 特点: (1)要求多条查询语句的查询列数是一致的 (2)要求多条查询语句的查询的每一列的类型和顺序最好一致 (3)union去重,union all不去重 */ #引入的案例:查询部门编号>90或者邮箱包含a的员工信息 or email like "%a%&…
#进阶6:连接查询 /* 含义:多个表格连接,当查询的字段来自于多个表时候,就会用到连接查询 我觉得这里类似于excel中的vlookup函数 笛卡尔乘积现象:表1有m行,表2有n行,结果有m*n行 如何发生:没有有效的连接条件 怎么解决:添加有效的连接条件 分类: 按照年代分类 sql92标准:仅仅支持内连接 sql99标准[推荐]:支持内连接+外连接(左外和右外)+交叉连接 按照功能分类: 内连接:等值连接,非等值连接,自连接 外连接:左外连接,右外连接,全外连接 交叉连接 */ use g…
# 进阶3:排序查询 /* 引入: select * from employees; 语法: select 查询列表 from 表 [where 筛选条件] order by 排序的列表 asc/desc #asc升序,desc降序 [where 筛选条件]可选条件 特点: 1.#asc升序,desc降序,如果不写,默认升序 2. order by子句支持单个字段.多个字段.表达式.函数.别名 3. order by子句一般放在查询语句的最后面,limit子句除外. */ # 案例1:查询员工的…
联合查询 联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加). 语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关). Select 语句1 Union [union选项] Select语句2........ Union 选项有两个 All:保留所有 Distinct:去重.默认的 联合查询只要求字段一样,与数据类型无关. 意义:两种 1,查询一张表但是需求不同. 2,多表查询,多张表的结构完全一样,保存的数据也一样 Order…
前言: 多表联合查询,其实就是我们MySQL中的join语句,经常会看到有人说join非常影响性能,不建议使用,你知道这是为什么呢?我们究竟可不可以用呢? 测试数据: CREATE TABLE `t2` ( `id` ) NOT NULL, `a` ) DEFAULT NULL, `b` ) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`) ) ENGINE=InnoDB; drop procedure idata; delimiter ;; cre…
很多高性能的应用都会对关联查询进行分解. 简单地,可以对每个表进行一次单表查询,然后将结果在应用程序中进行关联.例如,下面这个查询: select * from tag join tag_post on tag_post.tag_id=tag.id join post on tag_post.post_id=post.id where tag.tag=’mysql’; 可以分解成下面这些查询来代替: Select * from tag where tag=’mysql’; Select * fr…
一个select...From...Where查询语句块可以嵌套在另一个select...From...Where查询块的Where子句中,称为嵌套查询.外层查询称为父查询,主查询.内层查询称为子查询,从查询.子查询可以嵌套多层,子查询查询到的结果又成为父查询的条件.子查询中不能有order by分组语句.先处理子查询,再处理父查询. ---------------------------- 1. 简单嵌套查询      查询选修课程号为'101'并且成绩高于学生号为'9501101'的所有学生…