第4步---MySQL的约束

news2024/9/27 19:25:49

第4步---MySQL的约束

 

保证表中的数据的完整性和有效性的

不能为空

不能重复

主键

自增

非空

默认约束

0填充约束

外键约束

 

1.约束

1.1主键约束

  • 主键 primary key

  • 自增 auto_increment

  • 非空 not null

  • 默认约束 default

  • 唯一性unique

  • 0填充约束 zerefill

  • 外键约束 foreign key

1.简介:最重要的约束。约束一个列或者是多个列。可以更快的找个对应的行。唯一+非空约束。只能有一个主键。

2.关键字:primary key

3.默认唯一索引

1.2单列索引

-- =================================单列主键=================================
-- 创建新的表
DROP TABLE IF EXISTS student;
CREATE TABLE IF NOT EXISTS student(
id int  PRIMARY key,
name VARCHAR(20),
deptId int
)

-- 后面定义主键
DROP TABLE IF EXISTS student2;
CREATE TABLE IF NOT EXISTS student2(
id int  ,
name VARCHAR(20),
deptId int,
CONSTRAINT pk1 PRIMARY KEY(id)
)

主键作用

  • 重复主键

会出现下面的错误。

 不能为空值

 

 1.3联合主键

-- =================================联合主键=================================
-- 创建新的表 不指定外键的名称
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int ,
deptId int,
name VARCHAR(20),
PRIMARY KEY (id,deptId)
)



-- 创建新的表 指定外键的名称
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int ,
deptId int,
name VARCHAR(20),
CONSTRAINT  pk1  PRIMARY KEY (id,deptId)
)

作用:

  • 可以单个为空

  • 不能全部是重复。可以部分是重复的。

1.4修改表结构添加主键

-- =================================修改表=================================
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int ,
deptId int,
name VARCHAR(20)
)

-- 修改语句
-- 添加单个主键
ALTER TABLE student3 ADD PRIMARY KEY (id);

-- 添加多个主键
ALTER TABLE student3 ADD PRIMARY KEY (id,deptId);

1.5删除主键约束


-- =================================删除主键=================================
-- 单列和组合主键都是这个删除的方法
ALTER TABLE student3 DROP PRIMARY KEY;

虽然删除了主键但是不为空的约束还是存在的。

1.6自增长约束

1.设置自增

-- =================================自增长约束=================================
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int PRIMARY KEY auto_increment,
deptId int,
name VARCHAR(20)
)

 

  • 增长的话增长到这个类型的最大的值

  • 必须是整型

  • 可以执行开始的值和步长

2.设置初始的值

-- 初始值
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int PRIMARY KEY auto_increment ,
deptId int,
name VARCHAR(20)
) auto_increment =100;


-- 采用修改表的形式
-- 采用修改表的形式修改自增的初始值
ALTER TABLE student3 auto_increment =200;

delete删除数据的时候还是从原先的基础上继续进行自增

但是truncate不是从1考试进行自增的。

2.非空约束

设置表的字段不能为空

-- =================================非空约束=================================
-- 创建表的时候设置
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int PRIMARY KEY auto_increment ,
deptId int  ,
name VARCHAR(20)  NOT NULL
)

-- 修改表的时候添加
ALTER TABLE student3  MODIFY deptId VARCHAR(20)  NOT NULL;

-- 删除的时候就去掉就行
ALTER TABLE student3  MODIFY name VARCHAR(20)  ;
	


 

3.默认值约束

-- =================================默认值约束=================================
-- 创建表的时候设置
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int PRIMARY KEY auto_increment ,
deptId int  UNIQUE,
name VARCHAR(20)  NOT NULL DEFAULT '用户名'
)

-- 修改表的时候添加(默认删除重新加)
ALTER TABLE student3  MODIFY name  VARCHAR(20)  NOT NULL   DEFAULT '用户名修改';


-- 删除默认值约束
ALTER TABLE student3  MODIFY name  VARCHAR(20)  NOT NULL ;

4.零填充约束

插入数据的时候当前字段的值的长度小于定义的长度的时候,就会在值得前面补上对应得0

zerefill默认为int(10)

默认加了无符号得限制。数值范围是原先得两倍

 

-- =================================默0填充约束=================================
-- 创建表的时候设置
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int ZEROFILL  auto_increment,
deptId int  UNIQUE,
name VARCHAR(20)  NOT NULL DEFAULT '用户名',
PRIMARY KEY  (id)
)

-- 删除
ALTER TABLE student3 MODIFY id INT;


 

 下面是添加得数据

 以上所有的操作都是可以在navicat可视化界面中进行找到并进行设置的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于docker搭建owncloud Harbor 构建镜像

环境介绍:ContenOS7.9 docker17.12.1-ce 使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 docker pull owncloud #拉取镜像 docker pull mysql5.6 创建容器 docker run --name owncloud-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORDroot …

Php“牵手”淘宝商品快递费用数据采集方法,淘宝API接口申请指南

淘宝天猫商品快递费用接口 API 是开放平台提供的一种 API 接口,它可以帮助开发者获取商品的详细信息,包括商品的标题、描述、图片,发货地址,快递费用,区域ID,等信息。在电商平台的开发中,快递费…

stm32f407 ADC学习记录

