相关材料在相关材料下载
参考书:《数据库系统概念》第六版
注:本文只涉及初级SQL
SQL 基本类型
char(n)
: 固定长度字符串,用户指定长度n
。也可使用全称character
。varchar(n)
: 可变长度字符串,用户指定最大长度n
,等价于全称character varying
。int
: 整数类型(和机器相关的整数的有限子集),等价于全称integer
。smallint
: 小整数类型(和机器相关的整数的有限子集)。numeric(p,d)
: 定点数,精度由用户指定。这个数有p
位数字(加上一个符号位),其中d
位数字在小数点右边。所以在一个这种类型的字段上,numeric(3,1)
可以精确存储44.5
,但不能精确存储444.5
或0.32
这样的数。real
,double
,precision
: 浮点数与双精度浮点数,精度与机器有关。float(n)
:精度至少为n
位的浮点数。
- 每种类型都可以包含一个被称为空值得特殊值。
char
存放固定长度的字符串,例如一个char(10)
类型存入字符串‘Avi’,字符串后会追加7个空格来使其达到10个字符的串长度。varchar
则不会。- 比较两个
char
类型,如果长度不一致,在比较前会在短值后加空格,使之长度一致。 - 比较
varchar
和char
可能不会自动补空格。导致比较结果不符合预期。
建议始终使用varchar
类型,而不是char
类型。
SQL提供nvarchar
类型存放使用Unicode
表示多种语言数据,很多数据库甚至允许在varchar类型中存放Unicode
(UTF-8
)。
更多类型
- 每种类型都可以包含一个被称为空值得特殊值。
基本模式定义
如果没有明确说明 r 表示一个关系的名字 A 表示一个属性的名字 D 表示属性的域1. 定义SQL关系
使用`create table` 定义关系。例如,create table department
(dept_name varchar(20),
building varchar(15),
budget numeric(12,2) check (budget > 0),
primary key (dept_name)
);
`create table` 命令的通用模式:
create table *r* (A 1 D 1 , A 2 D 2 , … , A n D n ,
2. 插入数据
定义一个关系:
create table instructor
(ID varchar(5),
name varchar(20) not null,
dept_name varchar(20),
salary numeric(8,2) check (salary > 29000),
primary key (ID),
foreign key (dept_name) references department
on delete set null
);
完整定义在相关资料中的DDL.sql
向关系instructor中插入一条数据:
insert into instructor
values
(10211, 'Smith', 'Biology', 66000);
3. 删除元组
保留关系,删除元组。
delete from r;
4. 删除关系
删除 r 的所有元组和 r 的模式
drop table r;
5. 增加、删除属性
alter table
为已有关系添加属性,关系中所有的元组在新属性的取值上将被设置为null
。
增加 属性
alter table r add A D;
删除属性
有些数据库不支持该操作。
alter tabel r drop A;