这个东西看起来好像是新开的一章,没有见过,但是前面的那个
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 TABLE
BOOK
ADD CONSTRAINT
borrow_id
FOREIGN KEY
id
REFERENCE
BORROW(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
employee
DROP
PRIMARY KEY;
1.创表添加外键
CREATE TABLE 表名(
字段1 字段类型 约束,
字段2 字段类型 约束,
…【这里没有,哦】
CONSTRAINT 外键名 FOREIGN KEY (字段1) REFERENCES 主表(字段)
);
PS:子表的外键一定要加到外边的主键上面去,否则不能添加主键。
CREATE TABLE Vendors (
-- 供应商ID:主键列,自增长
vend_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '供应商ID',
-- 供应商名:可变字符,非空
vend_name VARCHAR (30) NOT NULL COMMENT '供应商名',
-- 供应商地址
vend_address VARCHAR (100) NOT NULL COMMENT '地址',
-- 供应商城市
vend_city VARCHAR (20) NOT NULL COMMENT '城市',
-- 供应商州
vend_state VARCHAR (20) NOT NULL COMMENT '州',
-- 供应商邮编
vend_zip VARCHAR (20) NOT NULL COMMENT '邮编',
-- 供应商国家
vend_country VARCHAR (20) NOT NULL COMMENT '国家'
);
-- 产品目录表
CREATE TABLE Products (
-- 产品ID:主键列,自增长
prod_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- 供应商ID:外键
vend_id INT NOT NULL COMMENT '供应商ID',
-- 产品名
prod_name VARCHAR (30) NOT NULL COMMENT '产品名',
-- 产品价格
prod_price DOUBLE NOT NULL COMMENT '产品价格',
-- 产品描述
prod_desc VARCHAR (100) COMMENT '产品描述',
FOREIGN KEY (vend_id) REFERENCES Vendors (vend_id)
);
2. 平常添加外键
ALTER TABLE 表名
ADD CONSTRAINT
外键名
FOREIGN KEY
字段名
REFERENCES
主表(字段名)
;
3.删除字段名
ALTER TABLE 表名
DROP FOREIGN KEY
外键名
;
4.添加行为约束
这个行为约束就是,当主表删除或更新数据的时候,子表如果没有修改就不能更新NO ACTION&RESTRICT/或者也更新CASCADE/或者设为NULL
PS:常用的约束就是上面的这些,多个约束之间可以用空格隔开。