SQL数据定义
基本类型
- char(n):固定长度的字符串,用户指定长度。
- varchar(n):可变长度的字符串,用户指定最大长度n。等价于全称character varying。
- Int:整数类型。
- smallInt:小证书类型。
- numeric(p, d):定点数,精度由用户指定。这个数有p位数字(加上一个符号位)。其中d位数字在小数点右边。
- real, double precision:浮点数与双精度浮点数。
- float(n):精度至少为n位的浮点数。
基本模式定义
使用 create table 命令定义SQL关系。
create table department
(dept_name varchar(20),
building varchar(15),
budget numeric(12, 2)m
primary key (dept_name));
上述代码创建了一个department关系,具有dept_name,building,budget三个属性,主码为dept_name。
完整性约束:
- primary key(a1,a2,a3,…,an):该声明表示属性a1,a2,a3,…,an构成关系的主码。主码属性必须非空且唯一。
- foreign key(a1,a2,a3,…,an) references r1:声明表示关系中任意元组在属性a1,a2,a3,…,an上的取值必须对应于关系r1中某元组在主码属性上的取值。
- not null:一个属性上的not null约束表明在该属性上不允许空值。
注:SQL禁止破坏完整性约束的任何数据库更新。
Insert命令可将数据加载到关系中。例如
Insert into instructor
values(10211, 'Smith', 'Biology', 66000);
delete命令可从关系中删除元组。
delete from student
注:上述命令将会删除student中所有元组。
drop table命令可以在数据库中删除一个关系
drop table student
注:上述命令将会从数据库中删除student表。
使用alter table命令可以为已有关系添加属性。新属性在关系中所有元组上的属性的值将为null。
alter table r add A D
r是现有关系的名字,A是待添加属性的名字,D是将添加属性的域。而通过
alter table r drop A
则可以从关系中删除属性。
SQL查询的基本结构
单关系查询
select name
from instructor
上面的代码即为从instructor中查询所有的name,有时候我们想要删掉重复,可加入关键词distinct,例如
select distinct name
from instructor
select子句还可带有算术表达式,例如
select ID, name, dept_name, salary*1.1
from instructor
上面这段代码会返回一个与insructor一样的关系,只是salary属性是原来的1.1倍,注意原关系并不发生改变。
where子句允许我们只需选出那些在from子句的结果关系中满足特定谓词的元组。例如