目录
一、连接查询
含义:
使用连接在多个表中查询数据。 又称多表查询,当查询的字段来自于多个表时,就会用到连接查询
分类:
①按年代分类:
sql92标准:仅仅支持内连接
sql99标准【推荐】:支持内连接+外连接(左外和右外)+交叉连接
②按功能分类:
内连接
等值连接
非等值连接
自连接
外连接
左外连接left join
右外连接right join
全外连接union /union all交叉连接
*红色字体重点
1、内连接查询 inner join
关键字:inner join on
语句:
select 查询列表 from 表1 别名 inner join 表2 别名 on 连接条件;
特点:
①添加排序、分组、筛选;
②inner可以省略;
③ 筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读;
④inner join连接和sql92语法中的等值连接效果是一样的,都是查询多表的交集;
2、左连接查询 left join
含义:
left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。 左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
关键字:left join on / left outer join on
语句:
SELECT 查询列表 FROM 表1 别名1 left join 表2 别名2 ON 连接条件;
3.右连接 right join
含义:
right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
关键字:right join on / right outer join on
语句:
SELECT 查询列表 FROM 表1 别名1 right join 表2 别名2 ON 连接条件;
4.等值连接
特点:
① 多表等值连接的结果为多表的交集部分
②n表连接,至少需要n-1个连接条件
③ 多表的顺序没有要求
④一般需要为表起别名
⑤可以搭配前面介绍的所有子句使用,比如排序、分组、筛选
二、常用函数
含义:
常用函数一般指的是数据库的系统函数,数据库函数是指当需要分析数据清单中的数值是否符合特定条件时,使用数据库函数来完成目标操作;
分类:
①.字符函数
| 作用 | 函数 | 结果 |
|---|---|---|
| 转小写 | LOWER('SQL Course') | sql course |
| 转大写 | UPPER('SQL Course') | SQL COURSE |
| 拼接 | CONCAT('Hello', 'World') | HelloWorld |
| 截取 | SUBSTR('HelloWorld',1,5) | Hello |
| 长度 | LENGTH('HelloWorld') | 10 |
| 字符出现索引值 | INSTR('HelloWorld', 'W') | 6 |
| 字符截取后半段 | TRIM('H' FROM 'HelloWorld') | elloWorld |
| 字符替换 | REPLACE('abcd','b','m') | amcd |
②.数字函数
| 作用 | 函数 | 结果 |
|---|---|---|
| 四舍五入 | ROUND(45.926, 2) | 45.93 |
| 截断 | TRUNC(45.926, 2) | 45.92 |
| 求余 | MOD(1600, 300) | 100 |
③.日期函数
| 作用 | 函数 | 结果 |
|---|---|---|
| 获取当前日期 | now() | |
| 将日期格式的字符转换成指定格式的日期 | STR_TO_DATE('9-13-1999','%m-%d-%Y') | 1999-09-13 |
| 将日期转换成字符 | DATE_FORMAT(‘2018/6/6’,‘%Y年%m月%d日’) | 2018年06月06日 |
四、合并
1、UNION:将所有的查询结果合并到一起,然后去除掉相同的记录
select 'a','b','c' UNION ALL select 'a','b','c'

2、UNION ALL:将所有的查询结果合并到一起,不会去除掉相同的记录
select 'a','b','c' UNION select 'a','b','c'
使用条件:结果集列数个数相同,列的类型还要相同或是兼容
使用场景:在项目统计报表模块,用来合并数据