1. SCOTT 用户表
dept:部门表。
emp:雇员表。
salgrade:工资等级表。
bonus:奖金表。
2. SELECT
SELECT [DISTINCT] {*,column alias,..} FROM table alias WHERE 条件表达式 ORDER BY 排序字段列表 [asc|desc]
解析步骤: from -> where -> select -> order by
3. 查询列(字段)
select distinct *|字段|表达式 as 别名 from 表 表别名
SELECT * FROM 表名;
->查询某个表中所有的记录的所有字段信息。
SELECT 列名 FROM 表名;
->查询某个表中所有的记录的指定字段信息。
SELECT 列名1,列名2 FROM 表名;
-> 查询某个表中所有的记录的字段1 字段2。
SELECT distinct 列名 FROM 表名;
->去除重复记录。
SELECT 表达式 FROM 表名;
->查询表达式。
SELECT xxx as 别名 FROM 表名 表别名;
->使用别名。
注意:
1.查询部分字段,指定的字段名。
2.查询所有的字段 通配符 * ( 书写方便、可以检索未知列;但是降低检索的性能) ,数据的顺序跟定义表结构的顺序一致。
-
去除重复
使用distinct去重,确保查询结果的唯一性。
-
别名
使用别名便于操作识别 、隐藏底层信息。存在字段别名和表别名。as: 字段别名可以使用as;表别名不能使用as。 "":原样输出,可以存在 空格与区分大小写。
-
字符串
使用’’表示字符串(注意区分””) ,拼接使用 ||。
-
伪列
不存在的列,构建虚拟的列。 -
虚表
dual:用于计算表达式,显示单条记录的值。
-
null
null 遇到数字参与运算的结果为 null,遇到字符串为空串。 处理null值 : nvl(值1,值2) 当值1为null,nvl函数的结果为值2,当值1不为null,nvl函数的结果为值1。
4. 查询行(记录)
where 过滤行记录条件 ,条件有
a)、= 、 >、 <、 >=、 <=、 !=、 <>、 between and
b)、and 、or、 not、 union、 union all、 intersect 、minus
c)、null :is null、 is not null、 --not is null
d)、like :模糊查询 % _ escape('单个字符')
f)、in 、 exists(难点) 及子查询
-
比较条件
= 、>、 <、 >=、 <=、 !=、 <>。=any(值列表) 大于最小值,<=any(值列表)小于最大值。
=some(值列表) 大于最小值,<=some(值列表)小于最大值。
all 大于最大值 ,小于最小值。 -
且 或 非
and、 or、 not。 -
null
null不能使用条件判断,只能使用is。 -
集合操作
Union、Union All、Intersect、Minus。Union:并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序。 Union All:全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序 。 Intersect:交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序。 Minus:差集(减去重复) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
-
like
模糊查询,使用通配符: %:零个及以上(任意个数的)的字符。 _:一个字符。 注意: 遇到内容中包含 % _ 使用escape('单个字符')指定转义符。
-
in 与 exists
in相当于使用or的多个等值,定值集合 ,如果存在子查询,确保 类型相同、字段数为1,如果记录多,效率不高,用于 一些少量定值判断上。 exists条件为true,存在记录则返回结果,后续不再继续比较查询,与查询的字段无关,与记录有关。
-
获取所有行的记录
select * from emp; select * from emp where 1=1 ; select * from emp where ename like '%';
-
排序
使用 ORDER BY 排序,排序不是真实改变存储结构的顺序,而是获取的集合的顺序。 顺序 :asc:升序(默认); desc:降序。 多字段: 在前面字段相等时,使用后面的字段排序。 空排序: 降序为 desc,注意 null 为最后。