首页 > 学院 > 开发设计 > 正文

mysql数据库的约束(三)

2019-11-08 20:44:35
字体:
来源:转载
供稿:网友
/* 一、数据约束约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。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 :级联删除-- 注意: 级联操作必须在外键基础上使用
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表