一、表的加法
a.将两个表按行合并在一起。使用union将两个表联结在一起。union将重复数据删除;union all保留重复数据
![4fbc01605e5899380ef4f1e18d1dc038.png](https://img-blog.csdnimg.cn/img_convert/4fbc01605e5899380ef4f1e18d1dc038.png)
b.注意事项
- 作为运算对象的记录列数必须相同.。当两张表的列数不相同时,UNION是不能将两张表相加的。
作为运算对象的记录中列的类型必须一致.。不同类型的数据肯定不能存放在同一列的,如果非要相加的话,可以尝试类型转换。
可以使用任何SELECT 语句,但ORDER BY子句只能在最后使用一次.
二、表的联结
数据之间的关系:在生活中,你是你爸爸的儿子,你是你儿子的爸爸,这是生活中的关系。数据之间也是有关系的,关系数据库各个表之间如何建立关系呢?例如学生表(学号、姓名、出生日期、性别)和成绩表(学号、课程号、成绩)通过学号将两个表关联起来,如果你想知道0001学生的成绩,那么可以根据学号在成绩表中找0001的行。关系就是数据库能够对应匹配,在关系库中,正式的名字叫做联结(join)。4张表联结关系图如下:
![640ab92ba4ce3f606effc4a365148151.png](https://img-blog.csdnimg.cn/img_convert/640ab92ba4ce3f606effc4a365148151.png)
a.交叉联结 :又称为笛卡尔积,是将两表中的数据两两进行组合,交叉的行数是两个张表行数据的乘积。其他联结的基础是交叉联结,在交叉联结的基础加上了过滤条件。
b.内联结:根据两个表共有的列来匹配其中的行,强调只有两个表共有的列值对应的行才能匹配出来
![9d0f971e552bcebcca29aed0a0e538ec.png](https://img-blog.csdnimg.cn/img_convert/9d0f971e552bcebcca29aed0a0e538ec.png)
c.左联结:无论右表对应行是否包含满足连接条件的数据,都会保留左表,两表相匹配的匹配,不能匹配的以null显示。
![a4075fe62e40e58a6c2ec7fbd01e7e86.png](https://img-blog.csdnimg.cn/img_convert/a4075fe62e40e58a6c2ec7fbd01e7e86.png)
d.右联结:无论左表对应行是否包含满足连接条件的数据,都会保留右表,两表相匹配的匹配,不能匹配的以null显示
![80b7a6b7c34b4073700b3a1fc1d59f14.png](https://img-blog.csdnimg.cn/img_convert/80b7a6b7c34b4073700b3a1fc1d59f14.png)
e.全联结(full join ):两个表中的数据全部保留,mysql不支持全联结
三、表的联结图汇总
a.生成固定行数的表单或者特别说明了哪张表的数据时(所有,,,),使用左联结或者右联结,其他情况用内联结。
![4b55d85ae3f487db644c1aa615430069.png](https://img-blog.csdnimg.cn/img_convert/4b55d85ae3f487db644c1aa615430069.png)
b.sql运行顺序
sql-查询及注意事项 - zyzy的文章 - 知乎 https://zhuanlan.zhihu.com/p/335547824
四、case表达式以及案例
![06b4a668436fc6a3fc6ddb466664ff59.png](https://img-blog.csdnimg.cn/img_convert/06b4a668436fc6a3fc6ddb466664ff59.png)
a.案例:查询成绩是否属于及格还是不及格
![241e2ec15c2b7c39b655091bc27a25d5.png](https://img-blog.csdnimg.cn/img_convert/241e2ec15c2b7c39b655091bc27a25d5.png)
b.注意事项:
- else可以省略不写,此时默认为表达式为空值,但是最好写上;
- end不可以省略不写;
- case表达式可以写在sql语句任何地方;