MySQL的增删改查(进阶)--上

news2024/9/28 9:24:18

1. 数据库约束

1.1 约束类型

        NOT NULL - 指示某列不能存储 NULL 值。

        UNIQUE - 保证某列的每行必须有唯一的值。

        DEFAULT - 规定没有给列赋值时的默认值。

        PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

        FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

        CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略 CHECK子句。

        下面将详细讲解一下以上所提到的约束类型; 

1.2 NOT NULL约束

        创建表时,可以指定某列不为空

        如下我们先创建一个chengyuan表,我们对里面的id列进行约束为不能为null;

         创建代码如下:

DROP TABLE IF EXISTS chengyuan;
CREATE TABLE chengyuan (
	id INT NOT NULL,
	score double,
	name VARCHAR(20),
	qq_mail VARCHAR(20)
);

        下图为我们创建的chengyuan表结构的明细,可以看到id行列是显示不可为null的

        我们通过给id列插入null数据试一下:

        报错显示:id列不能为null;

1.3 UNIQUE:唯一约束

        指定表中的score列为唯一的、不重复的

        下面我们重新设置一下表结构,对id进行约束为唯一约束,代码如下:

DROP TABLE IF EXISTS chengyuan;
CREATE TABLE chengyuan (
	id INT NOT NULL,
	score double UNIQUE,
	name VARCHAR(20),
	qq_mail VARCHAR(20)
);

        查看表结构进行可以看到,score列发生了明显变化,如下图所示:

         我们通过给score列插入相同的数据数据试一下:

        报错信息显示我们对于chengyuan表插入了相同的score数据;

1.4 DEFAULT:默认值约束

        指定插入数据时,若列为空,则为默认值

        重新设置一下chengyuan表,对name进行默认值约束,若为null,则为默认值:委婉待续

        且具体代码如下:

// 重新设置学生表结构
DROP TABLE IF EXISTS chengyuan;
CREATE TABLE chengyuan (
	id INT NOT NULL,
	sn INT UNIQUE,
	name VARCHAR(20) DEFAULT '委婉待续',
	qq_mail VARCHAR(20)
);

        查看表结构:

//Default(默认)列的name行不再为null,而为我们设置的默认值“委婉待续”

        进一步测试:

        我们在插入的时候,没有对name赋值,他会使用我们的默认值;

        注意事项:只适用于指定列插入数据,且该列不是受约束的列 

1.5 PRIMARY KEY:主键约束

        指定某一列为主键

         主键是关系表中记录的唯一标识,使用主键应注意以下几点:

        1、主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。这是唯一性原则。

        2、一个字段名只能在联合主键字段表中出现一次。

        3、联合主键不能包含不必要的多余字段。当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正确的。这是最小化原则
       

        创建主键代码具体如下:

// 重新设置学生表结构
DROP TABLE IF EXISTS chengyuan;
CREATE TABLE chengyuan (
	id INT PRIMARY KEY,
	sn INT UNIQUE,
	name VARCHAR(20) DEFAULT '委婉待续',
	qq_mail VARCHAR(20)
);

        查看表结构:

        我们可以简单理解为:主键是 NOT NULL 和 UNIQUE 的结合

q:主键不允许重复,怎样保证呢?

a:Mysql自身就有一种机制,叫做“自增主键”,意味着当前的id,不需要用户自己指定,可以交给数据库,让数据库自己分配。---数据库按照自增的方式自增。自增主键务必是整数。同时id也可以自己手动插进去,但是要确保插入的结果是不重复的。但是当手动之后自增主键后,id接着上个数字id自增。

1.6 FOREIGN KEY:外键约束

        外键用于关联其他表的主键或唯一键

        语法如下:

