mysql常见六大约束

2023-11-16

DDL语言

常见约束:

**约束的含义**:
一种限制,用于限制表中的数据,为了保证表中的数据的准确性和可靠性
**分类:** 六大约束
		1. NOT NULL :非空约束,用于保证该字段的值不能为空
		比如姓名,学号等
		2. DEFAULT :默认约束,用于保证该字段有默认值
		比如性别
		3. PRIMARY KEY :主键约束,用于保证该字段的值具有唯一性,并且非空
		比如学号,员工编号等
		4. UNIQUE : 唯一约束,用于保证该字段的值具有唯一性,可以为空
		比如座位号
		5.CHECK:检查约束【mysql中不支持,sql语法支持,语法不报错,但是没效果】
		比如年龄、性别,可以设置一个范围
		6.FOREIGN	KEY :外键约束,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值
		在从表中添加外键约束,用于引用主表中某列的值
		比如学生表的专业编号,员工表的部门编号,员工表的工种编号

添加约束的时机:
1.创建表时
2.修改表时

约束的添加分类:
1.列级约束:
六大约束 语法上都支持,但外键约束没有效果

2.表级约束:
除了非空、默认。其他的都支持

3.表级约束和列级约束的区别对比
在这里插入图片描述

一、创建表时添加约束

1.添加列级约束

语法:
直接在字段名和类型后面追加 约束类型即可。
只支持:主键、非空、默认、唯一 四种约束

案例:

#创建数据库
CREATE DATABASE students;
#进入数据库
USE students;

#创建表
#创建专业信息表				
CREATE TABLE major(
		ID INT PRIMARY KEY,
		majorName	 VARCHAR(20)
		);
#创建学生表
CREATE TABLE stuinfo(
				id INT PRIMARY KEY,#主键
				stuName		VARCHAR(20)	NOT NULL, #非空
				sex 	CHAR(1) CHECK(sex=OR sex=),#检查约束,对mysql没效果,了解写法
				seat INT UNIQUE,#唯一约束
				age INT DEFAULT 	18,#默认约束
				marjorID INT REFERENCES major(id) #添加外键 FOREIGN KEY	外键约束在列级约束中不支持
				);

#查看表信息
desc stuinfo
#查看statuinfo表中所有的索引,包括主键,外键,唯一
show INDEX from stuinfo

2.添加表级约束

	语法:
			在各个字段的最下面,添加:
			【CONSTRAINT 自定义约束名字】 约束类型 (字段名)
	注意:
			1.CONSTRAINT 改名,对主键无效,默认为 PRIMARY
			2.也可以不写	【CONSTRAINT 自定义约束名字】 ,则约束名字默认为字段名

案例:

#创建表
#创建专业信息表				
CREATE TABLE major2(
		ID INT PRIMARY KEY,
		majorName	 VARCHAR(20)
		);
#创建学生表
CREATE TABLE stuinfo2(
				id INT ,
				stuName		VARCHAR(20),
				sex 	CHAR(1),
				seat INT ,
				age INT ,
				marjorID INT,
				CONSTRAINT pk  PRIMARY KEY(id),#添加表级约束,主键,mysql中主键改名不生效,名字永为默认名 PRIMARY
				CONSTRAINT uq  UNIQUE(seat),#唯一键
				CONSTRAINT ck  CHECK(sex='男' OR sex='女'), #检查约束,mysql不支持
				CONSTRAINT fk_stuinfo_major2 FOREIGN KEY(marjorID) REFERENCES major2(ID) #外键
				);

#查看表信息
desc stuinfo2
#查看statuinfo表中所有的索引,包括主键,外键,唯一
show INDEX from stuinfo2

总结:何时用列级约束,何时用表级约束

通用的写法:
CREATE TABLE IF NOT EXISTS stuinfo(
				id INT PRIMARY KEY,
				stuname  VARCHAR(20) NOT NULL,
				sex CHAR(1),
				age INT DEFAULT 18,
				seat INT UNIQUE,
				majorid INT,
				constraint fk FOREIGN KEY(majorid) REFERENCES major(ID)
);
面试常见问题:

①主键约束和唯一约束的大对比:
在这里插入图片描述
②外键的特点:

