【MySQL】表的增删改查——MySQL基本查询、数据库表的创建、表的读取、表的更新、表的删除

news2024/10/2 16:27:26

文章目录

  • MySQL
  • 表的增删查改
    • 1. Create(创建)
      • 1.1 单行插入
      • 1.2 多行插入
      • 1.3 替换
    • 2. Retrieve(读取)
      • 2.1 select查看
      • 2.2 where条件
      • 2.3 结果排序
      • 2.4 筛选分页结果
    • 3. Update(更新)
      • 3.1 更新单个数据
      • 3.2 更新多个数据
    • 4. Delete(删除)

MySQL

在这里插入图片描述

  

表的增删查改

  CURD是一个数据库技术中的缩写词,它代表Create(创建),Retrieve(读取),Update(更新),Delete(删除)操作。这四个基本操作是数据库管理的基础,用于处理数据的基本原子操作。
  

1. Create(创建)

  在MySQL中,Create操作是十分重要的,它帮助用于创建数据库对象,如数据库、表、索引等并且允许用户定义新的数据结构和存储方式。我们常使用create databases [库名]; 创建数据库,create table [表名]; 创建数据表,insert into [表名] values(数据); 创建单条数据。
  

1.1 单行插入

  insert 语句在 MySQL 中用于向数据库表中插入新的记录。

insert into 表名 (1,2,3, ...)  
values(1,2,3, ...);

  如果你想要为表中的每一列都插入值(即列的顺序与表中的定义一致),我们直接省略列名:

insert into 表名  
values(1,2,3, ...);

  

创建一张学生数据表,包括学号,姓名,电话等基本信息:

mysql> create table test1(
    -> id int unsigned primary key auto_increment,
    -> num int not null,
    -> name varchar(20) not null,
    -> tele varchar(20)
    -> );

  对于上面的表中,id代表学号,每一个学生有且只有唯一的一个,所以我们设计为主键,同时设置为自增长,下面的num和name设置为不为空类型。

  

查看表的结构:

desc test1;

在这里插入图片描述
  

连续插入三个单条数据并且打印查看:

mysql> insert into test1 values(1,101,'张三',15811);
mysql> insert into test1 values(2,102,'李四',NULL);
mysql> insert into test1(num,name,tele) values(103,'王五',18888);
select * from test1;

在这里插入图片描述

  

1.2 多行插入

  insert语句可以一次性插入多行数据通常我们只需要在values子句中列出多组值来实现的,每组值之间用逗号分隔。

insert多行插入并且打印:

mysql> insert into test1 (num,name,tele) values
    -> (104,'赵六',12345),
    -> (105,'小七',54321);
select *from test1;

在这里插入图片描述
  

  确保我们插入的数据和列的数据匹配,如果列中not null,我们需要提供值,除非有默认值,我们要注意由于插入的数据是否会因为主键或者唯一键对应的值已经存在而导致插入失败。

对应主键已经有唯一值导致插入失败:

mysql> insert into test1 values(1,106,'老八',null);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

在这里插入图片描述

  

1.3 替换

  replace 语句在 SQL 中是一个特殊的语句,它结合了 insert 和 update 的功能。既可以插入数据也可以替换数据。

  插入数据:如果 replace 语句中指定的数据在表中不存在,它会执行一个插入操作,将数据添加到表中。

  替换数据:如果数据已经存在于表中(通常是因为主键或唯一键冲突),replace 语句会先删除原有的数据行,然后插入新的数据行。

replace into 表名 (1,2,3, ...)  
values(1,2,3, ...);

  总而言之:主键或者唯一键没有冲突,则直接插入;主键或者唯一键如果冲突,则删除后再插入。

  

替换原有的主键数据并插入新的数据:

mysql> replace into test1 values(1,106,'老八',null);

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

在这里插入图片描述

  

2. Retrieve(读取)

  Retrieve操作在数据库应用中主要用于从数据窗口或数据存储(Datastore)中检索数据。常用的有select进行数据的显示,或者其他如where等进行数据的筛选。
  

2.1 select查看

  SELECT是SQL语言中的一个核心命令,用于从数据库表中检索数据。

