1. 约束的概念和分类

约束:对表中的数据进行限定,保证数据的正确性、有效性、完整性!

约束分类:

约束 说明
PRIMARY KEY 主键约束
PRIMARY KEY AUTO_INCREMENT 主键、自动增长
UNIQUE 唯一约束
NOT NULL 非空约束
FOREIGN KEY 外键约束
FOREIGN KEY ON UPDATE CASCADE 外键级联更新
FOREIGN KEY ON DELETE CASCADE 外键级联删除

2. 主键约束

-- 创建学生表将学号设置为主键
CREATE TABLE student(id INT PRIMARY KEY,NAME VARCHAR(30),age INT
);-- 添加数据
INSERT INTO student VALUES(1,'杨过',26);
INSERT INTO student VALUES(2,'小龙女',30);-- 删除主键
ALTER TABLE student DROP PRIMARY KEY;
INSERT INTO student VALUES(1,'尹志平',30);-- 建表后添加主键
DELETE FROM student WHERE NAME = '尹志平';
ALTER TABLE student MODIFY id INT PRIMARY KEY;

3. 主键自增约束

-- 删除原先学生表
DROP TABLE student;
-- 新建学生表,学号设置为主键自增
CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),age INT
);-- 添加数据
INSERT INTO student VALUES (NULL,'杨康',35),(NULL,'穆念慈',26);-- 删除自增约束,主键还在
ALTER TABLE student MODIFY id INT;
DESC student
INSERT INTO student VALUES (3,'杨过',15);-- 建表后单独添加自增约束
ALTER TABLE student MODIFY id INT AUTO_INCREMENT;

4. 唯一约束

-- 删除原先学生表
DROP TABLE student;
-- 新建学生表,学号设置为主键自增,姓名设置唯一约束
CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) UNIQUE,age INT
);
DESC student;-- 添加数据
INSERT INTO student VALUES (NULL,'张三',23);
INSERT INTO student VALUES (NULL,'李四',24);-- 删除唯一约束
ALTER TABLE student DROP INDEX NAME;-- 建表后单独添加唯一约束
ALTER TABLE student MODIFY NAME VARCHAR(20) UNIQUE;

5. 非空约束

-- 删除原先学生表
DROP TABLE student;
-- 新建学生表,学号设置为主键自增,姓名设置唯一约束,年龄设置为非空约束
CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) UNIQUE,age INT NOT NULL
);
DESC student;-- 添加数据
INSERT INTO student VALUES (NULL,'张三',23);-- 删除非空约束
ALTER TABLE student MODIFY age INT;-- 建表后单独添加非空约束
ALTER TABLE student MODIFY age INT NOT NULL;

6. 外键约束

让表和表之间产生关系,从而保证数据的准确性!

USE liulu
-- 创建user用户表
CREATE TABLE USER(id INT PRIMARY KEY AUTO_INCREMENT,    -- idNAME VARCHAR(20) NOT NULL             -- 姓名
);
-- 添加用户数据
INSERT INTO USER VALUES (NULL,'张三'),(NULL,'李四');-- 创建orderlist订单表
CREATE TABLE orderlist(id INT PRIMARY KEY AUTO_INCREMENT,    -- idnumber VARCHAR(20) NOT NULL,          -- 订单编号uid INT,               -- 外键列CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id)
);
-- 添加订单数据
INSERT INTO orderlist VALUES
(NULL,'hm001',1),(NULL,'hm002',1),
(NULL,'hm003',2),(NULL,'hm004',2);-- 添加一个订单,但是没有真实用户。添加失败
INSERT INTO orderlist VALUES (NULL,'hm005',3);-- 删除李四用户。删除失败
DELETE FROM USER WHERE NAME='李四';-- 删除外键约束
ALTER TABLE orderlist DROP FOREIGN KEY ou_fk1;-- 建表后单独添加外键约束
ALTER TABLE orderlist ADD CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id);

7. 级联更新和级联删除

-- 外键联级更新和删除-- 删除外键约束
ALTER TABLE orderlist DROP FOREIGN KEY ou_fk1;-- 添加外键约束,同时添加级联更新和级联删除
ALTER TABLE orderlist ADD CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id)
ON UPDATE CASCADE ON DELETE CASCADE;-- 将李四这个用户的id修改为3,订单表中的uid也自动修改
UPDATE USER SET id=3 WHERE id=2;-- 将李四这个用户删除,订单表中的该用户所属的订单也自动删除
DELETE FROM USER WHERE id=3;

如有错误欢迎留言评论,2021年7月9日  羽露风

