一、约束的类型
1.
(not null 为非空约束,unique为唯一约束,primary key为主键,foreign key为外键,check为检查条件。)
ps:一般情况下要给自己设置的约束取名字,使自己的sql语句有可读性,并且方便修改。
2.表级约束和列级约束
二、not null约束
在创建表时创建not null的具体步骤,id列是创建一个自命名的not null 约束,而name则采用系统自动命名的方式。
当创建好这个表之后,用insert语句进行数据插入,设置not null约束的列插入的值必须为非空,不然会产生违反约束条件的错误。
一般约束名字以nn结尾
三、unique约束
唯一约束,设置unique约束的列插入数据不允许有重复,但允许存在多个null值,这便是unique约束与primary key主键约束最大的区别。
一般约束名字以uk结尾
四、primary key约束
特点是设置主键约束的列插入数据时要遵循唯一性和非空性。
primary key在列级约束与unique一样 只需要把约束名改为primary key ,在表级约束中道理一样。
一般约束名字以pk结尾
五、foreign key约束
在表级约束中这样设置外键。
一般子与父表中的主键建立外键关系,父表中不存在的主键列的数据在子表中因为有外键关系,所以在子表中无法添加。
级联删除:当我们没有对键加级联删除的时候,删除主键表中的数据(外键表有引用的数据)时,会报错,不能删除,必须先把相关联的外键数据删除了,才能删除主键表的数据,但如果新建外键的时候设置了级联删除,那么当我们删除主键表的数据时,数据库就会自动帮我们把相关联的外键表数据删除掉,这个好理解
级联更新:一直困扰我,级联更新有什么用,是更新什么东西呢,今天做了个测试(mssql),终于搞清楚了一点,我们修改主键表中和外键表进行关联的字段(一般是主键表的主键,mssql好像必须是主键),如果我们没有设置级联更新,那么这个时候会提示不能更新,因为外键表还有数据正在和这条数据进行关联,但是如果设置了级联更新,那么外键表的数据会自动帮我们更新
六、check检查约束
设置check检查的列在进行一条数据录入的时候会检查数据是否满足自己设置的检查要求(相当于数据检验)
例如在创建表的时候
id number(10,2) constraint emp2_id_ck check(id >1000 and id < 3000)
这样进行数据检查
七.在创建完表后添加约束或删除约束
1.
not null特殊 必须使用 alter table 表名 modify();语句来进行添加。
注意
2.无效化和有效化约束
将disable改为enable则变成了有效化此约束
3.如何查询约束