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 - 常用函数 每天积极向上
Apr 05 MySQL
mysql的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL安装后默认自带数据库的作用详解
Apr 27 MySQL
Navicat for MySQL的使用教程详解
May 27 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
浅谈MySQL之select优化方案
Aug 07 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
MySQL 开窗函数
Feb 15 MySQL
关于k8s环境部署mysql主从的问题
Mar 13 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
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
PHP面向对象教程之自定义类
2014/06/10 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
详解Python编程中包的概念与管理
2015/10/16 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
python 调用c语言函数的方法
2017/09/29 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
python用match()函数爬数据方法详解
2019/07/23 Python
python微信公众号开发简单流程实现
2020/03/09 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
办公用品质量保证书
2015/05/11 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书