时间:2014.02.19
地点:基地
————————————————————————————————————————
一、基本类型
char(n) ——固定长度的字符串,用户指定为n。不足用空格补齐
varchar(n) ——可变长度的字符串,用户指定最大长度n,是多少就是多少,不足也不会用空格补齐,但为了方便做比较操作,建议始终使用varchar类型
int ——整数类型(和机器相关的整数的有限子集)
smallint ——小整数类型(和机器相关的整数类型的子集)
numeric(p,d) ——定点数,精度由用户指定,这个数有p位数字,一个小数点符号位,其中d位数字在小数点右边,比如numeric(3,1)可以存储44.5,但444.5或0.32这样的数字就不行了。
real,double precision ——浮点数与双精度浮点数,精度与机器相关
floar(n) ——精度至少为n位的浮点数
其中每种类型都可能包含一个空值得特殊值,前面提到过,应该尽量避免使用这样的空值。
————————————————————————————————————————
二、基本模式
1. create table 命令定义SQL关系,比如
create table departname
(dept_name varchar(20),
building varchar(15),
budget numeric(12,2),
primary key (dept_name));
这里创建了一个department关系,包含三个属性,并指明dept_name属性为关系的主码。另外在很多SQL实现中,分号是可选的。
完整性约束
a) primary key(A1,A2,......An)属于完整性约束,用来指明属性A1,A2,......An构成关系的主码。主码的属性必须唯一非空。比如:
create table department
(dept_name varchar(20),
building varchar(15),
budget nmueric(12,2),
primary key(dept_name));
类似的完整性约束还有:b) foreign key(A1,A2,......An) references xxx 用以说明关系中任意元组在属性(A1,A2,......An)上的取值必须对应于关系XXX中某元组在主码属性上的取值。比如:
foreign key(dept_name) references department
此外码表明对与关系中的每个元组来说,该元组所表示的dept_name属性值必然存在于department关系的主码属性dept_name中,若果没有这个约束的话,就可能关系中的某个项指定了一个并不存在的dept_name值。
create table course
(course_id varchar(7),
title varchar(15),
dept_name varchar(20),
crediits numeric(2,0),
primary key(course_id),
foreign key(dept_name) references deptment);
c) not null 一个属性上的not null 约束表明在该属性上不允许空值
SQL会禁止破坏完整性约束的任何数据更新。
2.insert into XXX values() 插入数据
inser into instructor
values(10211,'Smith','Biology',66000);
3.delete 命令删除元组
delete from studeng;
从student关系中删除所有元组。
4.drop table 命令从数据库中删除关系
drop table r;
注意与delete from区别,delete from只是删除元组,关系依旧存在,而drop则是彻底删除,包括元组和关系。
6.alter table r add A,D 命令为已有关系增加属性。A为待增加的属性,D为待增加属性的域。
7.alter table r drop A;
表从关系中去掉属性