约束
1 增加约束
ALTER TABLE 表名
ADD CONSTRAINT 约束名 约束类型 具体的约束说明
--添加主键约束(将AuthorID作为主键) alter table Authors add constraint pk_AuthorID primary key(AuthorID) --添加默认约束(性别默认值为1) alter table Authors add constraint DF_Sex DEFAULT(1) for Sex --添加检查约束(电子邮箱必须包含@) alter table Authors add constraint CK_Emial Check(Email like ‘%@%')
2 删除约束
ALTER TABLE 表名 DROP CONSTRAINT 约束名
--删除约束DF_Sex alter table Authors drop constraint DF_Sex
3 使用NOCHECK CONSTRAINT
子句使约束无效
ALTER TABLE 表名
NOCHECK CONSTRAINT 约束名 |
CHECK CONSTRAINT约束名
注意:该子句只对外键约束和检查约束起作用
添加列
ALTER TABLE 表名 ADD 列名 数据类型[(长度)] [NULL | NOT NULL]
若向已存在记录的表中添加列,新添加的列可以设置允许为空;若不允许为空,则需指定默认值
删除列
ALTER TABLE 表名 DROP COLUMN 字段名 [, ……]
在删除列时,必须先删除基于该列的索引和约束后,才能删除该列
修改列
ALTER TABLE 表名 ALTER COLUMN 列名 数据类型[(长度)] [NULL | NOT NULL]
在默认状态下,列可以被设置为空值,将一个原来允许为空值的列改为不允许为空值时,必须满足列中没有存放空值的记录以及在列上没有创建索引
注意:数据类型的范围设置可以比原来大,也可以比原来小,但是如果里面有数据存在,则对应的数据类型范围必须比原来大
创建索引
1 语法
CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX index_name
ON table_name (column_name…)
[WITH FILLFACTOR=x]
UNIQUE 表示唯一索引,可选
CLUSTERED NONCLUSTERED 表示聚集索引还是非聚集索引,可选
FILLFACTOR 表示填充因子,指定一个0到100之间的值,该值指示索引页填满的空间所占的百分比
2 示例
在工资表的jbgz列创建索引
USE booksmanager GO IF EXISTS (SELECT name FROM sysindexes WHERE name = 'IX_jbgz') DROP INDEX IX_jbgz on 工资表 /*--创建非聚集索引:填充因子为30%--*/ CREATE NONCLUSTERED INDEX IX_jbgz ON 工资表(jbgz) WITH FILLFACTOR= 30 GO /*-----指定按索引 IX_jbgz 查询----*/ SELECT * FROM 工资表 with (INDEX=IX_jbgz) WHERE jbgz BETWEEN 2000 AND 3000
删除索引
USE booksmanager GO IF EXISTS (SELECT name FROM sysindexes WHERE name = 'IX_jbgz') DROP INDEX IX_jbgz on 工资表