1.要求在从表设置外键关系
2.从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3.主表的关联列必须是一个key(一般是主键或唯一)
4.插入数据时,先插入主表的数据,再插入从表
	删除数据时,先删除从表,再删除主表

两种删除方式了解即可
在这里插入图片描述

二、修改表时 添加约束

1.添加列级约束

ALTER TABLE	表名 MODIFY COLUMN 字段名 字段类型	新约束;

2.添加表级约束

ALTER	TABLE 表名	addCONSTRAINT 约束名】 约束类型(字段名)	【外键的引用】

创建测试环境

drop TABLE if exists	stuinfo10;
CREATE TABLE stuinfo10(
				id INT ,
				stuName		VARCHAR(20),
				sex 	CHAR(1),
				seat INT ,
				age INT ,
				marjorID INT
				)

2.1.添加非空约束

ALTER TABLE stuinfo10 MODIFY COLUMN stuname VARCHAR(20) NOT NULL;

2.2.添加默认约束

ALTER	TABLE stuinfo10 MODIFY COLUMN age INT DEFAULT 18;

2.3.添加主键

①列级约束
ALTER TABLE stuinfo10 MODIFY COLUMN id INT PRIMARY KEY;
②表级约束	
ALTER TABLE stuinfo10	ADD	PRIMARY KEY(id);

2.4.添加唯一

	①列级约束
	ALTER TABLE stuinfo10 MODIFY COLUMN seat INT UNIQUE;
	②表级约束
	ALTER TABLE stuinfo10 ADD UNIQUE(seat);

2.5.添加外键,【CONSTRAINT 自定义名称可以省略】

ALTER TABLE stuinfo10 ADDCONSTRAINT fk_stauinfo_major】 FOREIGN KEY(majorid) REFERENCES major(id);

三、修改表时删除约束

1.删除非空约束

ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型  NULL;
#举例
ALTER TABLE stuinfo10 MODIFY COLUMN stuname VARCHAR(20)  NULL;

2.删除默认约束

ALTER TABLE stuinfo10 MODIFY COLUMN age INT;

3.删除主键

	ALTER TABLE 表名 DROP PRIMARY KEY;

4.删除唯一

ALTER TABLE stuinfo10 DROP UNIQUE(seat);

5.删除外键约束

ALTER TABLE stuinfo10 DROP FOREIGN KEY 外键的名称
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql常见六大约束 的相关文章

