数据库管理之数据表管理(2)

约束

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 工资表
原文地址:https://www.cnblogs.com/cmhunter/p/4278820.html