SQL语言有以下几个部分
1、数据定义语言:定义关系模式、删除关系、修改关系模式
2、数据操纵语言:查询信息、插入元组、删除元组、修改元组
3、完整性:定义完整性约束
4、视图定义:定义视图的命令
5、事务控制:定义事务开始到结束的命令
6、嵌入式SQL和动态SQL:定义如何嵌入到通用编程语言
7、授权:定义对关系和视图的访问权限
SQL禁止破坏完整性约束的任何数据库进行更新。
select distinct Dept
from T
# distinct 可以去除重复行
# all显式指明不去除重复
select all Dept
from T
# 默认为ALL
多关系查询
select <注:列出查询结果中所需要的属性>
from <注:一个查询求值中所需要访问的关系列表>
where <注:在FROM子句中关系的属性的谓词>
通常可以这样理解:
1、为from子句列出的关系产生笛卡尔积
2、where子句中的谓词用来限制笛卡尔积所建立的组合
3、输出SELECT指定的属性
自然连接只考虑那些在两个关系模式中都出现的属性上取相同的元组对
使用NATURAL JOIN运算符进行自然连接,与检查两个源表中同名列值相等的WHERE子句是等价的。
SQL Server不支持Natural join
重名运算
Old name as new name
可以把长的关系名替换成短的
另一个原因是为了适用于需要比较同一个关系中的元组情况,需要把一个关系与自身进行笛卡尔积的运算。
select *
from T
ORder by TNo desc
Where 子句谓词
select *
from T
where Sal between 1000 and 2000
ORder by Sal desc
select *
from T
where Sal<2000 and Sal >1000
order by Sal
集合运算
使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。
Union 对应集合运算中的并 自动去除重复,UNION ALL 可以保留重复
Intersect 对应 交 自动去除重复,INTERSECT ALL 可以保留重复
Except 对应 集差操作
聚集函数
聚集函数是以值的一个集合(集或多重集)为输出,返回单个值的函数
平均 AVG
最小 MIN
最大 MAX
总和 SUM
计数 count
其中,SUM,AVG的输入必须书数字集
分组聚集
group by 子句中给出的一个或多个树形是用来构造分组的,在group by子句中的所有属性上取值相同元组将被分在一个组中。
select Dept,AVG(Sal) from T
选择列表中的列 'T.Dept' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
select Dept ,AVG(Sal) from T
group by Dept
P49