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查询学习之基础查询操作
May 08 MySQL
MySQL update set 和 and的区别
May 08 MySQL
MySQL COUNT函数的使用与优化
May 10 MySQL
MySQL通过binlog恢复数据
May 27 MySQL
MySQL完整性约束的定义与实例教程
May 30 MySQL
MySQL面试题讲解之如何设置Hash索引
Nov 01 MySQL
防止web项目中的SQL注入
Dec 06 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
Feb 24 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
详细聊一聊mysql的树形结构存储以及查询
Apr 05 MySQL
Mysql数据库group by原理详解
Jul 07 MySQL
一文解答什么是MySQL的回表
Aug 05 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
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
php调用C代码的实现方法
2014/03/11 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
毕业生教师求职信
2013/10/20 职场文书
公司前台辞职报告
2014/01/19 职场文书
消防安全责任书
2014/04/14 职场文书
捐助倡议书范文
2014/04/15 职场文书
程序员求职信
2014/04/16 职场文书
一帮一活动总结
2014/05/08 职场文书
委托书的写法
2014/09/16 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
法务专员岗位职责
2015/02/14 职场文书
红色故事汇观后感
2015/06/18 职场文书
六一儿童节园长致辞
2015/07/31 职场文书