MySQL表操作:提高数据处理效率的秘诀(进阶)(1)

news2024/12/1 0:40:34

💕**“生命不在于相信奇迹,而在于创造奇迹。”——朱学恒**💕
🐼作者:不能再留遗憾了🐼
🎆专栏:MySQL学习🎆
🚗本文章主要内容:MySQL对表操作进阶。数据库约束、表的设计、新增,后续会更新进阶表的查询🚗
在这里插入图片描述

文章目录

  • 前言
  • 1.数据库约束
    • NULL约束
  • UNIQUE:唯一约束
    • DEFALUT:默认值约束
    • primary key:主键约束
    • foreign key:外键约束
    • check约束
  • 2.表的设计
    • 一对一
    • 一对多
    • 多对多
  • 3.新增

前言

前面我们已经介绍过初识MySQL以及MySQL对库和对表操作(初阶),那么今天我将为大家分享MySQL对表操作(进阶)。如果大家觉得对你有帮助的话。记得点个赞哦。😊

1.数据库约束

NULL约束

指定某列不能存储NULL值。

在之前我们创建一个表的时候,我们会发现除了我们指定的表名、列名和列名对应的数据类型外,还会额外展现其他的信息,那么这些信息代表什么意思呢?我将会为大家一一介绍。
在这里插入图片描述
NULL这一列的YES说明,该列内容可以为null,那么如果我们不想让该列出现null该怎么办呢?

NOT NULL 使得指定列的内容不能为null。

create table 表名 (列名 类型 not null);
 create table student (id int not null,name varchar(20));
 desc student;
 insert into student values (1,'张三');
  insert into student values (null,'李四');

在这里插入图片描述
当我们使用 NOT NULL 约束了列之后,如果插入该列的内是null就会报错

UNIQUE:唯一约束

在日常很多情况下,我们会要求数据的唯一性,也就是说不出现重复的数据,而在MySQL中也可以对表操作保证数据的唯一性。

create table 表名 (列名 类型 unique);

UNIQUE唯一约束会在插入数据之前检测列中的数据是否已经存在,如果存在就不能插入,不存在就允许插入。

create table student (id int unique,name varchar(20));
desc student;
insert into student values (1,'张三');
insert into student values (1,'李四');

在这里插入图片描述

key中的UNI表示该列存在UNIQUE唯一约束,该列不能出现重复数据。

DEFALUT:默认值约束

在这里插入图片描述
在这里插入图片描述

当进行指定列插入的时候,那么那些未插入数据的列的内容将会被默认DEFAULT为null,如果我们不想默认值为null怎么办呢?

create table 表名 (列名 类型 default 默认值);

DEFAULT设置默认值

create table student (id int,name varchar(20) default '无名氏');
desc student;
insert into student (id) values (1);
select * from student;

在这里插入图片描述

primary key:主键约束

primary key主键约束就类似于我们的身份证和学生证,是每个人所特有的,也就是说primary key是每行的关键数据,它不可为null,也不可重复。 一个表中只能有一个主键

create table 表名 (列名 类型 primary key);
create table student (id int primary key,name varchar(20));
desc student;
insert into student values (null,'张三');
 insert into student values (1,'张三');
  insert into student values (1,'李四');

在这里插入图片描述

primary key 通常搭配着 auto_increment 使用,表示自增主键。如果我们想要使用自增主键,只需要在插入数据的时候插入的内容是null就行了。

 create table student (id int primary key auto_increment,name varchar(20));
 desc student;
 insert into student values (null,'张三');
 insert into student values (null,'李四');
 select * from student;

在这里插入图片描述

primary key auto_increment 自增的规律是:当前面数据都为null时,从1开始自增,当前面有数据不为null时,从前面数据的最大值开始自增。

insert into student values (100,'王五');
insert into student values (4,'赵六');
insert into student values (null,'猫猫');

在这里插入图片描述

foreign key:外键约束

在学校中,我们都知道每个学生都有对应的班级,同样在MySQL中也可以将这种类似的关系体现出来。

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

create table 表名 (列名 类型 foreign key (列名) references 另一个表名(关联的列名));
create table class (classId int primary key auto_increment,name varchar(20));
create table student (studentId int primary key auto_increment,name varchar(20),classId int,
     foreign key (classId) references class(classId));
desc student;

在这里插入图片描述

既然是学生,那么肯定要先有班级然后学生才能进入班级,并且学生不能进入不存在的班级。

