基本查询
- 选择行
select 列名 from 表名 where 列名 = '值1';
- 去除重复行
select distinct 列名 from 表名;
- 比较查询
- 运算符
运算符 | 说明 |
---|---|
= | 等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
<> | 不等于 |
!= | 不等于 |
- 范围查询
between and
select *from 表名 where BETWEEN 最小值 AND 最大值;
in
select 列名1,列名2 from where 列名1 IN(数值1,数值2);
- 模糊查询
通配符 | 说明 |
---|---|
% | 表示0个或多个字符 |
_ | 表示单个字符 |
like
select *from 表名 where 列名 LIKE '通配符';
回避特殊符号
select *from 表名 where 列名 LIKE 'oracle\_%' escape'\';
//oracle_abc
- 判断空值
is null / is not null
select 列名1,列名2 from 表名 where 列名1 IS NOT NULL;
//输出满足列的非空值
- 逻辑运算
操作符 | 说明 |
---|---|
AND | 逻辑与 |
OR | 逻辑或 |
NOT | 逻辑否 |
逻辑操作符的优先级别
NOT > AND > OR
子查询
子查询是嵌套在其他SQL语句中,也叫嵌套查询
不能在group by子句使用
- 相关子查询
相关子查询先执行主查询,再执行子查询
- 多行子查询
运算符 | 说明 |
---|---|
In | 等于列表任何一个 |
All | 和所有的返回值比较 |
Any | 和任意一个返回值比较 |
多表查询
- 笛卡尔集
- 内连接
Inner join
只返回满足条件的记录
from 表名1 inner join表名2 on 列名1 = 列名2
- 等值连接和非等值连接:=
1.使用列别名提升效率,但不简洁
列别名1 = 列别名2
2.使用表别名jian’hua连接查询,提高查询性能
表别名1.列 = 表别名2.列
- 自然连接
Natural join
- 外连接
外连接是标准连接的扩展,它不仅会返回满足条件的所有j记录,而且还会返回不满足连接条件的部分记录
1.第一种方式
操作符(+)
左外连接: 表名1 = 表名2(+)
右外连接: 表名1(+) = 表名2
2.第二种方式
左外连接: from 表名1 left join表名2 on 列名1 = 列名2
右外连接: from 表名1 right join表名2 on 列名1 = 列名2
完全外连接: from 表名1 full join表名2 on 列名1 = 列名2
- 自连接
将同一张表看成一张表
- 交叉连接
cross join
- Set 运算符
Set操作符注意事项:查询语句中的 列名 和 表达式 在数量和数据类型上要相对应
集合操作符 | 说明 |
---|---|
union / union all | 并集 / 并集(有重复行) |
intersect | 交集 |
Minus | 差集 |
查询语句1 集合操作符 查询语句2
排序
ORDER BY子句
- 单列排序
//升序(默认升序)
select 列名1 from 表名 ORDER BY 列名1 ASC;
//降序
select 列名1 from 表名 ORDER BY 列名1 DESC;
- 多列排序
- 先给列名1排序,再列名1的基础下,给列名2排序
select 列名1 列名2 from 表名 ORDER BY 列名1 ASC,列名2 DESC;
- 先给列名1排序,再列名1的基础下,给列名2排序
会返回一个排序数字,可操作返回显示的数量
row_number()over(partition by 列名1 order by 列名2 desc)