基础SQL第二课:约束

article/2025/9/28 5:21:27

一、约束:

什么是约束?
为了确保表中的数据的完整性(准确性、正确性),为表添加一些限制。是数据库中表设计的一个最基本规则。使用约束可以使数据更加准确,从而减少冗余数据(脏数据)。
数据库完整性约束分为以下几个大类:
在这里插入图片描述

(一)、主键约束

理论上来说每一个数据表都必须有一个唯一主键作为数据的唯一标识,设置主键的列不允许为空,主键习惯 id 表示,可以在创建数据时直接指定,也可以通过修改表结构直接添加,设置为主键的列在添加数据时不能重复,既唯一性。

CREATE TABLE `student`  (`id` int(11) NOT NULL ,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,`age` int(11) DEFAULT NULL,`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoD AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;

添加两条主键id的数值

INSERT INTO student(id,name,age,email) VALUES (1,'张安',18,'1443005893@qq.com')
INSERT INTO student(id,name,age,email) VALUES (1,'李四',20,'1443005893@qq.com')

我们会发现有错误
在这里插入图片描述
主键一般不是数据表当中的应用列,而是额外增加的列,而是额外增加的列,如果手动维护的话比较麻烦,所以针对主键Mysql 定制了一种自动增长的策略,既不需要手动给值,而是让mysql自己去维护这个主键,方法是每次找到数据表中最大的ID值加1.

CREATE TABLE `student`  (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,`age` int(11) DEFAULT NULL,`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;

在这里插入图片描述

INSERT INTO student(name,age,email) VALUES ('张安',18,'1443005893@qq.com')
INSERT INTO student(name,age,email) VALUES ('李四',20,'1443005893@qq.com')

自动递增 AUTO_INCREMENT 的特点
1.只有整形数据列才能设置为自动递增
2.只有主键才能设置为自增列
3.自动增长,新增数据时可以不赋值
4.初始化默认值为1,增量为1
5.自增列一旦被使用过就不会出现

(二)、唯一约束

唯一约束用来保护表中某列数据不允许重复,与主键约束类似,但级别没有主键高。一份表中唯一约束可以创建多个,并且唯一约束的列允许为空。
唯一约束一般用于约束手机号、账户、邮箱等信息。
在这里插入图片描述

INSERT INTO student(name,age,email) VALUES ('张安',18,'1443005893@qq.com')
INSERT INTO student(name,age,email) VALUES ('lisi',20,'1443005893@qq.com')

当我们做第二次插入的时候我们会发现如下错误
在这里插入图片描述

(三)、非空约束

可以通过 not null 设置数据表中某一列是必填字段,既不允许为空。
在这里插入图片描述

(四)、默认约束

可以通过default设置默认值约束,设置了默认约束的列,如果不给值就会使用默认值来填充。

CREATE TABLE `student`  (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,`age` int(11) DEFAULT 18 ,`email` varchar(20)  CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;
INSERT INTO student(name,email) VALUES ('张安','1443005893@qq.com')
INSERT INTO student(name,email) VALUES ('张安','1443005893@qq.com')

(五)、外键约束

外键约束用来在两个表的数据之间设立关联,MySql数据库是关系型数据库,既表与表之间的存在关系的,而这种关系我们成为外键关系。
创加一个丈夫表 和一个妻子表,妻子表当中设置外键关联丈夫表
在这里插入图片描述

CREATE TABLE `husband`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;-- ----------------------------
-- Table structure for wife
-- ----------------------------
DROP TABLE IF EXISTS `wife`;
CREATE TABLE `wife`  (`id` int(11) NOT NULL,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,CONSTRAINT `id` FOREIGN KEY (`id`) REFERENCES `husband` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;

在这里插入图片描述


http://chatgpt.dhexx.cn/article/UacDyjh4.shtml

相关文章

sublime解决中文乱码问题

首先找到你选择的build-system,如下图所示: 第二步:找到preferences下的browse packages,点击进入目录 第三步:找到对应的.sublime-build文件 第四步:打开文件,将"env": {"LANG&…

sublime text 3211 安装中文包

sublime text 3211 安装中文包 安装步骤: 1、打开Sublime Text3,选择Preferences ->Package Contorol 2、在Sublime Text3 弹窗输入install package,选择对应命令,然后鼠标点击安装install package 3、等待一会Sublime Text3 的 insta…

Sublime 中文命名乱码(显示为方框)

今天在使用Sublime中发现,将文件名以部分文字以中文命名,非中文部分能正常显示,中文部分显示不出来。如下图所示 这里就是python能显示出来,其他的汉字就变成了方框。与此对应的现象还有部分文本的部分内容显示为繁体 &#xff0…

解决sublime汉化后部分中文显示为繁体字

解决sublime汉化后部分中文显示为繁体字 1. 问题描述2. 解决方法3. 修正之后的效果 1. 问题描述 使用插件下载汉化包之后,部门字体仍显示为繁体,如下图 这种字体看着实在是别扭的不行 2. 解决方法 找到首选项 -> 设置 添加以下内容 "font_o…

关于sublime中文上下跳动错位的解决方法

关于sublime中文上下跳动错位的解决方法 在preferences-settings打开 增加"font_options":[“gdi”] 对比效果如下:

Sublime text文本编辑器中文乱码解决方法

Sublime text 出现中文乱码的解决方法 问题描述 Sublime text文本编辑器用起来感觉挺好的,它的代码补全功能非常不错,界面也很漂亮。 最近在学习C语言,我感觉Dev-C的界面比较朴实,代码补全功能操作性太强。因此,我会…

Sublime Text3 中文错位解决办法

在使用prettytable库打印列表时偶然发现,相同的中英文混合字符串表格在Windoows控制台以及NotePad上能对齐显示,在SublimeText3以及EmEditor上无法对齐显示: Windoows控制台(能对齐显示): EmEditor&…

sublime离线插件安装

一、首先需要安装Package Control 参考官网:Installation - Package Control中的方法。 其中分联网自动下载安装和手动两种。本文介绍手动的。 Click the Preferences > Browse Packages… menuBrowse up a folder and then into the Installed Packages/ fold…

解决 Sublime Text 中文样式显示异常问题

目录 一、问题背景 二、问题解决 1)在工具栏中选择 Preferences → Settings ,打开配置文件 2)在右侧界面添加下方代码块中的内容, CtrlS 保存 三、效果展示 一、问题背景 最近在单位的Mac系统中使用Sublime Text感觉良好&a…

sublime text里面中文字体显示异常解决方案

sublime text下载之后一开始转成中文之后,会出现中文显示异常的问题,比如下图中“门”字显示异常 通过如下的设置可以解决该问题: 首选项--》设置 在该位置添加如下内容: {"font_options": ["gdi"],"dp…

Linux sublime设置中文,Sublime Text 3 设置为Ubuntu 14.04默认编辑器并支持中文

Ubuntu 14.04下设置Sublime Text 3支持中文输入 发现Sublime Text不支持中文,我用的是Fctix,查了好长时间教程搞定了,在此分享并记录下,最后附上本次所需文件的下载地址。 1、 复制如下的代码为sublime_imfix.c文件并放到sublime_…

sublime匹配汉字

需要处理的文本 GET/aaa/v1/xxx【门户】获取商机列表信息 POST/aaa/v1/xxx创建商机接口 POST/aaa/v1/xxx/approve审核渠道报备商机 GET/aaa/v1/xxx/areaSales根据区域编码获取对应的销售负责人(渠道经理) POST/aaa/v1/xxx/assign分派渠道报备商机 POST/aaa/v1/xxx/convert/ord…

解决SublimeText中文注释乱码

在使用Sublime Text过程中,出现文件中中文呈现乱码的情况 解决:安装Package Control --> 安装插件ConvertToUTF8 1. 安装Package Control 1)Preferences --> Browse Packages,进入打开上层目录,选择Installed…

Sublime 打开文件中文乱码

解决步骤: 1. Ctrl Shift P 打开命令行 2. 输入install Package Control ,点击进行安装 3. CTRLSHIFTP > 安装 Install Package 4. Install Package 安装完毕后,在弹出的命令行,输入ConvertToUTF8,点击进行安装…

Sublime中文乱码问题!今天星期四~

Sublime使用过程中,不知道为啥里面的中文注释全部变成了乱码!!!好生气! 问题描述 变成乱码之后我按照搜索的教程下载 Package Install,ConvertTOUTF-8,结果全都不行!! …

Sublime使用

文章目录 一、汉化二、修改字体三、总结 一、汉化 Sublime Text 4 软件本身是支持汉化的,但是需要安装插件,不需要再去找汉化包之类 首先我们需要调出命令面板:点击“Tools”-》Commadn Palette或者直接按下快捷键Ctrlshiftp调出 在调出的页面…

Sublime Text设置中文

1. 在Sublime Text中,主菜单栏选择Tools->Command Palette,或快捷键ShiftCtrlP,弹出命令面板: 2. 输入install,点击Instal Package Control 3. 稍等几秒,弹出提示:安装成功&#x…

解决Sublime出现中文乱码的情况

Sublime text 软件中出现中文乱码,大多是因为编码格式不支持,只需要安装一个插件就可以解决中文乱码问题。 1.首先我们需要安装Package Control插件 直接在工具栏的:Tools/Install Package Control 然后等待一会儿,安装好后重启…

sublime改成中文简体及菜单变成中文

只需三步就可以让你的sublime变成中文 1.按住ctrlshiftp 输入 install Package,然后选择红框框住的; 2.选择第一个之后不要着急,这个得多等一下下,它才能出来; 3.输入Chinese,选择第一个就ok,…

json格式数据比对

效果图 vue部分 <template><div><el-row><div><el-col :span"6"><p>json比对A</p><vue-json-editorv-model"jsonA" :show-btns"false" :mode"code" lang"zh" json-change…