随机推荐

  • elementui 计数器

    输入值超过规定的最大值 比如999 输入1000时 输入后 直接提交表单 中间计数器会自动把1000转化为999 再提交 测试人员说没有出现 不能超过3位数字的提示 解决办法 把min和max去掉 再写自定义验证规则就可以了 计数器自动转化
  • JavaScript:iterable类型

    遍历Array可以采用下标循环 遍历Map和Set就无法使用下标 为了统一集合类型 ES6标准引入了新的iterable类型 Array Map和Set都属于iterable类型 具有iterable类型的集合可以通过新的for of循环来
  • 向量积(叉积)及其计算

    定义 两个向量a和b的 向量积 外积 叉积 是一个向量 记作a b 这里 并不是乘号 只是一种表示方法 与 不同 也可记做 若a b不共线 则a b的模是 a b a b sin a b a b的方向是 垂直于a和b 且a b和a b按这个
  • 【Linux】基于单例模式懒汉实现方式的线程池

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 LockGuard hpp 二 Task hpp 三
  • 二叉查找树(BST)的基本概念及常用操作

    二叉查找树 二叉查找树 Binary Search Tree 也称二叉搜索树 有序二叉树 ordered binary tree 排序二叉树 orted binary tree 是指一棵空树或者具有下列性质的二叉树 若任意节点的左子树不空
  • 有效的括号 力扣 栈应用

    上班摸鱼打代码 o 目录 题目描述 AC代码 思路分析 题目描述 给定一个只包括 的字符串 s 判断字符串是否有效 有效字符串需满足 左括号必须用相同类型的右括号闭合 左括号必须以正确的顺序闭合 示例 1 输入 s 输出 true示例 2
  • HECI-Securtiy 防火墙路由技术

    目录 一 防火墙路由基本原理 1 路由分类 2 路由优先级 3 路由查询先后顺序 4 静态路由基本原理 1 指定出接口场景 2 指定下一跳地址场景 5 静态路由与多出口 1 主备备份 2 均衡式负载分担 3 溢出式负载分担 二 逐流与逐包报
  • 2022年实习面试 凉经

    2022年实习面试 凉经 字节跳动 数据分析师 2022 8 3 首先是自我介绍 其次给我出了一道sql的题目 里面用到了group by 的分组函数 以及最好嵌套一个子查询 然后出了一道题 感觉是产品经理方向 说B战有一个视频的播放量 一
  • java awt实现拖拉式文件路径获取

    package com example drag import java awt GridLayout import java awt datatransfer DataFlavor import java awt dnd DnDConst
  • SQL——根据字段包含值,统计条数(全文索引、CONTAINS、instr)

    根据字段包含值 统计条数 例如my column字段值可能为 0 1 2 3 4 5 目标 统计my column中的值为0 为1 为2 的各个条数 方式一 使用CONTAINS 该功能建立在全文索引之上 删除全文索引 DROP CONTE
  • 景联文科技高质量教育GPT题库:引领教育行业的技术革命

    ChatGPT拉开了大语言题库和生成式AI产业蓬勃发展的序幕 全世界教育科技公司扎堆接入GPT 4 涵盖美国 欧洲 日韩 中东和北非地区等 大语言题库在教育领域中势必将获得更加广阔的应用前景和丰富的应用场景 杭州景联文科技是AI基础数据行业
  • ElasticSearch text 和 keyword 类型

    ElasticSearch text 和 keyword 类型 text 会进行分词 先把对象进行分词处理 然后存入到es中 当使用多个单词进行查询的时候 查不到已经分词过的内容 keyword 不会进行分词 不会对es中的对象进行分词处理
  • FreeRTOS任务创建、删除

    目录 一 FreeRTOS任务创建与删除有关函数 1 1 创建 删除任务的API函数 1 1 1 动态创建任务 1 1 2 静态创建任务 1 1 3 删除任务 二 FreeRTOS任务创建与删除 动态方法 2 1 实例 三 FreeRTOS
  • LeetCode 沙漏的最大总和

    以最中间的的那个元素来移动 整个沙漏移动 class Solution public int maxSum int grid int max 0 int sum 0 for int i 1 i lt grid length 1 i for
  • 【华为OD机试】路灯照明问题【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 在一条笔直的公路上安装了N个路灯 从位置0开始安装 路灯之间间距固定为100米 每个路灯都有自己的照明半径 请计算第一个路灯和最后一个路灯之间 无法照明的区间的长度和
  • 线上git仓库地址更改,本地如何更改?

    1 进入终端查看本地代码关联的git仓库地址 git remote v 2 删除本地关联的git仓库地址 git remote rm origin 3 本地代码关联新的仓库地址 git remote add origin 新地址 4 再次查
  • 获取BDUSS的简单方式

    BDUSS是登录百度 web wap 后的唯一身份凭证 baidu com 受http only保护 拿到BDUSS就等于拿到帐号的控制权 通行贴吧 知道 百科 文库 空间 百度云等百度主要产品 在 贴吧云签系统 中 需要用到BDUSS进行
  • Linux下查看磁盘使用率及文件和文件夹大小

    原文地址 http blog sina com cn s blog 4ab088470106ge0o html 大家在使用linux的过程中 或许遇到过数据无法入库 无法上传数据等等 这就要多长个心眼 去查看一下磁盘使用率和文件大小吧 这时
  • 贪心+二分解决最大值最小、最小值最大问题

    在刷题时 总会遇到求最大值最小 最小值最大问题 也许它会暗喻是这样的一个问题 对于这样的一个问题 你会发现用dp和枚举都会超时超内存 或者说很麻烦 所以这是一个比较简单的解题方式 二分逼近思想 对于难以直接确定解的问题 采取二分枚举 检验的
  • mysql常见六大约束

    DDL语言 常见约束 约束的含义 一种限制 用于限制表中的数据 为了保证表中的数据的准确性和可靠性 分类 六大约束 1 NOT NULL 非空约束 用于保证该字段的值不能为空 比如姓名 学号等 2 DEFAULT 默认约束 用于保证该字段有