insert into class (null,'高三1班');
insert into class values (null,'高三2班');
insert into class values (null,'高三3班');
insert into student values (null,'张三',1);
insert into student values (null,'李四',4);

在这里插入图片描述
在这里插入图片描述
当插入的数据在外键对应的列中不含有时,就会报错。并且在以上的外键关系中,class为父表,student为子表,子表的插入和删除都受到父表的约束,同时父表的删除也受到子表的约束。

update student set classId = 5;
delete from class where classId = 1;

在这里插入图片描述
子表的修改,对应的列修改后的数据还是需要在父表中存在。父表删除的时候,如果子表与其有关联,那么就删除不了,只能先删除掉子表的对应行,然后再删除父表。

check约束

check约束在本篇文章就不过多解释了,大家有兴趣的话,可以自己去了解了解哦。

2.表的设计

一对一

两者之间是一对一的关系

在这里插入图片描述

一对多

一个人可以拥有多个宠物,但是一个宠物不可以有多个主人。
在这里插入图片描述

多对多

两者之间除了他们之间有关系外,他们还可以与其他的事物具有其他关系。
在这里插入图片描述

3.新增

如果我们想要从将一个表中的数据复制到另一个类型相同的表当中,我们可以在查询的同时就插入数据,这样就极大地提高了效率。

insert into 表名 select (列名) from 另一个表名;

需要注意的是,当从一个表中向另一个表中插入数据时,表的结构应该相同或兼容。也就是说,目标表中的所有列都应该存在于源表中,并且具有相似的数据类型和长度,否则插入将会失败。
🙌 整列复制插入

create table student (id int,name varchar(20));
insert into student values (1,'张三');
insert into student values (2,'李四');
insert into student values (3,'王五');
select * from student;
create table student1 (id int,name varchar(20));
insert into student1 select * from student;
select * from student1;

在这里插入图片描述
🙌指定列复制插入

insert into student1 (name) select name from student;
select * from student1;

在这里插入图片描述

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

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

相关文章

Node.js从基础到项目实践

摘要: Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它允许开发者使用JavaScript构建高性能的服务器端应用程序。本文将介绍Node.js的基础知识,并通过项目实践的方式帮助读者深入理解Node.js的用法和功能。从基础到项目实践&#x…

建造者模式的运用

文章目录 一、建造者模式的运用1.1 介绍1.2 建造者模式结构1.3 建造者模式类图1.4 组装自行车案例1.4.1 组装自行车案例类图1.4.2 代码 1.5 优缺点1.6 使用场景1.7 模式扩展1.7.1 原始代码1.7.2 重构代码 一、建造者模式的运用 1.1 介绍 将一个复杂对象的构建与表示分离&…

Linux系统下SQLite基础使用命令

