欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL学习笔记-5.约束的介绍

程序员文章站 2024-03-08 17:17:28
...

5.约束的介绍

1) 约束的作用:

  • 对表中的数据进行进一步的限制,从而保证数据的正确性、有效性、完整性.

  • 违反约束的不正确数据,将无法插入到表中

2) 常见的约束

约束名 约束关键字
主键 primary key
唯一 unique
非空 not null
外键 foreign key

5.1主键约束

特点:
不可重复唯一非空

作用:
用来表示数据库中的每一条记录

5.1.1添加主键约束

语法格式:

字段名 字段类型 primary key

方式1 创建一个带主键的表

CREATE TABLE emp2(
    eid INT PRIMARY KEY,
    ename VARCHAR(20),
    sex CHAR(1)
);

DESC emp2;	-- 查看表结构

MySQL学习笔记-5.约束的介绍

方式2 创建一个带主键的表

-- 删除表
DROP TABLE emp2;

CREATE TABLE emp2(
	eid INT,
	ename VARCHAR(20),
	sex CHAR(1),
	-- 指定主键为 eid 字段
	PRIMARY KEY(eid)
);

DESC emp2;

方式3 创建一个带主键的表

-- 删除表
DROP TABLE emp2;

CREATE TABLE emp2(
    eid INT,
    ename VARCHAR(20),
    sex CHAR(1)
);

-- 通过DDL语句 添加主键约束
ALTER TABLE emp2 ADD PRIMARY KEY(eid);

-- 删除主键 DDL语句
ALTER TABLE emp2 DROP PRIMARY KEY;

DESC emp2;

5.2主键自增

主键的自增:
关键字:auto_increment 主键的自动增长(字段类型必须是 整数类型)

1.创建主键自增的表

CREATE TABLE emp2(
    -- 主键自增
    eid INT PRIMARY KEY AUTO_INCREMENT,
    ename VARCHAR(20),
    sex CHAR(1)
);

INSERT INTO emp2(ename,sex) VALUES('张三','男');
INSERT INTO emp2(ename,sex) VALUES('李四','男');
INSERT INTO emp2 VALUES(NULL,'翠花','女');
INSERT INTO emp2 VALUES(NULL,'艳秋','女');

MySQL学习笔记-5.约束的介绍

2.重新创建自增主键的表,自定义自增起始位置

CREATE TABLE emp2(
    eid INT PRIMARY KEY AUTO_INCREMENT,
    ename VARCHAR(20),
    sex CHAR(1)
)AUTO_INCREMENT=100;

INSERT INTO emp2(ename,sex) VALUES('张三','男');
INSERT INTO emp2(ename,sex) VALUES('李四','男');
INSERT INTO emp2 VALUES(NULL,'翠花','女');
INSERT INTO emp2 VALUES(NULL,'艳秋','女');

MySQL学习笔记-5.约束的介绍

5.3 DELETE和TRUNCATE对自增长的影响

删除表中所有数据有两种方式:

清空表数据的方式 特点
DELETE 只是删除表中所有数据,对自增没有影响
TRUNCATE truncate是将整个表删除掉,然后创建一个新的结构相同表,自增的主键,重新从1开始

1.使用 delete 方式删除所有数据

DELETE FROM emp2; -- delete 删除对自增是没有影响的

INSERT INTO emp2(ename,sex) VALUES('张百万','男');	-- 104
INSERT INTO emp2(ename,sex) VALUES('艳秋','女');	-- 105

MySQL学习笔记-5.约束的介绍

2.使用 truncate 删除表中所有数据

TRUNCATE TABLE emp2; -- 自增从1开始

INSERT INTO emp2(ename,sex) VALUES('张百万','男');	-- 1
INSERT INTO emp2(ename,sex) VALUES('艳秋','女');	-- 2

MySQL学习笔记-5.约束的介绍

5.4 非空约束

非空约束的特点:

  • 某一列不允许为空

语法格式:

字段名 字段类型 not null

为 ename 字段添加非空约束

CREATE TABLE emp2(
    eid INT PRIMARY KEY AUTO_INCREMENT,
    -- 添加非空约束,ename字段不能为空
    ename VARCHAR(20) NOT NULL,
    sex CHAR(1)
);

5.5 唯一约束

唯一约束的特点:

  • 表中的某一列的值不能重复( 对null不做唯一的判断 )

语法格式:

字段名 字段值 unique

1.创建emp3表 为ename 字段添加唯一约束

CREATE TABLE emp3(
    eid INT PRIMARY KEY,
    ename VARCHAR(20) UNIQUE,
    sex CHAR(1)
);

2.测试唯一约束

INSERT INTO emp3 VALUES(1,'张百万', '女');

-- Duplicate entry '张百万' for key 'ename' 不能重复
INSERT INTO emp3 VALUES(2,'张百万', '女');

-- 唯一约束的值 可以为 null
INSERT INTO emp3 VALUES(2, NULL, '女');

MySQL学习笔记-5.约束的介绍

主键约束和唯一约束的区别:

  • 主键约束 它是唯一且不能为空的
  • 唯一约束 唯一,但可以为空
  • 一个表中只能有一个主键,但是可以有多个唯一约束

5.6 默认值

作用:

  • 默认值约束 用来指定某列的默认值

语法格式:

字段名 字段类型 DEFAULT 默认值

1.创建emp4表, 性别字段默认 女

CREATE TABLE emp4(
    eid INT PRIMARY KEY,
    ename VARCHAR(20),
    sex CHAR(1) DEFAULT '女'
);

2.测试 添加数据使用默认值

INSERT INTO emp4(eid,ename) VALUES(1, '杨幂');
INSERT INTO emp4(eid,ename) VALUES(2, '柳岩');

-- 不适用默认值
INSERT INTO emp4(eid, ename, sex) VALUES(3, '蔡徐坤', '男');

MySQL学习笔记-5.约束的介绍