开始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)
);

  

  

 

 

 

非空约束

  

唯一约束

 

默认约束

零填充约束

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/106132.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode | 开发神器vscode自定义用户代码片段

目录 一、增加二、删除三、语法四、变量 一、增加 点击&#xff1a;左下角设置齿轮按钮——>用户代码片段 点击&#xff1a;新建全局代码片段文件 输入文件名 会出现如下界面 配置以下语句 "cls": {"scope": "javascript,typescript",…

Linux学习之Ubuntu 20.04在github下载源码安装Openresty 1.19.3.1

参考的博文&#xff1a;《在 Ubuntu 上使用源码安装 OpenResty》 《OpenResty 安装安装详解-Ubuntu》 《Linux学习之CentOS 7源码安装openresty》 https://openresty.org/en/download.html是官网下载网址&#xff0c;页面往下拉有下载的链接。 https://github.com/openresty…

研磨设计模式day09原型模式

目录 场景 代码实现 有何问题 解决方案 代码改造 模式讲解 原型与new 原型实例与克隆出来的实例 浅度克隆和深度克隆 原型模式的优缺点 思考 何时选用&#xff1f; 相关模式 场景 代码实现 定义订单接口 package com.zsp.bike.day08原型模式;/*** 订单的接口*…

06-Numpy基础-线性代数

线性代数&#xff08;如矩阵乘法、矩阵分解、行列式以及其他方阵数学等&#xff09;是任何数组库的重要组成部分。 NumPy提供了一个用于矩阵乘法的dot函数&#xff08;既是一个数组方法也是numpy命名空间中的一个函数&#xff09; x.dot(y)等价于np.dot(x, y) 符&#xff08;…

【C++设计模式】用简单工厂模式实现按汽车重量输出汽车类型

2023年8月24日&#xff0c;周四凌晨 #include<iostream>class CarType{ public:virtual std::string getType()0; };class MiniCar:public CarType{ public:std::string getType() override{return "小型车";}; };class MidSizeCar:public CarType{ public:std…

管家婆往来分析功能介绍

往来分析是企业管理的重要工具之一&#xff0c;主要用于监控和查询与往来单位的业务往来情况&#xff0c;包括进货金额、付款金额、销售金额、回款情况、此前应收应付、应收应付余额、应收应付限额及其超限余额等。通过往来分析&#xff0c;企业可以更好地了解和控制与往来单位…

mysql 默认的4个数据库 介绍

mysql 存储MySQL的用户账号和权限信息&#xff0c;一些存储过程、事件的定义信息 一些运行过程中产生的日志信息&#xff0c;一些帮助信息以及时区信息等 information_schema 存储Mysql服务器 维护的所有其它数据库的信息&#xff0c;比如有哪些表、哪些视图、哪些触发器、哪…

Spring 更简单的读取和存储对象

前言&#xff1a; &#x1f4d5;作者简介&#xff1a;热爱编程的小七&#xff0c;致力于C、Java、Python等多编程语言&#xff0c;热爱编程和长板的运动少年&#xff01; &#x1f4d8;相关专栏Java基础语法&#xff0c;JavaEE初阶&#xff0c;数据库&#xff0c;数据结构和算法…

诚迈科技子公司智达诚远与Unity中国达成合作,打造智能座舱新时代

2023 年 8 月 23 日&#xff0c;全球领先的实时 3D 引擎 Unity 在华合资公司 Unity 中国举办发布会&#xff0c;正式对外发布 Unity 引擎中国版——团结引擎&#xff0c;并带来专为次世代汽车智能座舱打造的团结引擎车机版。发布会上&#xff0c;诚迈科技副总裁、诚迈科技子公司…

行业追踪,2023-08-24

自动复盘 2023-08-24 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

研磨设计模式day12迭代器模式

目录 场景 解决方案 解决思路 代码示例 代码改造 Java实现迭代器 迭代器模式的优点 思考 何时选用 场景 大公司收购了一个小公司&#xff0c;大公司的工资系统采用List来记录工资列表&#xff0c;而小公司是采用数组&#xff0c;老板希望通过决策辅助系统来统一查看…

opencv案例03 -基于OpenCV实现二维码生成,发现,定位,识别

1.二维码的生成 废话不多说&#xff0c;直接上代码 # 生成二维码 import qrcode# 二维码包含的示例数据 data "B0018" # 生成的二维码图片名称 filename "qrcode.png" # 生成二维码 img qrcode.make(data) # 保存成图片输出 img.save(filename)img.sh…

C#矩阵XY排序

矩阵XY快速排序 using MyVision.Script.Method;public class MyScript : ScriptMethods {//struct MOTIONPOSXY_S{public double Pos_x;public double Pos_y;};//脚本执行该方法public bool Process(){//try{//脚本代码写在下方 List<double> PointX GetDoubleList(&qu…

搭建开发环境-Mac

概述 上一篇搭建开发环境-WSLUbuntu 记录了WSL 和Ubuntu 下开发环境的搭建。这一篇就说下Mac开发环境的搭建。 就像很多人误以为Mini 是专为女孩子设计的高颜值车&#xff0c;其实是一辆极其hardcore 的拉力车一样。 很多人都被Mac 那高颜值蒙蔽了&#xff0c;其实这是一台生产…

构造函数内的方法 直接写在构造函数内部 与 写在prototype上 的区别

文章目录 前言区别总结 前言 以前没注意过, 去创建一个构造函数的时候, 方法都是直接写在函数内的. 在构造函数需要多次实例化的情况下有缺点, 不过幸好以前项目里的构造函数也不需要多次实例化, 缺点没有生效. 区别 为了比较, 先在构造函数内部直接书写方法, 查看实例化结果…

Kubernetes 使用 Rancher 管理

K8S集群管理工具 只能管理单个K8S集群 kubectl命令行管理工具 dashboard&#xff08;K8S官方的UI界面图形化管理工具&#xff09; &#xff08;管理多集群很麻烦&#xff0c;切换不同集群每次需要更改kube-config文件[kubectl配置文件]&#xff0c;如果kubeadm部署每次都需…

item_search_img-按图搜索淘宝商品(拍立淘)

一、接口参数说明&#xff1a; item_search_img-按图搜索淘宝商品&#xff08;拍立淘&#xff09;&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_search_img 名称类型必须描…

iconfont 图标在vue里的使用

刚好项目需要使用一个iconfont的图标&#xff0c;所以记录一下这个过程 1、iconfont-阿里巴巴矢量图标库 这个注册一个账号&#xff0c;以便后续使用下载代码时需要 2、寻找自己需要的图标 我主要是找两个图标 &#xff0c;一个加号&#xff0c;一个减号&#xff0c;分别加入到…

华为云渲染实践

// 编者按&#xff1a;云计算与网络基础设施发展为云端渲染提供了更好的发展机会&#xff0c;华为云随之长期在自研图形渲染引擎、工业领域渲染和AI加速渲染三大方向进行云渲染方面的探索与研究。本次LiveVideoStackCon 2023上海站邀请了来自华为云的陈普&#xff0c;为大家分…

[系统] 电脑突然变卡 / 电脑突然** / 各种突发情况解决思路

今天来公司办公&#xff0c;开机之后发现电脑出现各种问题&#xff0c;死机、卡顿、点什么都加载&#xff0c;甚至开一个文件夹要1分钟才能打开&#xff0c;花了2个小时才解决&#xff0c;走了很多弯路&#xff0c;其实早点想通&#xff0c;5分钟就能解决问题&#xff0c;所以打…