SQL 数据定义语言( data-definition language ,DDL)

  • 每个关系的模式
  • 每个属性关联的值域
  • 完整性约束
  • 每个关系要维护的索引集合
  • 每个关系的安全性和授权信息
  • 每个关系在磁盘上的物理存储结构

基本类型

语法 语义
char(n) 指定长度n的字符串
varchar(n) 最大长度n的字符串
int 整形
smallint 小整数
float(n) 精度至少是n位浮点数
numeric(p,d) 定点数,p长度、d精度

每种类型都可能包含一个空值

基本模式定义

创建

创建一个department关系

1
2
3
4
5
create table department(
dept_name varchar(20),
building varchar(15),
budget numeric(12,2),
primary key(dept_name));

插入

插入一个名叫Smith的生物教师,其id为10211,工资为6000

1
2
insert into instructor values(
10211, 'Smith', 'Biology', 6000);

更新

所有教师的工资将增长5%

1
2
update instructor
set salary = salary * 1.05

删除

删除元组

1
delete from student where ...

删除关系

1
drop table r;

增加

为关系增加/删除属性 A属性名 D属性的域

1
2
alter table r add A D;
alter table r delete A;

完整性约束

  • 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 没有重复元素返回true
    • exists 子查询非空返回true