1. 创建表 create table Student(StudentOID varchar(50), Age integer) //表是可以没有主键的
2. 创建表时指定主键 create table MyCustomer (CustomerID int Identity(100,1) Primary Key,CompanyName nvarchar(50)) //设置主键后,在控制台上"Keys","Indexs"节点下,默认出现一个Item,名称又系统自动生成。也就是说,主键自动对应一个聚簇索引 //主键是一种特殊的约束,但是在"Constraint"节点下是无法看到主键Item的
3. 删除主键索引 drop index MyCustomer.PK__MyCustomer__014935CB //失败,因为Index Object正在使用它 alter table MyCustomer drop Constraint PK__MyCustomer__014935CB //成功,主键被全部删除,但是主键列还是存在的 4. 对某存在的列,指定其为主键 alter table MyCustomer ADD CONSTRAINT PK_MyCustomer PRIMARY KEY CLUSTERED ( OID ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
5. 在某个列上添加Unique约束 alter table MyCustomer add CompanyOwnerName nvarchar(10) Constraint Unq_CompanyOwnerName Unique //类似于主键,在控制台上"Keys","Indexs"节点下,默认出现一个Item,Unique约束自动创建一个非聚簇索引 //删除时,类似于删除主键所以操作
6. 为某列添加Default约束 alter table MyCustomer add Constraint Def_CustomerAddress default 'Shanghai' for CustomerAddress //在"Constraint"节点下,出现一个Item,该约束一个列只能有一个
7. 为某列添加Check约束 alter table MyCustomer add Constraint Chk_AddressValue check(CustomerAddress!='ssfd') //在"Constraint"节点下,出现一个Item
8. 删除约束 alter table MyCustomer drop Constraint PL_OID
9. 删除列 alter table MyCustomer drop column CustomerAddress //必须保证没有其他对象,如该列上的约束存在,否则操作失败
10.修改列的定义 alter table MyCustomer alter column CustomerAddress nvarchar(500) null //如果列数据类型改变了,而且有这个列上的约束有冲突,那么修改失败
11.Check约束和Default约束都可以改名,但是后者的改名需要Refresh才可以在UI上看得到
12. select * from sys.default_constraints //查看所有Default约束 select * from sys.key_constraints //查看所有Primary Key, Unique约束
13. exec sp_helpconstraint MyCustomer exec sp_helpindex MyCustomer exec sp_help MyCustomer //查看表范围内的约束,索引,表信息