一、如何查询:
1、语句格式:
2、关键字解析:
- select:指定要显示的属性列
- distinct:去掉重复的行
- all:没去掉重复的行,显示原本查询结果
- from:指定查询对象(基本表/视图)
- where:指定查询条件(基于基表/视图)
- escape:指明换码字符
- group by:将属性列值相等的元组分为一个组
- 细化聚集函数的作用对象
- having:只有满足指定条件的组才能输出(基于组,过滤出满足条件的结果进行显示)
- order by:对查询结果按指定列的值进行排序(升序ASC/降序DESC)
- 空值由具体系统实现来决定显示顺序
- 常用的查询条件:
- 确定范围:(not) between and
- 确定集合:(not) in
- 匹配字符:(not) like
- %:代表任意长度
- _:代表任意单个字符
- 空值:is (not) null
- 多重条件:and>not>or(优先级排序)
二、单表查询:
- 特点:
- 查询仅涉及一个表
- 语法补充:
- 可在显示结果中添加值相同的列:加''
- 可对查询结果进行处理:写成表达式
- 改列的名字:在列名后添加别名
- 聚集函数:
- count():统计元组个数
- sum():计算总和
- avg():计算平均值
- max()/min():最大、最小值
三、连接查询
- 特点:
- 同时涉及两个以上的表的查询
- 等值与非等值连接查询
- 连接操作执行过程:
- 先在表1里找到第一个元组,然后从头开始遍历表2,逐一查找满足连接件的元组,将找到的元组与表1的元组拼接起来形成结果表中的一个元组
- 表2查找完毕后重新在表1中找第二个元组,重复第一步操作
- 重复上述操作,直到表1的全部元组处理完毕
- 连接操作执行过程:
- 自身连接:
- 是什么:
- 一个表与其自己进行连接
- 特点:
- 需要给表起别名以示区别
- 是什么:
- 外连接:
- 左外连接、右外连接
- 多表连接:
- 是什么:
- 两个以上的表进行连接
- 是什么:
四、嵌套查询
- 是什么:
- 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询
- 相关概念
- 外层查询/父查询
- 内层查询/子查询
- 不能用order by
- 相关谓词:
- in,any,all,(not) exist
五、集合查询
- 种类:
- 并操作union
- 系统会自动去除重复元组,但如果加上all就会保留重复元组
- 交操作intersect
- 差操作expect
- 并操作union
- 参与集合查询需满足的条件:
- 参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同
六、基于派生表的查询
- 是什么:
- 在SQL查询中使用派生表来处理数据(派生表:通过在查询中嵌套使用SELECT语句创建的临时表)