MYSQL学习之——约束

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 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:常用的约束就是上面的这些,多个约束之间可以用空格隔开。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值