[distinct]{* | {column[,column]...}
[from table_name]
[where...]
[order BY column[ASC|DESC],...]
limit...

  distinct:这个关键字用于去重。

  * 或 {column[,column]…}:这部分指定了要检索的列。* 表示选择所有列,而 {column[,column]…} 则允许您指定一个或多个列名。

  from table_name:这部分指定了要从哪个表中检索数据。

  where…:这是一个可选的子句,用于过滤结果集,只返回满足指定条件的行。

  order BY column[ASC|DESC],…:这部分用于对结果集进行排序。 您可以指定一个或多个列,以及排序的方向(升序 ASC 或降序 DESC)。

  limit…:这个子句用于限制返回的记录数。 它通常与分页查询一起使用。

创建学生成绩表:

mysql> create table test2(
    -> id int unsigned primary key auto_increment,
    -> name varchar(20) not null,
    -> chinese float default 0.0 comment '语文成绩',
    -> math float default 0.0 comment '数学成绩',
    -> english float default 0.0 comment '英语成绩'
    -> );

查看表结构:

desc test2;

在这里插入图片描述
  

向表中插入数据并且打印:

mysql> insert into test2(name,chinese,math,english) values
    -> ('张三',70,80,59),
    -> ('李四',72,90,65),
    -> ('王五',60,65,90),
    -> ('赵六',64,77,80),
    -> ('刘七',77,82,78),
    -> ('小红',90,43,90),
    -> ('李华',79,75,52);

  通常情况下不建议使用 * 进行全列查询,查询的列越多,意味着需要传输的数据量越大;可能会影响到索引的使用。

select * from test2;

在这里插入图片描述
  

指定列打印信息(id,name,chinese):

select id,name,chinese from test2;

在这里插入图片描述
  

打印的字段可以是一个表达式:

select id,name,chinese+math+english from test2;

在这里插入图片描述
  

给打印字段的表达式重新命名:

select id,name,chinese+math+english 总分 from test2;

在这里插入图片描述
  

将打印出来的英文成绩去重:

select distinct english from test2;

在这里插入图片描述
  

2.2 where条件

  在MySQL的select语句中,where子句用于指定查询条件,只有满足这些条件的记录才会出现在结果集中。where子句的主要目的是从数据表或查询结果中过滤出符合条件的行。

  where子句后面可以跟随一个或多个条件,这些条件可以是算术表达式、逻辑表达式或比较运算符的组合。

  

  比较运算符:

运算符说明
<,<=, >, >=大于,大于等于,小于,小于等于
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>不等于
between a0 and a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
in (option, …)如果是 option 中的任意一个,返回 TRUE(1)
is null是 NULL
is not null不是 NULL
like模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

  

  逻辑运算符:

运算符说明
and多个条件必须都为 TRUE(1),结果才是 TRUE(1)
or任意一个条件为 TRUE(1), 结果为 TRUE(1)
not条件为 TRUE(1),结果为 FALSE(0)

  

输出所有英语成绩小于60分的信息:

select name,english from test2 where english<60;

在这里插入图片描述
  

输出所有英语成绩大于等于60小于等于89的成绩:

select name,english from test2 where english>=60 and english<=89;
select name,english from test2 where english between 60 and 89;

在这里插入图片描述

在这里插入图片描述
  

输出数学成绩为80或90分的信息:

select name,math from test2 where math=80 or math=90;
select name,math from test2 where math in(80,90);

在这里插入图片描述
  

找到所有的姓张的信息:

  % 匹配任意多个(包括 0 个)任意字符,_ 匹配严格的一个任意字符。

select name,math from test2 where name like '张%';

在这里插入图片描述
  

找叫 张、张X、张XX 的人员信息,

select name,math from test2 where name like '张';
select name,math from test2 where name like '张_';
select name,math from test2 where name like '张__';

在这里插入图片描述
  

找到所有总分小于210分的人员信息:

 select name,math+chinese+english 总分 
 from test2 
 where chinese+math+english<210;

在这里插入图片描述

  

2.3 结果排序

  结果排序通常使用SQL中的order by子句来实现,它允许用户指定一个或多个列作为排序依据,并可以选择升序(ASC)或降序(DESC)排序。

asc 为升序(从小到大)
desc 为降序(从大到小)
//默认为 ASC
select ... from table_name [where ...]
order by column [asc|desc], [...];

  

按照数学成绩的升序进行排序:

select name,math from test2 order by math;

在这里插入图片描述

  

按照英语成绩的降序进行排序:

select name,math,english from test2 order by english desc

在这里插入图片描述
  

按照英语成绩的降序、数学成绩的升序进行排序:

select name,math,english from test2 order by english desc,math;

在这里插入图片描述
  

按照总分进行降序排序:

select name,chinese+english+math 
from test2 
order by chinese+english+math desc;

在这里插入图片描述

  

order by 子句中可以使用列别名:

select name,chinese+english+math 总分 from test2 order by 总分 desc;

在这里插入图片描述

  

2.4 筛选分页结果

  MySQL对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死。

//起始下标为 0
//从 s 开始,筛选 n 条结果
select ... from table_name [where ...] [order by ...] limit s, n

//从 0 开始,筛选 n 条结果
select ... from table_name [where ...] [order by ...] limit n;

//从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
select ... from table_name [where ...] [order by ...] limit n offset s;

  

查看表中的信息从第0条数据开始,筛选3条数据:

select id,name,chinese,math,english 
from test2 
order by id 
limit 3 offset 0;

在这里插入图片描述
  

3. Update(更新)

  update是一个数据库SQL语法用语,主要用来更新表中原有的数据。

  其基本的语法结构是:update 表名称 set 列名称 = 新值 where 列名称 = 某值。这意味着,当我们想要修改某个表中的特定数据时,可以使用update语句,并通过where子句来指定需要更新的行。

update table_name set column = expr [, column = expr ...]
[where ...] [order Bby ...] [limit ...]

  

3.1 更新单个数据

将李华的英语成绩更改为70:

select name,english from test2 where id=7;

在这里插入图片描述

update test2 set english=70 where id=7;
select name,english from test2 where id=7;

在这里插入图片描述

  

3.2 更新多个数据

将张三的语文成绩更改为75,英语成绩更改为65:

select name,chinese,english from test2 where id=1;

在这里插入图片描述

update test2 set chinese=75,english=65 where id=1;
select name,chinese,english from test2 where id=1;

在这里插入图片描述

  

4. Delete(删除)

  DELETE操作是数据库中的一种重要操作,用于删除表中的记录。

delete from table_name [where ...] [order by ...] [limit ...]

  

删除李华的成绩信息:

在这里插入图片描述

delete from test2 where id=7 ;

在这里插入图片描述

  

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

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

相关文章

边缘计算相关实验01

1 ChatGLM2-6B模型本地部署 部署的轻量级的模型&#xff0c;硬件配置不够&#xff0c;无法跑起来 2 车辆识别 2.1 车牌识别 开源代码 ​​https://gitcode.net/mirrors/we0091234/chinese_license_plate_detection_recognition?utm_sourcecsdn_github_accelerator​​ 识…

STM32基础--使用寄存器点亮流水灯

GPIO 简介 GPIO 是通用输入输出端口的简称&#xff0c;简单来说就是 STM32 可控制的引脚&#xff0c;STM32 芯片的 GPIO 引脚与外部设备连接起来&#xff0c;从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO被分成很多组&#xff0c;每组有 16 个引脚&#xf…

Pulsar 社区周报 | No.2024.03.08 Pulsar-Spark Connector 助力实时计算

关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目&#xff0c;是下一代云原生分布式消息流平台&#xff0c;集消息、存储、轻量化函数式计算为一体&#xff0c;采用计算与存储分离架构设计&#xff0c;支持多租户、持久化存储、多机房跨区域数据复制&#xff0c…

Linux常用操作命令-防火墙常用操作

一、防火墙常用操作 1、查看防火墙的状态&#xff1b; systemctl status firewalld 2、启动防火墙 systemctl start firewalld.service 3、开启某个端口&#xff0c;如8081端口&#xff0c;输入命令 firewall-cmd --zonepublic --add-port8088/tcp --permanent 4、删除某个…

C语言实战——扫雷游戏

目录 1. 扫雷游戏分析和设计2.扫雷游戏的代码实现 1. 扫雷游戏分析和设计 1.1扫雷游戏的功能说明 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘是9*9的格子默认随机布置10个雷可以排查雷 如果位置不是雷&#xff0c;就显示周围有几个雷 如果…

动态规划课堂4-----子数组系列

目录 引入&#xff1a; 例题1&#xff1a;最大子数组和 例题2&#xff1a;环形子数组的最大和 例题3&#xff1a;乘积最大子数组 例题4&#xff1a;乘积为正数的最长子数组 总结&#xff1a; 结语&#xff1a; 引入&#xff1a; 在动态规划&#xff08;DP&#xff09;子…

【新书推荐】19.1 DOS程序段前缀PSP

本节内容&#xff1a;介绍DOS程序段前缀及其应用。 ■程序段前缀PSP&#xff1a;DOS系统加载程序时&#xff0c;在程序段前设置一个具有256字节的信息区称为程序段前缀PSP。 ■终止程序的另一途径&#xff1a;利用程序段前缀PSP偏移地址0处的“INT 20H”终止程序。示例代码t19-…

第三百九十二回

文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何混合选择多个图片和视频文件"相关的内容&#xff0c;本章回中将介绍如何通过相机获取图片文件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. …

NoSQL--3.MongoDB配置(Linux版)

目录 2.2 Linux环境下操作 2.2.1 传输MongoDB压缩包到虚拟机&#xff1a; 2.2.2 启动MongoDB服务&#xff1a; 2.2 Linux环境下操作 2.2.1 传输MongoDB压缩包到虚拟机&#xff1a; &#xff08;笔者使用XShell传输&#xff09; 如果不想放在如图的路径&#xff0c;删除操作…

【Python使用】python高级进阶知识md总结第2篇:HTTP 请求报文,HTTP响应报文【附代码文档】

python高级进阶全知识知识笔记总结完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;操作系统&#xff0c;虚拟机软件&#xff0c;Ubuntu操作系统&#xff0c;Linux内核及发行版&#xff0c;查看目录命令&#xff0c;切换目录命令&#xff0c;绝对路径和相对…

(001)UV 的使用以及导出

文章目录 UV窗口导出模型的主要事项导出时材质的兼容问题unity贴图导出导出FBX附录 UV窗口 1.uv主要的工作区域&#xff1a; 2.在做 uv 和贴图之前&#xff0c;最好先应用下物体的缩放、旋转。 导出模型的主要事项 1.将原点设置到物体模型的底部&#xff1a; 2.应用修改器的…

【SpringCloud】微服务重点解析

微服务重点解析 1. Spring Cloud 组件有哪些&#xff1f; 2. 服务注册和发现是什么意思&#xff1f;Spring Cloud 如何实现服务注册和发现的&#xff1f; 如果写过微服务项目&#xff0c;可以说做过的哪个微服务项目&#xff0c;使用了哪个注册中心&#xff0c;常见的有 eurek…

跨平台大小端判断与主机节序转网络字节序使用

1.macOS : 默认使用小端 ,高位使用高地址,转换为网络字节序成大端 #include <iostream> #include <arpa/inet.h> int main() {//大小端判断union{short s;char c[sizeof(short)];}un;un.s = 0x0102;printf("低地址:%d,高地址:%d\n",un.c[0],un.c[1]);if …

腾讯云8核16G服务器支持多少人同时访问?性能和价格测评

腾讯云8核16G轻量服务器CPU性能如何&#xff1f;18M带宽支持多少人在线&#xff1f;轻量应用服务器具有100%CPU性能&#xff0c;18M带宽下载速度2304KB/秒&#xff0c;折合2.25M/s&#xff0c;系统盘为270GB SSD盘&#xff0c;月流量3500GB&#xff0c;折合每天116.6GB流量&…

STM32---ADC

ADC 概念 众所周知&#xff0c;GPIO只能读入高电平或者低电平&#xff0c;那如果现有一个模拟量&#xff0c;该如何读取呢&#xff0c;比如电压的范围是0~3.3v&#xff0c;如何获取电压的值。就需要ADC&#xff08;Analog-Digital Converter&#xff09;了。ADC可以将引脚上连…

童装WP模板

童装WP模板 https://www.wpniu.com/moban/6359.html

学习和认知的四个阶段,以及学习方法分享

本文分享学习的四个不同的阶段&#xff0c;以及分享个人的一些学习方法。 一、学习认知的四个阶段 我们在学习的过程中&#xff0c;总会经历这几个阶段&#xff1a; 第一阶段&#xff1a;不知道自己不知道&#xff1b; 第二阶段&#xff1a;知道自己不知道&#xff1b; 第三…

在 Python 中加速卫星时间合成的生成️

基于 fastnanquantile 库计算基于分位数的时间复合的更快方法 简要背景 为了从卫星图像创建时间合成图像,我们通常只获取云量低于特定阈值(例如 40%)的图像,遮盖云和云阴影,并随时间聚合图像。例如,如果我们一年中有 50 张图像(在云层覆盖限制内以及云/阴影遮罩之后),…

【经管数据-更新】华证ESG评级得分数据(2009-2023年)

一、数据说明 参考《经济研究》中方先明&#xff08;2023&#xff09;的做法&#xff0c;将华证ESG评级进行赋值&#xff0c;指标包含C、CC、CCC、B、BB、BBB、A、AA、AAA共9个等级&#xff0c;将上市公司ESG 等级从低到高分别赋值为1至9 二、数据来源&#xff1a;世界银行&am…

Linux多线程之线程控制

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、pthread_crate 二、pthread_join 三、p…