|NO.Z.00027|——————————|BigDataEnd|——|Java&MySQL单表/约束/事务.V05|——|MySQL.v05|约束介绍|主键约束|
一、约束的介绍
### --- 约束的作用:
——> 对表中的数据进行进一步的限制,从而保证数据的正确性、有效性、完整性.
——> 违反约束的不正确数据,将无法插入到表中
二、常见的约束
约束名 | 约束关键字 |
主键 | primary key |
唯一 | unique |
非空 | not null |
外键 | foreign key |
三、主键约束
特点 | 不可重复 唯一 非空 |
作用 | 用来表示数据库中的每一条记录 |
四、添加主键约束
### --- 语法格式
字段名 字段类型 primary key
五、需求: 创建一个带主键的表
### --- 方式1 创建一个带主键的表
CREATE TABLE emp2(
-- 设置主键 唯一 非空
eid INT PRIMARY KEY,
ename VARCHAR(20),
sex CHAR(1)
);
~~~ # 删除表
DROP TABLE emp2;
-- 方式2 创建一个带主键的表
CREATE TABLE emp2(
eid INT ,
ename VARCHAR(20),
sex CHAR(1),
-- 指定主键为 eid字段
PRIMARY KEY(eid)
);
~~~ # 方式3 创建一个带主键的表
CREATE TABLE emp2(
eid INT ,
ename VARCHAR(20),
sex CHAR(1)
)
-- 创建的时候不指定主键,然后通过 DDL语句进行设置
ALTER TABLE emp2 ADD PRIMARY KEY(eid);
~~~ # DESC 查看表结构
-- 查看表的详细信息
DESC emp2;

~~~ # 正常插入一条数据
INSERT INTO emp2 VALUES(1,'宋江','男');
~~~ # 插入一条数据,主键为空
-- Column 'eid' cannot be null 主键不能为空
INSERT INTO emp2 VALUES(NULL,'李逵','男');
~~~ # 插入一条数据,主键为 1
-- Duplicate entry '1' for key 'PRIMARY' 主键不能重复
INSERT INTO emp2 VALUES(1,'孙二娘','女');
### --- 哪些字段可以作为主键 ?
——> 通常针对业务去设计主键,每张表都设计一个主键id
——> 主键是给数据库和程序使用的,跟最终的客户无关,所以主键没有意义没有关系,只要能够保证不重复
——> 就好,比如 身份证就可以作为主键.
### --- 删除主键约束
——> 删除 表中的主键约束 (了解)
-- 使用DDL语句 删除表中的主键
ALTER TABLE emp2 DROP PRIMARY KEY;
DESC emp2;
七、sql语句
### --- sql语句
/*
约束
约束是指对数据进行一定的限制,来保证数据的完整性 有效性 正确性
常见的约束
主键约束 primary key
唯一约束 unique
非空约束 not null
外键约束 foreign key
*/
/*
主键约束
特点 不可重复 唯一 非空
作用 用来表示数据库中的每一条记录
语法格式
字段名 字段类型 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),
PRIMARY KEY(eid) -- 指定eid为主键
);
~~~ # 方式3 创建表之后 再添加主键
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;
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv005-mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)