创建数据表
sql语句如下
create table 表名
(
列名 数据类型和字段长度,
......
)
常用数据类型:
char: 定长的非Unicode字符,char(n)
nchar: 定长的Unicode字符,nchar(n)
varchar: 非定长的非Unicode字符,varchar(n)
nvarchar: 非定长的Unicode字符,nvarchar(n)
numeric: 精确数值型,numeric(精确长度,小数位)
decimal: 精确数值型,decimal(精确长度,小数位)
定义数据表的约束
约束是自动强制数据完整性的方式,约束定义了列中允许的取值。
基本语法格式为:
列名 数据类型 约束名 约束类型
约束名: 约束不指定名称时,系统会给定一个名称。
约束类型: 在定义完整性约束是必须指定完整性约束的类型,以下介绍五种完整性类型的完整性约束。
(1)NULL / NOT NULL 约束
当某一字段的值一定要输入值才有意义的时候,则可设置为NOT NULL。当字段允许出现空值时,可设置为 NULL。其语法如下:
constraint <约束名> [NULL | NOT NULL]
例如
建立一个S表,对SNo字段进行 NOT NULL 约束
create table S
(
SNo varchar(6) constraint S_CONS NOT NULL
)
(2)唯一约束(UNIQUE约束)
唯一约束用于指明基本表在某一列或多个列的组合上的取值必须唯一。唯一键允许为空,但为保证其唯一性,最多只可以出现一个NULL值。其语法如下:
constraint <约束名> unique
在建立唯一约束时,需考虑以下几个因素:
- 使用唯一约束的字段允许为NULL值
- 一个表可以有多个唯一约束
- 可以把唯一约束定义在多个字段上
例如
建立一个S表,定义SN为唯一键
create table S
(
SN char(8) constraint S_UNIQ unique
)
(3)主键约束(PRIMARY KEY 约束)
主键约束用于定义基本表的主键,起唯一标识作用,其值不能为NULL,也不能重复,以此来保证实体的完整性。其语法如下:
constraint <约束名> primary key
在建立主键约束时,需考虑以下几个因素:
- 一个表只能定义一个主键约束
- 使用主键约束的字段不允许出现NULL值
- 不能对同一个字段既定义唯一约束又定义主键约束
例如
建立一个S表,定义SNo为S的主键
create table S
(
SNo char(8) constraint S_Prim primary key
)
(4)外键约束(FOREIGN KEY 约束)
外键约束指定某一列或几列作为外部键。包含外部键的表称为从表,包含外部键所引用的主键或唯一键的表称为主表。其语法如下:
constraint <约束名> foreign key references <主表名(列名)>
例如
建立一个SC表,定义SNo为SC的外部键
create table SC
(
SNo char(8) constraint S_Fore foreign key references S(SNo)
)
(5)CHECK 约束
check约束用来检查字段值所允许的范围。其语法如下:
constraint <约束名> check <条件>
在建立CHECK约束时,需考虑以下几个因素:
- 一个表中可以定义多个CHECK约束
- 每个字段只能定义一个CHECK约束
例如
建立一个S表,定义Score的取值范围为0~100之间,Sex取值为男或女
create table S
(
Score numeric(4.1) constraint Score_SHK check(Score >= 0 and Score <= 100),
Sex char(2) constraint Sex_SHK check((Sex='男') or (Sex='女'))
)