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 相关文章推荐
多表查询、事务、DCL
Apr 05 MySQL
MySQL Shell的介绍以及安装
Apr 24 MySQL
MySQL 8.0 之不可见列的基本操作
May 20 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
MySQL系列之七 MySQL存储引擎
Jul 02 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
Mysql超详细讲解死锁问题的理解
Apr 01 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
MySQL count(*)统计总数问题汇总
Sep 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
自己前几天写的无限分类类
2007/02/14 PHP
php 带逗号千位符数字的处理方法
2012/01/10 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
python字典的遍历3种方法详解
2019/08/10 Python
python多线程同步之文件读写控制
2021/02/25 Python
pytorch标签转onehot形式实例
2020/01/02 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
职务聘任书范文
2014/03/29 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
公司车队管理制度
2015/08/04 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书