主要特性: ● 可配置 12 位、10 位、8 位或 6 位分辨率 ● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断 ● 单次和连续转换模式 ● 用于自动将通道 0 转换为通道“ n ”的扫描模式 ● 数据对齐以保持内置数据一致性(16位的数据…

开车适合戴什么款式的耳机,适合开车时用的蓝牙耳机推荐

骨传导耳机在运动和户外活动中也有很大的优势。传统耳机因为与耳朵紧密贴合,容易受到汗水和湿气的侵蚀,导致损坏。而骨传导耳机由于不直接接触耳朵,可以避免这个问题,更加耐用可靠。而骨传导耳机的工作原理使得耳朵仍然可以感受到…

恒运资本:债券停牌什么意思?债券停牌利好还是利空?

债券是社会各类经济主体比方政府、企业、银行等为筹集资金而向投资者出具的,许诺按必定利率定期付出利息并到期偿还本金的债权债款凭据。那么,债券停牌什么意思?债券停牌利好还是利空?恒运资本为大家预备了相关内容,以…

jmeter进行业务接口并发测试,但登录接口只执行一次

业务接口性能测试,往往都是需要登录,才能请求成功,通常只需要登录一次,再对业务接口多次并发测试。 在测试计划中,添加setUp线程组 把登录请求放入到该线程组中,设置HTTP信息头,JSON提取(提取登…

动态数据掩藏应用

动态数据掩藏是一种数据保护技术,用于隐藏敏感数据或隐私信息。它可以用于各种应用场景,包括数据共享、数据分析、云计算等。 动态数据掩藏应用可以通过对数据进行加密、脱敏、匿名化等处理,来保护数据的隐私性。常见的动态数据掩藏应用包括以…

hbuilderx打包苹果证书获取步骤

简介: 目前app开发,很多企业都用H5框架来开发,而uniapp又是这些h5框架里面最成熟的,因此hbuilderx就成为了开发者的首选。然而,打包APP是需要证书的,那么这个证书又是如何获得呢? 生成苹果证书相对复杂一些…

电脑找不到MSVCR120.dll怎么办?MSVCR120.dll是什么?

在我们的日常生活和工作中,电脑故障是难以避免的问题。而MSVCR120.dll文件是Windows系统中的一个重要组件,如果出现损坏或丢失,可能会导致程序无法正常运行,这个问题可能是由于系统文件损坏、病毒感染等原因导致的。因此&#xff…

Dockerfile搭建LNMP运行Wordpress平台

Dockerfile搭建LNMP运行Wordpress平台 一、项目1.1 项目环境1.2 服务器环境1.3 任务需求 二、Linux 系统基础镜像三、Nginx1、建立工作目录2、编写 Dockerfile 脚本3、准备 nginx.conf 配置文件4、生成镜像5、创建自定义网络6、启动镜像容器7、验证 nginx 四、Mysql1、建立工作…

安装svn插件集成myeclipse2014

第一种: 直接借助myeclipse2014自己的help,当然外网这比较慢了,但是能解决问题的办法就是好办法,能更有效的就是更好的办法,得留着啊。 1.打开myeclipse的help---install from site http://subclipse.tigris.org/upd…

【汇编语言】6、Debug的使用

文章目录 Debug 是什么?寄存器可以做什么?1、用R命令查看、改变CPU寄存器的内容;2、用D命令查看内存中的内容; Debug 是什么? 1、Debug 是Dos系统中的调试工具,也可以运行在 Windows 的实模式下。 2、使用…

SpringBoot开发效率必备工具—lombok

由于编码过程中,以上都是一些重复动作,模板代码。每次都手动生成既浪费时间,又增加了大量的冗余代码。我们可以使用lombok插件来解决这个问题。使我们的编码效率得到大幅度的提高! 一、安装 lombok maven仓库官方地址: Maven R…

赴日IT工作 平时接私活开发能去日本搞个IT公司吗?

有小伙伴问,我平时也会接一些私活开发项目,可以直接去日本搞一个IT公司吗?首先给出まとめ(总结),如果你没有日本项目经验的话建议先找个会社试试,如果有项目经验的话,那你把前老板的…

leetcode:字符串相乘(两种方法)

题目: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 "2", nu…

在线转换器有哪些优势?在线Word转PDF操作分享

我们如果想要将两者不同格式文件进行格式转换,就需要下载安装转换器。如果出门带的设备没有安装转换软件客户端,就无法使用,会比较麻烦。现在有了在线转换工具,只需要打开相应的网页就可使用,那么在线Word转PDF的操作是…

接口自动化yaml文件读取与写入

前言 在走进yaml文件之前大家应该都很想知道他是用来干嘛的? 是的是的,他是用来做接口自动化测试的。 我们一起来学习他吧!——(一定要收藏带走哦❤) 1、yaml文件有什么作用呢? ①可作为配置文件使用—…

基于java SpringBoot+Vue+html 的大学生体质测试管理系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 简介效果图系统首页模块管理员功能模块用户功能模块教师功能模块 部分源码源码下载地址 简介 本…

如何恢复指定电脑分区数据?数据恢复有它

如何恢复指定电脑分区数据?恢复指定电脑分区数据通常是指在电脑硬盘上的某个特定分区中丢失的数据,经过一定的操作将这些数据重新找回的过程。 图片来源于网络,如有侵权请告知 这通常涉及使用恢复软件来扫描和检测分区中丢失的文件&#xf…

第六次作业 运维高级 docker容器

1.安装docker服务,配置镜像加速器 卸载旧版本 yum remove docker docker-common docker-selinux docker-engine使用yum源安装 (1)安装Docker所需要的一些工具包 yum install -y yum-utils(2) 建立Docker仓库 (映射…