基于 sql server
1. 约束
NOT NULL :非空约束。限制列取值非空
PRIMARY KEY : 主键约束。指定本列为主键
语法:PRIMAEY KEY [(<列名> [, ……n] )]
如果在列级完整性约束处定义单列的主键,则可以省略方括号中的内容FOREIGN KEY : 外键约束。定义本列为引用其他表的外键
语法:[FOREIGN KEY (<列名>)] REFERENCES <外表名>(<外表列名>)
如果是在列级完整性约束处定义外键,则可以省略 [FOREIGN KEY (<列名>)] 部分UNIQUE :唯一值约束。限制列取值不能重复
语法:UNIQUE [ (<列名> [,……n] ) ]
如果是在列级完整性约束处定义单列的唯一值约束,则可以省略方括号的内容DEFAULT :默认值约束。指定列的默认值
建表时定义DEFAULT约束: DEFAULT 常量表达式
为已建好的表添加DEFAULT约束: DEFAULT 常量表达式 for 列名CHECK :列取值范围约束。 限制列的取值范围
语法:CHECK(逻辑表达式)
2. 例子
create table Job(
Jid char(6) primary key, --在列级定义主键
Departemt nchar(50) not null,
EduReq nchar(6) default '本科',
MinSalary int,
MaxSalary int,
check(MaxSalary >= MinSalary)
)
create table Employee(
Eid char(10) ,
Name nvarchar(20) not null,
Sex ncahr(1) check( Sex = '男' or Sex = '女' ),
BirthDate date,
Jid char(6),
Tel char(11),
primary key(Eid), --在表级定义主键
foreign key(Jid) references Job(Jid) --定义外键
)
3. 修改表结构
alter table [<架构名>.]<表名>
{
alter column <列名> <新数据类型> -- 修改列定义
| add <列名> <数据类型> [约束] -- 添加新列
| drop column <列名> -- 删除列
| add [ constraint <约束名>] 约束定义 -- 添加约束
| drop <约束名> -- 删除约束
}
- 添加新的工资列
alter table employee
add Salart int
- 修改列定义
alter table employee
alter column Tel char(12)
- 删除列
alter table employee
drop column Tel
- 添加约束
alter table employee
add check ( MinSalary >= 3000)
- 删除表
drop table employee