DATABASE SYSTEM CONCEPTS-Chapter3 Introduction to SQL
SQL 数据定义语言( data-definition language ,DDL)
- 每个关系的模式
- 每个属性关联的值域
- 完整性约束
- 每个关系要维护的索引集合
- 每个关系的安全性和授权信息
- 每个关系在磁盘上的物理存储结构
基本类型
语法 | 语义 |
---|---|
char(n) | 指定长度n的字符串 |
varchar(n) | 最大长度n的字符串 |
int | 整形 |
smallint | 小整数 |
float(n) | 精度至少是n位浮点数 |
numeric(p,d) | 定点数,p长度、d精度 |
每种类型都可能包含一个空值
基本模式定义
创建
创建一个department关系
1 | create table department( |
插入
插入一个名叫Smith的生物教师,其id为10211,工资为6000
1 | insert into instructor values( |
更新
所有教师的工资将增长5%
1 | update instructor |
删除
删除元组
1 | delete from student where ... |
删除关系
1 | drop table r; |
增加
为关系增加/删除属性 A属性名 D属性的域
1 | alter table r add A D; |
完整性约束
- primary key( ) 主码属性必须非空且唯一
- foreign key( ) references table 外码约束
- not null 不允许空值
SQL查询
select
from
where
- 单关系查询
- 多关系查询
- 自然连接
natural join
- 更名运算
as
- 字符串运算
like
%
任意匹配多个字符_
任意匹配一个字符\
转义字符
*
所有的属性- 次序
order by
desc
降序asc
升序
- 集合运算
- union 并运算 自动去重(不想就union all)
- intersect 交运算 自动去重(不想就intersect all)
- except 差运算
- 聚集函数
avg
平均值min
最小值max
最大值sum
总和count
计数
- 分组聚集
group by
- group by子句中所有属性相同的元组将分为一个组
- having子句
- 聚集函数后只能使用having子句
- having子句应用在group by子句上
- 嵌套子查询
- 至少比某一个大
>some
- 至少比某一个小
<some
=some
就是in
- 比所有都大
>all
- 比所有都小
<all
unique
没有重复元素返回trueexists
子查询非空返回true
- 至少比某一个大