MySQL约束超详解


Posted in MySQL onSeptember 04, 2021

MySQL约束操作

概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性。

分类:

  • 主键:primary key
  • 非空约束:not null
  • 唯一约束:unique
  • 外键约束:foreign key

1.非空约束

not null,值不能为空。

创建表时添加非空约束:

CREATE TABLE stu(
 id INT,
 NAME VARCHAR(20) NOT NULL
);

创建表完后,添加非空约束

ALTER TABLE stu 
MODIFY NAME VARCHAR(20) NOT NULL;

删除非空约束

ALTER TABLE stu 
MODIFY NAME VARCHAR(20);

2.唯一约束

unique,值不能重复。

创建表时添加唯一约束

CREATE stu(
 id INT;
 phone_number VARCHAR(20) UNIQUE
);

注意:mysql中,唯一约束限定的列的值可以有多个null

删除唯一约束

ALTER TABLE stu
DROP INDEX phone_number;

创建表完后,添加唯一约束

ALTER TABLE stu 
MODIFY phone_number VARCHAR(20) UNIQUE;

3.主键约束

primary key,

  • 非空且唯一。
  • 一张表只能有一个字段为主键。
  • 主键就是表中记录的唯一标识。

创建表时添加主键约束

CREATE TABLE stu( 
 id INT PRIMARY KEY,
 NAME VARCHAR(20)
);

删除主键

ALTER TABLE stu 
DROP PRIMARY KEY;

创建表完后,添加主键

ALTER TABLE stu 
MODIFY id INT PRIMARY KEY ;

这里补充一个知识点:自动增长

概念:如果某一列是数值类型的,使用auto_increment可以来完成自动增长。

例子:

在创建表时,添加主键约束,并且完成主键自动增长

CREATE TABLE stu(
 id INT PRIMARY KEY AUTO_INCREMENT,
 NAME VARCHAR(20)
);
#自动增长会根据当前列的最后一行的值往后增加。

删除自动增长

ALTER TABLE stu
MODIFY id INT;
#这样只会删除自动增长,主键删不掉。

创建表完后,在添加自动增长

ALTER TABLE stu
MODIFY id INT AUTO_INCREMENT;

4.外键约束

foreign ley,让表与表产生关系,从而保证数据的正确性。

在创建表时,可以添加外键

CREATE TABLE 表名(
 ...
 外键列
 CONSTRAINT 外键名称 FOREIGN KEY (外键列名称) REFERENCES 主表名称(主表列名称)
);

删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

创建表之后,添加外键

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

5、级联

添加级联操作

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 
FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称)
ON UPDATE CASCADE ON DELETE CASCADE  ;

级联删除

ON UPDATE CASCADE

到此这篇关于MySQL约束超详解的文章就介绍到这了,更多相关MySQL约束内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
left join、inner join、right join的区别
Apr 05 MySQL
MySQL 重写查询语句的三种策略
May 10 MySQL
MySQL中distinct和count(*)的使用方法比较
May 26 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
MySQL 十大常用字符串函数详解
Jun 30 MySQL
MySQL的全局锁和表级锁的具体使用
Aug 23 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
教你如何让spark sql写mysql的时候支持update操作
Feb 15 MySQL
MySQL Server 层四个日志
Mar 31 MySQL
Windows下载并安装MySQL8.0.x 版本的完整教程
Apr 10 MySQL
MySQL详解进行JDBC编程与增删改查方法
Jun 16 MySQL
MySQL表字段数量限制及行大小限制详情
Jul 23 MySQL
MySQL中的隐藏列的具体查看
Sep 04 #MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 #MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 #MySQL
MySQL8.0的WITH查询详情
Aug 30 #MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 #MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 #MySQL
mysql 索引合并的使用
Aug 30 #MySQL
You might like
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
Django操作session 的方法
2020/03/09 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
三严三实对照检查材料范文
2014/09/23 职场文书
老公婚前保证书
2015/02/28 职场文书
任命书标准格式
2015/03/02 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript
SpringBoot中获取profile的方法详解
2022/04/08 Java/Android
vue router 动态路由清除方式
2022/05/25 Vue.js