当前位置: 首页 > news >正文

MySQL约束

一,约束种类

(1)主键约束(Primary Key) PK

主键约束是表中最常用的约束,它可以确保每条数据的唯一性,比如学号,身份证号之类的唯一性凭证,所以主键不允许为空且唯一。

(2)外键约束(Foreign Key) FK

外键约束经常和主键约束一起使用,用来确保数据的一致性。外键可以认为是表与表之间的桥梁,在主表中外键的取值只能在副表中取,比如部门ID号作为外键,那么只能在部门ID有定义的副表中取值。

(3)唯一性约束(Unique)

唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。

(4)非空约束(Not Null)

非空约束用来约束表中的字段不能为空。

二,操作约束

(1)主键约束的操作

主键分为单一主键和联合主键,单一主键以一列作为主键,联合主键以多列作为主键,在联合主键中,只有全部值都相等时才会触发约束。

<1>添加主键

ALTER TABLE 表名 ADD PRIMARY KEY(列名)

 主键的自增长:

alter table 表名 modify 主键 类型 auto_increment;

自增长需要主键类型为整型类型,当删除主键时,需要先清除自增长。

<2>删除主键

ALTER TABLE 表名 DROP PRIMARY KEY;

(2)外键约束的操作

<1>添加外键

ALTER  TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN  KEY( 列 名 ) REFERENCES 参照的表名
(参照的列名);

外键可以看成用参照表中列的值来限制主表中的值,比如参照表中部门ID列只有1,2,3这三种情况,那么主表中部门ID的分配就只能在这三个值中选,不能跳出范围,因为员工不能分配到不存在的部门中。 

<2>删除外键 

ALTER TABLE 表名 DROP FOREIGN KEY 约束名;

 (3)唯一性约束操作

<1>添加唯一性约束

ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);

唯一性有约束只要不相等就可以,可以为空。

<2>删除唯一性约束

ALTER TABLE 表名 DROP KEY 约束名;

(4)非空约束操作

<1>添加非空约束

ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;

<2> 删除非空约束

ALTER TABLE 表名 MODIFY 列名 类型 NULL;

三,创建表时添加约束

create table depts(department_id int primary 
key auto_increment,department_name 
varchar(30) unique,location_id int not null);

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一、软件工程概述
  • 网络协议十 应用层 SPDY / HTTP2 / QUIC / HTTP3
  • 使用mybatis注解和xml映射执行javaWeb中增删改查等操作
  • Day18 Linux系统编程学习--文件
  • Java 中的面向对象编程 (OOP) 概念
  • 解析Java中1000个常用类:ListResourceBundle类,你学会了吗?
  • Linux安全与高级应用(十三)深入解析Linux中的rsync远程同步:原理、配置与应用
  • Layui——隐藏表单项后不再进行验证
  • 低代码开发平台:技术概览、效率与质量的权衡及挑战与机遇
  • Vue3配置路由
  • vue-lic
  • 【微信小程序】页面配置
  • docker的安装和常用命令
  • Android全面解析之context机制(三): 从源码角度分析context创建流程(下)
  • 偏导数的可视化
  • JS 中的深拷贝与浅拷贝
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 2019.2.20 c++ 知识梳理
  • ES10 特性的完整指南
  • JavaScript DOM 10 - 滚动
  • learning koa2.x
  • mysql中InnoDB引擎中页的概念
  • python学习笔记 - ThreadLocal
  • Python学习笔记 字符串拼接
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • SOFAMosn配置模型
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 跨域
  • 异常机制详解
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 栈实现走出迷宫(C++)
  • 《码出高效》学习笔记与书中错误记录
  • ​力扣解法汇总946-验证栈序列
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (1)常见O(n^2)排序算法解析
  • (2)空速传感器
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (三) diretfbrc详解
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (一)SpringBoot3---尚硅谷总结
  • (转)http-server应用
  • (转)关于多人操作数据的处理策略
  • (转)我也是一只IT小小鸟
  • .net 4.0发布后不能正常显示图片问题
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net 托管代码与非托管代码
  • .Net 执行Linux下多行shell命令方法
  • @JsonFormat与@DateTimeFormat注解的使用
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • []C/C++读取串口接收到的数据程序