1.选择数据库 sqlite 数据库.db 当出现sqlite> 表示成功 2.列出数据库中的表 .table 这一步是在上一步成功选择数据库的基础上进行的, 当出现event, 表示event-20230407这个数据库中有且只有一张表, 表名叫event 3.查询表中数据 select * from 表名; (此处注意记得一定…

【假捻发加工生产工单下达】

假捻工单是需要下到工作中心的,比如A01机台或者A02机台。 所以下工单之前要先查询A01机台上的最新工单量。 查询结果如下: 她会按照创建时间进行排序,后下的工单排在最前面 (如果下了个新工单,那么前一个工单的执行状态会自动改为关闭。) 因此查询结果,最上面的工单执…

外贸跨境商城app,多语言,多货币,跨境电商系统开发

外贸跨境商城app是一种在线购物平台,专门为海外买家提供跨境电商服务。用户可以在该app上浏览和购买来自全球各地的商品,以及与卖家进行沟通和交流。这些商品可能包括服装、鞋子、家居用品、电子产品等等,价格也跨越了各个层次。外贸跨境商城…

正确认识糖化学试剂:120173-57-1,Fmoc-Ser(Ac3GalNAcα)-OH的参数和保存方法

(文章资料汇总来源于:陕西新研博美生物科技有限公司小编MISSwu)​ 【中文名称】N-芴甲氧羰基-O-(2-乙酰氨基-3,4,6-三-O-乙酰基-2-脱氧-α-D-吡喃半乳糖基)-L-丝氨酸 【英文名称】 Fmoc-Ser(Ac3GalNAcα)-OH 【结 构 式】 【CAS号】120173-…

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(四):拖拽式GUI开发

前言: 如何做出炫酷的嵌入式GUI界面?GUI(Graphical User Interface) :图形化操作界面。新能源汽车对于炫酷GUI的需求也是越来越强烈。 AWTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C语言开发的GUI框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松…

2docker

一、引言 1.1 环境不一致 我本地运行没问题啊:由于环境不一致,导致相同的程序,运行结果却不一致。 1.2 隔离性 哪个哥们又写死循环了,怎么这么卡:在多用户的操作系统下,会因为其他用户的操作失误影响到你自…

基于Java+SpringBoot制作一个校园圈子小程序

制作一个校园圈子小程序,有效连接信息供需双方,用户可获取和发布需求信息、参与互动交流,适用于同校、同城、社区交流、客户互动、同学/老师注册发布信息等场景。 微信小程序实战开发专栏 一、小程序1.1 项目创建1.2 首页轮播图九宫格

Golang语法控制初识

Golang语法控制初识 采用文章 https://www.runoob.com/go/go-operators.html程序流程控制 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控 制语句。 顺序控制分支控制循环控制 5.2 顺序控制 顺序控…

数智人力:现代企业解决人才短缺的新途径

后疫情时代,市场人才供需持续扩张。受疫情影响,人才市场供给总量较为充裕,但满足企业需求、符合业务调整方向的核心人才却仍然紧俏。供需双方在行业、地域以及岗位技能上往往存在错位,就业的结构性矛盾突出。 大型企业在解决人才…

数据结构与算法总结——Python版

目录 数据结构相关知识一.算法1. 哈希表是什么?2. 什么是时间复杂度?3. 空间复杂度4. 递归4. 查找4.1、顺序查找4.2. 二分查找 5. 排序5.1. 冒泡排序5.2. 选择排序5.3. 插入排序5.4. 快速排序5.5. 堆排序5.5.1.树5.5.2. 堆 5.6. 归并排序5.7. 希尔排序5.…

基于云计算的检验所云LIS系统源码(两癌筛查)

一、云LIS系统是基于云计算和使用B/S架构开发的实验室(检验科)管理系统,整个系统的运行基于WEB层面,只需要在对应的工作台安装一个浏览器访问。SaaS服务,无需部署,开通账号接口快速入门使用,集齐…

代理模式(CGLIB和JDK)

文章目录 一. 简介1. 生活中的代理案例2. java中代理模式的应用3. 什么是代理模式 二. 如何实现代理1. 简介2. 静态代理3. 动态代理 三. JDK中的动态代理1. 介绍2. 测试3. 原理分析4. 原理图 四. CGLIB中的动态代理1. 简介2. 案例3. 底层原理分析 一. 简介 1. 生活中的代理案例…

什么是Odoo ERP:部署方式、业务集成、成本投入、发展与未来

ERP部署的类型 如何部署ERP 系统?通过多年的发展,ERP系统的部署方式更加多样化,包括公有云或私有云部署、本地部署或整合不同环境的混合部署场景,企业可根据自身条件与应用场景加以选择。下面介绍了每种部署模式的主要优势&#…

kafka系统的CAP保证

kafka系统的CAP保证 CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中: 一致性(Consistency)可用性(Availability)分区容错性(Partition tolerance) 最多满足其中的两个特性。…

Window winget 包管理工具安装踩坑记录

一、简介 想在 window 上安装一个好用的包管理工具,mac 上用 homebrew, window 则考虑再三,使用官方提供的 winget。 winget 官方使用文档。 二、安装流程与踩坑记录 按 win x,选择 Powershell(管理员) 方式打开 c…

【严重】Linux kernel ksmbd 模块远程代码执行漏洞

漏洞描述 ksmbd 是 Linux kernel 的一个模块,用于提供 SMB(Server Message Block)文件共享协议的支持,SMB2_TREE_DISCONNECT 命令用于断开客户端与服务器之间的文件共享连接。 Linux kernel 受影响版本中,由于 ksmbd…

SpringBoot Filter使用

filter就是其他框架中的中间件,在SpringBoot启动时有很多默认加载的Filter 例如: characterEncodingFilterhiddenHttpMethodFilterhttpPutFormContentFilterrequestContextFilter Filter存在一个优先级, 数值越小越靠前 这有两个常量用来表顺顺序 Ordered.HIGHEST_PRECEDENCE…

webpack处理样式资源(css less sass scss)

Webpack 本身是不能识别样式资源的,所以我们需要借助 Loader 来帮助 Webpack 解析样式资源 一、处理css样式资源 去项目根目录新建css文件夹,在css文件夹下新增index.css文件,内容如图: 在src-main.js中引入css->index.css文…