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 相关文章推荐
MySQL Threads_running飙升与慢查询的相关问题解决
May 08 MySQL
MySQL中使用or、in与union all在查询命令下的效率对比
May 26 MySQL
MySQL快速插入一亿测试数据
Jun 23 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
解决MySQL Varchar 类型尾部空格的问题
Apr 06 MySQL
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
Mysql中@和@@符号的详细使用指南
Jun 05 MySQL
手把手带你彻底卸载MySQL数据库
Jun 14 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
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
Sea.JS知识总结
2016/05/05 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
记录Django开发心得
2014/07/16 Python
Python实现批量转换文件编码的方法
2015/07/28 Python
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
树莓派实现移动拍照
2019/06/22 Python
python数据归一化及三种方法详解
2019/08/06 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
你懂得怎么写自荐信吗?
2013/12/27 职场文书
小学教师听课制度
2014/02/01 职场文书
社区服务活动总结
2014/05/07 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
旅游项目合作意向书
2015/05/08 职场文书
vue组件vue-esign实现电子签名
2022/04/21 Vue.js
python实现双链表
2022/05/25 Python