foreign key (字段名) references 主表(列)

        MySQL 外键约束(FOREIGN KEY是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。

        外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。

        主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。

         

        定义外键时,需要遵守下列规则:

        1、主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。

        2、必须为主表定义主键。

        3、主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

        4、在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。

        5、外键中列的数目必须和主表的主键中列的数目相同。

        6、外键中列的数据类型必须和主表主键中对应列的数据类型相同。

        下面通过实例来了解外键;

        1、创建队伍表teamss,id为主键

DROP TABLE IF EXISTS teams;
CREATE TABLE teams (
	id INT primary KEY auto_increment,
	name VARCHAR(20),
	desc1 VARCHAR(100)
);

        2、创建成员表chengyuan,一个成员对应一个队伍,一个队伍对应多个成员。使用id为主键,teamss_id为外键,关联队伍表与成员;

1.7 CHECK约束

        略(mysql5版本并不支持这个操作)

2. 表的设计

        下面主要讲解了表在后期设计时,用到的模型;

2.1 一对一

        像每一个人都有固定的身份证号

2.2 一对多

        一个班级里面存放多个学生的相关数据;

2.3 多对多

ps:本篇的内容就到这里了,如果大家感兴趣的话,就请一键三连哦!!!

        关于mysql进阶的内容委婉待续;

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

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

相关文章

3-10岁孩子数学发展里程碑

文章目录 3岁4岁5岁6-7岁(1-2年级)8-9岁(3-4年级)10岁(5年级) 当然,孩子的数学能力发展会因个体差异而有所不同,但以下是一个大致的指导,用来描述从3岁到10岁孩子在数学上…

HPM6750系列--第十一篇 Uart讲解(轮询模式)

一、目的 在介绍完GPIO的相关内容下一个必须介绍的就是uart了,因为串口一个主要用途就是用于调试信息打印。 HPM6750在uart的配置上也是相当炸裂,有17个串口;结合HPM6750的高主频高内存,完全可以作为一个串口服务器。 ​​​​​​…

Pycharm enable IntelliBot #patched后,工程无法打开

#本地环境# Pycharm:2023.12 Pro 对应robot pkg版本: robotframework 6.1 robotframework-databaselibrary 1.2.4 robotframework-pythonlibcore 4.1.2 robotframework-requests 0.9.4 robotframework-seleniumlibrary 6.1.…

新增工具箱管理功能、重构网站证书管理功能,1Panel开源面板v1.9.0发布

2023年12月18日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.9.0版本。 在这一版本中,1Panel引入了新的工具箱管理功能,包含Swap分区管理、Fail2Ban管理等功能。此外,1Panel针对网站证书管理功能进行了全面重构&…

移动云捐赠三款开源项目,加速新一代基础软件生态繁荣

随着云计算、大数据、人工智能等新领域新信息技术的发展,我国基础软件的自主可控极大程度地影响着产业链上下游的多样性和技术创新的发展空间。移动云作为中国移动涉云业务的主入口,一直坚持共享开源价值,积极推动中国开源软件生态的繁荣发展…

UE5 水材质注意要点

1、两个法线反向交替流动,可以去观感假的现象 2、水面延边的透明度低 3、增加水面延边的浪花 4、增加折射 折射要整体质量至少在High才有效果 改为半透明材质没有法线信息? 5、处理反射效果 勾选为true 找到这个放在水域 勾为false,即可有非…

基于ssm品牌手机销售信息系统论文

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于品牌手机销售信息系统当然也不能排除在外,随着网络技术的不断成熟,带动了品牌手机销售信息系统,它彻底…

05_Web框架之Django二

Web框架之Django二 学习目标和内容 1、能够使用类视图的写法 2、能够使用模板语言的相关语法 3、能够理解过滤器的作用 4、能够理解并使用模板继承 一、类视图 1、类视图介绍 视图是一个可调用的对象,它接收一个请求然后返回一个响应,这个可调用对象可…

phpmyadmin4.8.1远程文件包含漏洞 [GWCTF 2019]我有一个数据库1

打开题目 我们用dirsearch扫描一下后台看看 扫描结果如下 我们访问一下robots.txt看看,提示有phpinfo.php 那我们访问一下phpinfo.php 发现没有任何信息后我们转去看看phpmyadmin看看 成功访问到页面 在这里我们看到phpmyadmin的版本号是4.8.1 我们百度搜索一下看…

Java版企业电子招投标系统源代码,支持二次开发,采用Spring cloud微服务架构

招投标管理系统是一个集门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理于一体的综合性应用平台。它适用于招标代理、政府采购、企业采购和工程交易等业务的企业,旨在提高项目管理的效率和质量。该系…

linux搭建gitlab

gitlab的介绍 区别于github,github是面向互联网基于git实现的代码托管平台,gitlab是基于Ruby语言实现的git管理平台软件,一般用于公司内部代码仓库。 gitlab组成 Nginx 静态Web服务器Gitlab-workhorse 轻量级的反向代理服务器Gitlab-shell 用…

spring MVC概述和土门案例(无配置文件开发)

SpringMVC 1,SpringMVC概述2,SpringMVC入门案例2.1 需求分析2.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器…

Android 大版本升级变更截图方法总结

Android 大版本升级变更截图方法总结 一、Android R (11) 平台二、Android S (12) 平台三、Android U (14) 平台 Android 原生的截屏功能是集成在 SystemUI 中,因此我们普通应用想要获取截图方法,就需要研读下 SystemUI 截屏部分的功能实现。 一、Androi…

RocketMQ系统性学习-SpringCloud Alibaba集成RocketMQ以及消费收发实战

文章目录 Spring Cloud Alibaba 集成 RocketMQ 最佳实践集成依赖DashBoard消息收发实战 Spring Cloud Alibaba 集成 RocketMQ 最佳实践 SpringBoot 相对于 SSM 来说已经很大程度上简化了开发,但是使用 SpringBoot 集成一些第三方的框架,还是需要花费一些…

Nginx快速入门:安装目录结构详解及核心配置解读(二)

0. 引言 上节我们讲解了nginx的应用场景和安装,本节继续针对nginx的各个目录文件进行讲解,让大家更加深入的认识nginx。并通过一个实操案例,带大家来实际认知nginx的核心配置 1. nginx安装目录结构 首先nginx的默认安装目录为:…

【一】FPGA实现SPI协议之SPI协议介绍

【一】FPGA实现SPI协议之SPI协议介绍 一、spi协议解析 spi协议有4根线,主机输出从机输入MOSI、主机输入从机输出MISO、时钟信号SCLK、片选信号SS\CS 。 一般用于主机和从机之间通信。由主机发起读请求和写请求,主机的权限是主动的,从机是被…

web打印技术方案

在B/S应用系统开发中常常遇到表单打印需求,尤其是OA、ERP类的企业运营管理系统,打印的需求很常见,但WEB应用的打印一直以来是一个难题,特别是在应用中完成标签打印(如包裹面单、货运标签等)、票据打印&…

AI降重工具

WEB版 体验一下 from docx import Document import requestsdef call_api_and_get_content(content, prompt):api_url "http://XXXXXXXX/api?content" content promptresponse requests.get(api_url)if response.status_code 200:api_result response.text.re…

搭建知识付费平台?明理信息科技为你提供全程解决方案

明理信息科技saas知识付费平台 在当今数字化时代,知识付费已经成为一种趋势,越来越多的人愿意为有价值的知识付费。然而,公共知识付费平台虽然内容丰富,但难以满足个人或企业个性化的需求和品牌打造。同时,开发和维护…

安装centos 7及配置网卡、连接Xshell

1.点击新建虚拟机 2.默认自定义 3.默认选择17版本的 4.选择稍后安装操作系统 5.选择Linux 6.选择安装目录和自定义名称,安装时尽量新建一个文件夹 7.根据电脑配置,自定义处理器大小,这里是建议配置 8.最少2个G 9.使用NAT 注: VMn…