主键约束、主键自增约束、唯一约束、非空约束、外键约束相关推荐

  1. MySQL 之 约束 (主键、唯一、非空、自增、外键)

    MySQL 之 约束 (主键.唯一.非空.自增.外键) 目的:使得数据更准确,更完整. 约束的分类: 1.键约束 (1)主键约束 (2)唯一键约束 (3)外键约束 2.非空约束 3.默认值约束 4.自 ...

  2. mysql 图形界面外键_关于使用可视化图形工具navicat for mysql来创建外键的步骤

    主键:主键是一张表的唯一标识符,应该让其处于不可被外界更改状态. 且主键对于用户来说是无意义的,为了明确这一点,我们应该让主键处于一种幽魂状态,即主键存在,但其他人并不感觉到它存在. 外键:创建外键是 ...

  3. 数据的完整性(正确性和准确性):分类-实体完整性:主键约束、唯一约束、自动增长列。域完整性-非空约束、默认值约束、检查约束。引用完整性-一对一、一对多、多对多

    文章目录 1 数据的完整性作用 2 完整性的分类 2.1 实体完整性 2.1.1 主键约束 primary key 2.1.2 唯一约束 unique 2.1.3 自动增长列 auto_increme ...

  4. hibernate mysql 外键_如何在hibernate中设置关联会在数据库中生成外键

    hibernate学习笔记(三) hibernate的一些杂记:1.sessionFactory的用法:SessionFactory是线程安全的,构造 SessionFactory 很消耗资源sess ...

  5. MySQL→数据库、启动连接数据库、SQL→DDL数据定义语言及数据类型、DML数据操作语言、DQL数据查询语言、数据库约束→主键、唯一、非空、默认、外键、SQL、三大范式及一多关系、视图、内外连接

    MySQL连接退出命令 mysql –uroot -proot mysql –h127.0.0.1 –uroot -proot mysql --host=localhost --user=root - ...

  6. mysql 未能启用约束_未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。...

    来源:http://www.cnblogs.com/JuneZhang/archive/2013/01/10/2853981.html 今天运行项目,提示"未能启用约束.一行或多行中包含违反 ...

  7. 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。

    来源:http://www.cnblogs.com/JuneZhang/archive/2013/01/10/2853981.html 今天运行项目,提示"未能启用约束.一行或多行中包含违反 ...

  8. 2019-7-26 [MySQL] 安装与介绍 语句分类/语法 数据类型 DDL数据定义:创建/查看/删除/使用 DML数据操作:增删改 主键约束 自动增长列 非空约束 默认值 Navicat

    文章目录 0.知识回顾 1.数据库介绍 1.1 数据库概述 1.1.1 什么是数据库 1.1.2 什么是数据库管理系统 1.1.3 数据库与数据库管理系统的关系 1.2 数据库表 1.3 表数据 1. ...

  9. 2019-7-27 [MySQL] DQL 简单查询[别名/去重/运算] 条件查询 排序查询 聚合查询 分组查询 导出与导入 多表操作[一对多/多对多][创外键 创联合主键 约束 添加 删除 测试]

    文章目录 5 SQL语句(DQL) 5.1DQL准备工作和语法 5.1.1准备工作 5.1.2 DQL语法: 5.2 简单查询 5.2.1 查询所有的商品 5.2.2 查询商品名和商品价格. 5.2. ...

  10. 数据库的主键约束、唯一约束、外键约束

    一.主键约束: 主键: 非空且唯一. 不能为 null 值, 不能出现重复的数据. 通常情况下, 一个表当中, 主键只能有一个 创建主键约束的两种方法及删除方法:(不需要加自增,就把AUTO_INCR ...

最新文章

  1. Mybatis中 $ 和 # 千万不要乱用!
  2. Android中的进程
  3. mysql中sql批量插入_MySQL批量SQL插入性能优化
  4. 关于${ctx}拿不到值的问题
  5. 甲骨文中国公司如何如何打赢这场裁员翻身仗?
  6. linux硬件时间修改与查看
  7. 在Socket做服务器,在手机上用Http访问
  8. annotations_Spring Annotations我从来没有机会使用第2部分:@ConfigurationProperties
  9. keep怎么生成运动轨迹_【念叨叨】keep手环拔草记
  10. java 方法互斥_Java 两个互斥方法同时访问一个成员变量
  11. iOS基础 - UIScrollView
  12. linux——文件操作
  13. 8. COM编程——CoCreateInstance创建COM对象
  14. html和css设计网页实例,经典网页设计:30个创意的 CSS 应用案例
  15. 串口转usb驱动c语言程序,电脑中USB转串口如何正确安装对应的驱动程序
  16. 动态规划之详细分析0-1背包问题
  17. Spark开发:Spark大数据开发编程示例
  18. Python分析薛之谦与李雨桐互撕微博
  19. Linux下的压测工具 hey
  20. 由Ajax大赛想到的--老谢的博客开通了

热门文章

  1. 还在羡慕微信/微博的图片处理?-android酷炫图片处理(下)
  2. C++中string.size()函数 踩坑
  3. 用dd命令克隆ubuntu系统
  4. 【Python爬虫学习】一、Request
  5. sketch 如何实现图片image圆角 头像圆角
  6. php 可视化模板编辑,MetInfo
  7. 高可用网络架构的部署
  8. DHGNN:Dynamic Hypergraph Neural Networks
  9. [工具使用]SqlMap
  10. 史诗级Java资源大全中文版