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; -- 查看表结构
方式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,'艳秋','女');
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,'艳秋','女');
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
2.使用 truncate 删除表中所有数据
TRUNCATE TABLE emp2; -- 自增从1开始
INSERT INTO emp2(ename,sex) VALUES('张百万','男'); -- 1
INSERT INTO emp2(ename,sex) VALUES('艳秋','女'); -- 2
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, '女');
主键约束和唯一约束的区别:
- 主键约束 它是唯一且不能为空的
- 唯一约束 唯一,但可以为空
- 一个表中只能有一个主键,但是可以有多个唯一约束
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, '蔡徐坤', '男');
下一篇: 悲观锁和乐观锁-学习笔记