mysql数据库的约束(三)

/* 一、数据约束
约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

MYSQL中,常用的几种约束:

约束类型:	  主键	   默认值	 唯一	   外键	       非空
关键字:	PRIMARY KEY	DEFAULT	UNIQUE FOREIGN KEY	NOT NULL
*/
	/*1.1、默认值约束(default)——在用用户不对默认值的字段进行数据插入时,就默认地使用默认字段
				特别注意:默认字段是可以为空的,也就是说当用户插入空(NULL)或''时是被允许的。
	*/
	CREATE TABLE student(
		sid int,
		sname VARCHAR(10),
		gender VARCHAR(2) DEFAULT '男'
)
	/*1.2、非空(NOT NULL)
	被非空约束的列,在插入值时必须非空。
	在MySQL中违反非空约束,不会报错,只会有警告.	
	*/
CREATE TABLE student(
		sid int NOT NULL,
		sname VARCHAR(10),
		gender VARCHAR(2) DEFAULT '男'
)
/*1.3、唯一约束(UNIQUE)比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。
			当INSERT语句新插入的数据和已有数据重复的时候,如果有UNIQUE约束,则INSERT失败.
			注意:唯一的字段是可以为空的(NULL),且NULL不受唯一约束。也就是说可以存在多条字段为NUll的数据。
*/
CREATE TABLE student(
		sid int UNIQUE,
		sname VARCHAR(10),
		gender VARCHAR(2) DEFAULT '男'
)

/* 1.4、主键(PRIMARY KEY)是用于约束表中的一行,作为这一行的标识符,在一张表中通过主键就能准确定位到一行,
	 因此主键十分重要。主键要求这一行的数据不能有重复且不能为空。
	 还有一种特殊的主键——复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识
		通常情况下,每一张表都会设置一个主键的字段,用于标记每一条记录的唯一性。
*/
CREATE TABLE student(
		sid int PRIMARY KEY,
		sname VARCHAR(10),
		gender VARCHAR(2) DEFAULT '男'
)
/*1.5、自增长(AUTO_INCREMENT)
	当只增长字段有位数要求时,可以使用 ZEROFILL进行填充
*/
CREATE TABLE student(
		sid int PRIMARY KEY AUTO_INCREMENT,
		sname VARCHAR(10),
		gender VARCHAR(2) DEFAULT '男'
)
/*1.6、外键约束
外键(FOREIGN KEY)既能确保数据完整性,也能表现表之间的关系。
一个表可以有多个外键,每个外键必须REFERENCES(参考)另一个表的主键,
被外键约束的列,取值必须在它参考的列中有对应值。
在INSERT时,如果被外键约束的值没有在参考列中有对应,比如以下命令,
参考列(department表的dpt_name)中没有dpt3,则INSERT失败
*/
 CONSTRAINT `FK_kfaoihyj5oll835mvidvgsxp` FOREIGN KEY (`DEPARTMENT_ID`) REFERENCES `ssh_department` (`ID`)
	 关键字           外键名称                               外键字段                        关联表(字段)
其中ssh_employee为副表,ssh_department为主表

注意:
	(1)、当外键存在时,添加数据的顺序:先主表后副表;
	(2)、当外键存在时,修改数据的顺序:先副表后主表;
/*1.7、级联操作
	当我们设置了外键约束后,必须先修改或者删除副表中的所有关联数据,才能修改或者删除主表。
	但很多时候,我们希望直接修改或删除主表的数据,从而影响副表数据。因此就需要级联设置来完成。
	*/
CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE  
-- ON CASCADE UPDATE :级联修改
-- ON DELETE CASCADE :级联删除
-- 注意: 级联操作必须在外键基础上使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值