开始MySQL之路——MySQL约束概述详解
MySQL约束
create table [if not exists] 表名(字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],字段名3 类型[(宽度)] [约束条件] [comment '字段说明'] )[表的一些设置];
-
概念
约束英文:constraint
约束实际上就是表中数据的限制条件
-
作用
表再设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复。
-
分类
-
主键约束(primary key) PK
-
自增长约束(auto_ increment)
-
非空约束(not_null)
-
唯一性约束(unique)
-
默认约束(default)
-
零填充约束(zerofill)
-
外键约束(foreign key) FK
-
主键约束
-
概念
MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便再RDBMS中尽快的找到某一行。
主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。
每个表最多只允许一个主键
主键约束的关键字是:primary key
当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。
操作
-
添加单列主键
-
添加多列联合主键
-
删除主键
-
①:添加单列主键
创建单列主键有两种方式,一种是在定义字段的同时指定主键,一种是定义完字段之后指定主键
方式1-语法:
在 create table 语句中,通过 primary key 关键字来指定主键。 在定义字段的同时指定主键,语法格式如下: create table 表名( ... <字段名><数据类型> primary key ... )
方式1-实现:
在定义字段之后再指定主键,语法格式如下: create table 表名( ... [constraint<约束名>] primary key[字段名] )数据修改 格式 create table if not exists emp(sid int primary key,sname varchar(20),deptid int,salary double );
方式2-实现:
create table emp2( eid INT, name VARCHAR(20), deptId INT, salary double, constraint pk1 primary key(id) )主键不能重复 insert into emp(sid, sname, deptid, salary) VALUES (1001,'tom',1,122.34); insert into emp(sid, sname, deptid, salary) VALUES (1002,'jerry',1,122.34); 主键不能为空 insert into emp(sid, sname, deptid, salary) VALUES (null,'tom',1,122.34);
②:联合主键
所谓的联合主键,就是这个主键是由一张表中多个字段中有多个字段组成的。
注意:
1:当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。
2:一张表只能有一个主键,联合主键也是一个主键
语法:
create table 表名( ... primary key(字段1,字段2,...,字段n) )
实现:
create table emp3(name varchar(20),deptId int,salary double,primary key(name,deptId) )insert into emp3(name, deptId, salary) VALUES ('tom',1,1200.12); insert into emp3(name, deptId, salary) VALUES ('tom',1,1200.12); insert into emp3(name, deptId, salary) VALUES ('jerry',1,1200.12); insert into emp3(name, deptId, salary) VALUES (null,1,1200.12);
③:添加主键
主键约束不仅可以在创建表的同时创建,也可以在修改表时添加。
语法:
create table 表名( ... ); alter table <表名> add primary key(字段列表);
实现:
添加主列主键 create table emp5(eid int,name varchar(20),deptId int,salary double ); alter table emp5 add primary key(name,deptId);
④:删除主键
一个表中不需要主键约束时,就需要从表中将其删除。删除主键约束的方法要比创建主键约束容易的多。
格式:
alter table <数据表名> drop priamry key;
实现:
删除单列主键 alter table emp1 drop primary key; 删除联合主键 alter table emp5 drop primary key;
自增长约束
-
概念
在MySQL中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。
通过给字段添加auto_increment属性来实现主键自增长
-
语法
字段名 数据类型 auto_increment
-
操作
create table t_user1(id int primary key auto_increment,name varchar(20) );
非空约束
唯一约束
默认约束
零填充约束
相关文章:

开始MySQL之路——MySQL约束概述详解
MySQL约束 create table [if not exists] 表名(字段名1 类型[(宽度)] [约束条件] [comment 字段说明],字段名2 类型[(宽度)] [约束条件] [comment 字段说明],字段名3 类型[(宽度)] [约束条件] [comment 字段说明] )[表的一些设置]; 概念 约束英文:constraint 约束实…...
CMake基础和命令介绍
CMake是一个跨平台的构建工具,它可以生成各种不同平台上的构建文件,例如Makefile或Visual Studio项目文件。以下是一些常用的CMake命令: 1. cmake_minimum_required:指定需要的最小CMake版本。 2. project:定义项目名…...

【matlab利用shp文件制作mask白化文件】
matlab白化文件 mask文件的作用matlab制作mask文件mask结果 mask文件的作用 地理信息绘图中的 “mask” 通常指的是遮罩或掩膜,用于在地图或图像上隐藏、高亮或标记特定区域。 数据可视化: 地理信息绘图 mask 可以用于突出显示特定地理区域,使…...

【LLM】解析pdf文档生成摘要
文章目录 一、整体思路二、代码三、小结Reference 一、整体思路 非常简单的一个v1版本 利用langchain和pdfminer切分pdf文档为k块,设置overlap等参数先利用prompt1对每个chunk文本块进行摘要生成,然后利用prompt2对多个摘要进行连贯组合/增删模型可以使…...

