SQL语言分为:数据定义语言(Data-Definition Language,DDL)--SQL DDL定义关系模式、删除关系以及修改关系模式的命令;数据操纵语言(Data-Manipulation Language,DML)--增删改查;完整性(integrity)--SQL DDL包括定义完整性约束的命令;视图定义(view definition)--SQL DDL包括定义视图的命令;事务控制(transaction control)--SQL包括定义事务的开始和结束的命令;嵌入式SQL和动态SQL(embedded SQL and dynamic SQL)--嵌入式和动态SQL定义SQL语句如何嵌入到通用编程语言(如C、C++等);授权(authorization):SQL DDL包括定义对关系和视图的访问权限的命令。
3.1 基本模式定义
数据库中的关系集合必须由数据定义语言(DDL)指定给系统。SQL的DDL不仅能够定义一组关系,还能够定义每个关系的信息,包括:每个关系的模式;每个属性的取值类型;完整性约束;每个关系维护的索引集合;每个关系的安全性和权限信息;每个关系在磁盘上的物理存储结构。
创建关系(即创建表):
create table r(A1 D1,A2 D2,...,An Dn,<完整性约束1>,...,<完整性约束k>);
最常使用的完整性约束:
primary key(Aj1,Aj2,...,Ajm):属性Aj1,Aj2,...Ajm构成关系的主码--主码属性必须非空且唯一,关系中没有一个元组在主码属性上取空值,也没有两个元组在所有主码属性上取值相同。
foreign key(Ak1,Ak2,...,Akn) references t:任意元组在属性Ak1,Ak2,...,Akn上的取值必须对应于关系t中某元组在主码属性上的取值。
not null:该属性上不允许空值
删除关系(即删除表):
drop table r
修改关系(即修改表的定义):
alter table r
3.2 数据库数据的修改
删除元组(即删除数据):
delete from r where p;如果省略where子句,则删除r中所有元组
注意区别于drop:delete只删除表数据,而drop不仅删除表数据,还删除表的模式。
插入元组(即插入数据):
insert into r(A1,A2,...,An) values (p1,p2,...,pn)
提升:insert into r1 select A1,A2,...,An from r2 where Ak=V1 and Aj>V2
更新元组(即更新数据个别属性值)
update r set A1=V1,...,Ak=Vk
提升: