一、基础查询语法(DQL)
SELECT 列
FROM表 ==>查看某个表的某个列
[条件]
MySQL: select允许单独使用
oracle(甲骨文): select必须与from一起使用,提供了dual表,用于补全特定的SQL语句
SELECT 列1,列2…列n FROM 表
如果查询的是全部的列,可以使用*
SELECTFROM表;使用 效率没有书写全部列的效率高
二、查询中算法运算
对于数值类型的数据,查询过程中可以进行算法运算
三、对于NULL数据的处理
准则1:NULL参与算术运算,结果一定是NULL。
准则2:在SQL中,任意两个NULL不相等。
NULL处理函数(方言)
ifnull(expr1,expr2): expr1的结果是null,使用expr2的结果
别名:空格+别名 或者 AS+空格+别名
四、查询结果的去重复
DISTINCT 关键字
select distinct 查询列 from 表(distinct 只能放到select后面)
对查询结果行进行去重复
select distinct 列1,列2 from 表(表示如果列1,列2组合一样就去掉)
五、条件的筛选(行的筛选)
where comm=null 筛不出来,见准则2,任意两个null不相等
select 列
from 表
强调绝大部分数据库 筛选时数据大小写时敏感的
六、条件的逻辑组合
在查询中 AND的组合条件的优先级要高于OR组合
解决方案:记得套括号,一般给OR套括号
七、特殊的几个筛选关键字
1.between x and y 在[x,y]之间
适用于数值或者日期的区间段筛选
相当于>=x and <=y
2.in(x1,x2…xn) 在{x1,x2…xn}其中
select*
from emp
where deptno in(20,30);
3.like’x’ 像’x’一样(文本的模糊匹配)
模糊匹配的通配符:
1.% 表示此处有任意数量的字符
2._ 表示此处有一个字符
4.is null 筛选null值
8、查询结果的排序
–(重要)DQL执行顺序
书写顺序: select…from…where…order by…
执行顺序:from… where… select… order by…
列别名在select中生成,在order by 中可以使用,但是在where中不能使用
多个列排序
order by 列a desc, 列b asc
先按照’列a’降序排序,列a数据相同的再按照’列’b升序排序显示
9、查询结果的分页(分段) 方言
Mysql:limit
postgre:limit offest
oracle:
假设有:107条数据
每一页显示:20条
第三页数据的序号: ??->??
limit (n-1)*p(起点),n
limit 记录起点标号,数据行数
limit 0,5(查询从第0个起的前5个)