MYSQL学习之——约束
这个东西看起来好像是新开的一章,没有见过,但是前面的那个
CREATE TABLE employee(字段1 value1 comment1 约束1,字段2 value2 comment2 约束2,...
)
看到这个没有,创建表的时候就可以给字段添加约束,那么字段有哪些约束呢?
约束说起来就是让这个字段有什么能力,或者不让这个字段有什么能力。先一一介绍再写成表格。
1.限制值的约束
非空约束
NOT NULL
如果一个字段的约束是NOT NULL ,那就不能有NULL值(突然想起来HashTable不能有null的key和value,但hashmap既可以有null的key也可以有null的value)
唯一约束
UNIQUE
一个字段一旦被这个UNIQUE给束缚住了,完了,每个值只能出现一次(底层不会使用set实现的吧!当然hashset是基于hashmap实现的)
这个字段常用于身份证啊,唯一识别码之类的。
默认约束
DEFAULT
如果字段被默认约束给约束了,那么其中为null的值都会被自动填充为默认值。
比如:employee表有3个字段(字段1,字段2,字段3(DEFAULT))
INSERT INTO employ (字段1,字段2)然后(值1,值2);
插入一条数据的时候没有给字段3赋值,但因为字段3被默认约束限制,那么其会填充上默认值而不是 NULL
自动增长
AUTO_INCREMENT
就是如果使用这个约束,那么其中的值会自增加,比如说id,张三的数据进来id是1,李四的数据进来id就是2;
主键约束
PRIMARY KEY
主键是一行数据的非空表示,非空且唯一。
ps:一般只能有一个主键哈。
外键约束
FOREIGN KEY
这个外键约束是涉及到多表查询的,通过外键建立起两张表的连接。
如:
表BOOk(id,单价,类型)
表BORROW(借书人,BOOK_id,借书时间)
我们就可以吧BOOK表中的id的约束设置为外键
ALTER TABLE 表名
ADD CONSTRAINT外键名
FOREIGN KEY外键添加在哪一个字段上
REFERENCES主表(主表列名)
BOOK这个例子就是
ALTER TABLEBOOK
ADD CONSTRAINTborrow_id
FOREIGN KEYid
REFERENCEBORROW(BOOK_id);
检查约束
CHECK
这个是什么约束?保证字段值满足某一个条件,好像目前没有用到呢,先这样来看!
添加约束
ALTER TABLE 表名 ADD CONSTRAIN 字段名 字段类型 约束;
修改约束是怎么说
ALTER TABLE EMPLOYEE ADD CONSTRANIT 字段名 新字段类型 COMMENT 约束;eg:给employee表中的id添加主键约束ALTER TABLE employee MODIFY id char(20) primary key;
删除约束
ALTER TABLE 表名 DROP 约束;
eg:ALTER TABLE employeeDROPPRIMARY KEY;
外键的特殊性
1.创表添加外键
CREATE TABLE 表名(
字段1 字段类型 约束,
字段2 字段类型 约束,
…【这里没有,哦】
CONSTRAINT 外键名 FOREIGN KEY (字段1) REFERENCES 主表(字段)
);
2. 平常添加外键
ALTER TABLE 表名
ADD CONSTRAINT外键名
FOREIGN KEY字段名
REFERENCES主表(字段名);
3.删除字段名
ALTER TABLE 表名
DROP FOREIGN KEY 外键名;
4.添加行为约束
这个行为约束就是,当主表删除或更新数据的时候,子表如果没有修改就不能更新NO ACTION&RESTRICT/或者也更新CASCADE/或者设为NULL
PS:常用的约束就是上面的这些,多个约束之间可以用空格隔开。