MySQL||唯一约束(Unique Key)和非空约束(NOT NULL)

唯一约束

MySQL唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。

非空约束

MySQL 非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。

非空约束(Not Null Constraint)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。

在创建表时设置唯一约束

在定义完列之后直接使用 UNIQUE 关键字指定唯一约束,语法规则如下:

<字段名> <数据类型> UNIQUE

创建表时可以使用 NOT NULL 关键字设置非空约束,具体的语法规则如下:

<字段名> <数据类型> NOT NULL;

示例:创建一个学生表,设名字不能为空值且唯一

CREATE TABLE student4 (
	CODE INT PRIMARY KEY,
	NAME VARCHAR (50) NOT NULL UNIQUE,	-- 加非空约束  -- 唯一约束
	sex CHAR (2) DEFAULT '男',
	phone CHAR (18),
	age INT CHECK (age BETWEEN 17 AND 22),
	enter_time date
);
DESC student4;
INSERT INTO student4(CODE,NAME,sex,phone,age,enter_time)
VALUES(
		1112,
		'王健林',
		'男',
		'19887678767',
		21,
		now()
);
INSERT INTO student4
VALUES(
		1113,
		'王健林',
		'男',
		'13886787679',
		20,
		now()
);

MySQL||唯一约束(Unique Key)和非空约束(NOT NULL)_第1张图片

修改约束条件

和默认值约束一样,修改约束条件的语法相似

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名>
<字段名> <数据类型> NOT NULL;
ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);

比如我现在想把上面的手机号修改成非空且唯一,操作如下:

ALTER TABLE student4
CHANGE COLUMN phone
phone CHAR(18) NOT NULL UNIQUE;
DESC student4;

INSERT INTO student4(CODE,NAME,sex,phone,age,enter_time)
VALUES(1118,'刘强东','男','19887678767',21,now());
INSERT INTO student4
VALUES(1119,'李彦宏','男','19887678767',20,now());

MySQL||唯一约束(Unique Key)和非空约束(NOT NULL)_第2张图片

删除操作就是将他们的条件赋空值或者清除掉

ALTER TABLE <表名> DROP INDEX <唯一约束名>;
ALTER TABLE <数据表名>
CHANGE COLUMN <字段名> <字段名> <数据类型> NULL;

感兴趣的读者可以自行调试,这里不再展开

你可能感兴趣的:(MySQL札记)