数据库系统2:SQL数据查询
程序员文章站
2024-03-17 13:52:16
...
目录
1、单关系查询
重点
- 优先级:NOT>AND>OR
- 涉及到空值的查询条件只能使用is/is not,不能使用=、!=、<>等。
- DISTINCT作用范围是所有目标属性,只能出现一次。
- ORDER BY只能用于对最终结果进行排序,不能对中间结果排序。
- ORDER BY只能出现在查询语句的最后。
- 聚集函数不能出现在where子句里。
- select子句的目标属性只能包含分组属性和聚集函数;
- havingz子句的分组筛选条件允许出现聚集函数
- where、group by、having的执行顺序:
- where子句从from子句中给定的关系选择满足查询条件的元组
- group by子句对where子句过滤后得到的元组进行分组
- having对分组内的元组进行筛选;
1.1 投影操作
不去除重复元组(与关系代数投影操作不同)。
1.2 重命名操作
1.3 查询满足条件的元组
1.4 集合操作
1.5 分组聚集查询
2、连接查询
若一个查询同时涉及到两个或两个以上的关系的连接,则叫做连接查询;
- inner join =join
- left outer join=left join
- right outer join=right join;
2.1 内连接
//笛卡尔积+选择方式
select 属性 from 表1,表2... where 条件;
//ANSI连接方式
select 属性 from 表1 [inner] join 表2 on 连接条件;
//等值连接且连接属性名相同时
select 属性 from 表1 [inner] join 表2 using 连接属性列表;
2.2 外连接
外连接分为:
- 左外连接(left outer join)
- 右外连接(right outer join)
- 全外连接(full outer join)
FULL OUTER JOIN产生1和2的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。
2.3 自然连接
自然连接不用指定连接列,也不能使用ON语句,它默认比较两张表里相同的列,
2.4 自连接
- 语法与连接相同
- 属性名前必须使用别名做前缀
- 必须为关系取别名