一、合并结果集
1.作用:合并结果集就是把两个select语句的查询结果合并到一起!
2.合并结果集有两种方式:
UNION:去除重复记录,例如:SELECT * FROM t1 UNION SELECT * FROM t2;
UNION ALL:不去除重复记录,例如:SELECT * FROM t1 UNION ALL SELECT * FROM t2。
3.要求:被合并的两个结果:列数、列类型必须相同。
# union:合并结果集,会去除重复数据
t1表

t2表

SELECT * FROM 表名1
UNION -- 合并结果集并去除重复数据
SELECT * FROM 表名2;

# union all:合并结果集,不去除重复记录
SELECT * FROM 表名1
UNION ALL -- 合并结果集,但不去除重复数据
SELECT * FROM 表名2;

#二、连接查询 (非常重要)
# 连接查询就是求出多个表的乘积,例如t1连接t2,那么查询出的结果就是t1*t2。

# emp表和dept表进行连接查询
# dept表有4条数据,emp表有14条数据,进行连接查询,会产生14*4=56条数据

# 上面的结果集中有56条数据,因为它将emp表中的每条数据与dept表中的4条数据据进行了组合
# 使用主外键关系或者两个表中同名同同类型列去除不符合要求的数据
SELECT * FROM 表名1,表名2 WHERE 表名1.列名 = 表名2.表一同列名;

# 上面查询语句中*表示emp表和dept表中所有的字段,如果只需要查询一部分字段,就写要查询的字段,如:
SELECT emp.empno,emp.ename,emp.sal,dept.deptno,dept.dname FROM emp,dept WHERE emp.deptno=dept.deptno;
#还可以为表指定别名,然后在引用列时使用别名即可。
SELECT e.empno,e.ename,e.deptno,d.dname FROM emp AS e,dept AS d WHERE e.deptno=d.deptno
SELECT e.empno,e.ename,e.deptno,d.dname FROM emp e,dept d WHERE e.deptno=d.deptno
# 上面的查询语句就是内连接查询,但它是MySQL中的独有写法,标准内连接写法如下:
SELECT * FROM 表名1 别名1
INNER JOIN 表名2 别名2
ON 别名1.列名= 别名2.别名1同列名 或 意义相同的列名 如:sname(学生成绩中的姓名)和cname(学生信息中的姓名);
# 内连接的特点:查询结果必须满足条件,不满足条件的数据不会显示
# inner可以省略不写
SELECT * FROM 表名1 别名1
INNER JOIN 表名2 别名2 -- 省略了INNER
ON 别名1.列名= 别名2.别名1同列名 或 意义相同的列名 如:sname(学生成绩中的姓名)和cname(学生信息中的姓名);

被折叠的 条评论
为什么被折叠?