方案:AI边缘计算智慧工地解决方案
一、方案背景 在工程项目管理中,工程施工现场涉及面广,多种元素交叉,状况较为复杂,如人员出入、机械运行、物料运输等。特别是传统的现场管理模式依赖于管理人员的现场巡查。当发现安全风险时,需要提前报告࿰…...
【Python】【数据结构和算法】查找最大或最小的N个元素
除了直接排序,还可以利用heaq模块的nlargest()和nsmallest()方法,例如: >>> nums [3, 5, 2, 4, 1] >>> smallest heapq.nsmallest(3, nums) >>> print(smallest) [1, 2, 3] >>> largest heapq.nlarg…...

C++day1(笔记整理)
一、Xmind整理: 二、上课笔记整理: 1.第一个c程序:hello world #include <iostream> //#:预处理标识符 //<iostream>:输入输出流类所在的头文件 //istream:输入流类 //ostream:输出流类using namespace std; //std&#x…...

关于chromedriver.exe一系列问题的解决办法
最新 chromedriver.exe下载地址:https://googlechromelabs.github.io/chrome-for-testing/#stable 下载最新版本的 chromedriver.exe 将其解压在 python.exe 同目录下,以及Chrome 的路径下 例如: C:\Program Files\Google\Chrome\Applicati…...

css-选择器、常见样式、标签分类
CSS CSS简介 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可…...

三星申请新商标:未来将应用于智能戒指,作为XR头显延伸设备
三星最近向英国知识产权局提交了名为“Samsung Curio”的新商标,这预示着三星正积极扩展可穿戴设备生态。该商标被分类为“Class 9”,这表明它有可能被用于未来的智能戒指。 据报道,三星计划将智能戒指作为XR头显设备的延伸,与苹果…...

0201hdfs集群部署-hadoop-大数据学习
文章目录 1 前言2 集群规划3 hadoop安装包上传与安装3.1 上传解压 4 hadoop配置5 从节点同步和环境变量配置6 创建用户7 集群启动8 问题集8.1 Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority. 结语 1 前言 下面我们配置下单namenode节点h…...

DevOps中的持续测试优势和工具
持续测试 DevOps中的持续测试是一种软件测试类型,它涉及在软件开发生命周期的每个阶段测试软件。持续测试的目标是通过早期测试和经常测试来评估持续交付过程的每一步的软件质量。 DevOps中的持续测试流程涉及开发人员、DevOps、QA和操作系统等利益相关者。 持续…...
函数-C语言(初阶)
目录 一、什么是函数 二、函数的分类 2.1 库函数 2.2 自定义函数 三、函数的参数 3.1 实际参数(实参) 3.2 形式参数(形参) 四、函数的调用 4.1 传值调用 4.2 传址调用 五、函数的嵌套调用和链式访问 5.1 嵌套调用 5.2 链式访问…...
elementuiplus设置scroll-to-error之后 提示被遮挡的解决方案
项目场景: 普通的头部固定,中间滑动的布局,中间内容有表单,提交校验不通过时滚动到第一个错误项 问题描述 elementuiplus的scroll-to-error设置之后是局部滚动 当头部内容层级高于中间表单的时候,错误会被遮挡。 ---…...
vue中将新添加的div标签自动定位到可视区域内
可以结合使用Vue的ref和scrollIntoView()方法来实现 <template><div><button click"addDiv">添加新的<div>标签</button><div ref"container" class"container"><div v-for"(item,inde…...
Vue3笔记——(尚硅谷张天禹Vue笔记)
Vue3 Vue3简介 1.Vue3简介 .2020年9月18日,Vue.js发布3.0版本,代号: One Piece(海贼王)。耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者 . github上的tags地址: https://github.com/vuejs/vue-next/releases/tag/v3.0.0 2.Vue3带来了什么 .性能…...

正则表达式一小时学完
闯关式学习Regex 正则表达式,我感觉挺不错的,记录一下。 遇到不会的题,可以评论交流。 真的很不错 链接 Regex Learn - Step by step, from zero to advanced....

上门服务系统|上门服务小程序如何提升生活质量?
上门服务其实就是本地生活服务的升级,上门服务包含很多行业可以做的。例如:厨师上门、上门家电维修、跑腿等等。如今各类本地化生活服务越来越受大家的喜爱。基于此市场愿景,我们来谈谈上门服务系统功能。 一、上门服务系统功能 1、预约服务…...

系统报错msvcp120.dll丢失的解决方法,常见的三种解决方法
今天为大家讲述关于系统报错msvcp120.dll丢失的解决方法。在这个信息爆炸的时代,我们每个人都可能遇到各种各样的问题,而这些问题往往需要我们去探索、去解决。今天,我将带领大家走进这个神秘的世界,一起寻找解决msvcp120.dll丢失…...
数据库备份工具有哪些
本文主要介绍下数据库备份工具。 数据库备份工具有很多种,以下是一些常见的数据库备份工具: mysqldump:MySQL官方提供的命令行备份工具,适用于MySQL和MariaDB数据库。它可以将数据库导出为SQL文件,方便进行备份和恢复…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...

aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
webpack面试题
面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...

高分辨率图像合成归一化流扩展
大家读完觉得有帮助记得关注和点赞!!! 1 摘要 我们提出了STARFlow,一种基于归一化流的可扩展生成模型,它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流(TARFlow&am…...

UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...