MySQL数据库 【增删改查】

目录

一、新增

 指定列插入

一次插入多个数据

二、查询

1、全列查询

2、指定列查询 

3、查询字段为表达式

4、查询的时候给列名/表达式 指定别名

5、查询时去重

6、排序查询

7、条件查询

8、模糊查询

9、空值查询

10、分页查询 

三、修改   

四、删除


 SQL 最核心的操作就是增删改查,作为一个后端开发,我们在未来的工作中最常遇见的场景也就是增删改查(CRUD)

一、新增

语法:

insert into 表名 values(值,值....)

新增也就是网数据表中插入一条记录,语法中此处列出的这些值的数目和类型要和表的列相匹配。

我们现在先在java这个数据库中创建一个student表:

 

然后再在这个表中插入数据

 

 此时颜色对应的部分也就是我们前面所指的值和值对应

这里我们要注意一点:

SQL 中表示字符串使用 ' 或者 " 都行

也就是说在SQL中并没有“字符”类型

大部分没有字符类型的编程语言,都是允许 单引号 和 双引号 来表示字符串并且单双引号效果通常是等价的

 此外,如果我们要想能够正确的插入中文,必须保证在创建数据库的时候,指定 charset utf8

这样才能保证插入中文的时候不会进行报错。

 指定列插入

在进行数据的插入的时候,我们也可以对单独的某个列进行插入

语法;

insert into 表名(列名) values (值);

 使用括号( )来标识目前要针对哪些列进行插入,多个列名之间可以使用 ,  进行分割

后续values 里的列必须要和当前 ( ) 中的列的个数和类型都匹配


一次插入多个数据

在values 后面,可以有多个和( ),多个 ( ) 之间用 , 分割,每一组 ( )就是一条记录(也就是一行)

那么 问题来了,我们一次插入 3 条记录和分 3 次插入一条记录有什么区别呢?

我们要时刻牢记: MySql 是一个客户端服务器结构的程序!!!

那么哪种更好呢?

我们要知道:每一次网络交互,都是有一定的成本的!!

而第一种的成本更低。因此第一种是更优的选择。 


二、查询

查询语句能让我们看到表中包含的数据内容

1、全列查询

select *from 表名;

这个操作,就是查询出当前数据库中所有的行和所有的列

其中,* 是通配符,可以把它理解成斗地主中的“癞子”,* 就能够代指任意的列

 那么上图就是全列查询的全部效果

那么我们前面也说了,MySQL是一个客户端服务器结构的程序,全列查询可以用下图来表示

select * 是一个非常危险的操作!!!

如果,当前select* 查询的这个表,里面的的数据非常非常多(比如,几十亿条....),这样的操作就会导致这个服务器一瞬间,硬盘的带宽和网卡的带宽都被吃满了!!!

这就会使服务器无法给外面的普通用户提供服务了此时服务器就像 “卡死” 了一样


2、指定列查询 

手动指定要查询到额某一列或者某几列 ,服务器返回的额结果就只包含想要的数据

语法:

select 列名,列名... from 表名;

我们现在重新创建一个表,将其命名为exam_result

先对其进行一次全列查询

 

再对其进行指定列查询,操作结果如下:

 数据库的增删改查,都是比较慢的,也是比较吃硬件资源的,因此我们尽量能省则省


3、查询字段为表达式

查询的同时可以进行计算

例如我们要查询所有同学,数学成绩加10分之后的效果,可以这样写:

 此处,我们看到的客户端中显示的结果,其实是一个“临时表”,select 操作不管怎么写,都不会影响到数据库服务器硬盘上存储的原始数据

SQL中四则运算只能针对数字进行!!!

但是也可以将两个列的数值,或者多个列之间的数值进行计算

 这时,我们会发现,此时查询结果中临时表的列名和咱们当前表达式是一致的,这就导致了如果查询的表达式非常的复杂,就会导致列名也非常的复杂,不利于用户来阅读


4、查询的时候给列名/表达式 指定别名

语法:

select 列名 as 别名 from 表名;

此时,别名会最终显示在查询结果的临时表中

另外,as 这个关键字是可以省略的,但是我们不建议省略

最终的效果如下:

SQL中。列名和表名都是可以起别名的,取名的方式,都是用as  


5、查询时去重

把重复的行去掉,只保留一份

语法:

select distinct 列名 from 表名;

我们现在先查询一下math 这一列的数组

此时会发现,98.0这个数值有两个,当我们现在进行查询时去重的操作之后,临时表中便只会显示一个98.0了

 同样的,distinct 后面的列名,也可以是多个

当指定多个列的时候,则要求必须所有列的值都相同,才算 “重复”


6、排序查询

针对查询到的结果进行排序

还是那句话,MySql 是一个客户端-服务器结构的程序因此这里的排序也只是针对临时表进行的,对于数据库服务器上原始的数据并没有任何顺序上的影响

语法:

select 列名 from 表名 order by 列名;

排序的时候,依据order by 后面的那个列进行排序

举个例子,这个是是不排序之前临时表的顺序:

按照英语成绩排序后升序排序的结果是这样的:

 

 如果想要得到降序排序,则只需要在最后加上 desc 即可

 如果 SQL 中,没有指定 order by,此时我们的代码中,就不应该依赖结果集合(临时表)的顺序!!!

MySQL并不承诺,这个不带order by 的查询结果是有一定的顺序的

order by 后面是可以接多个列的

这个顺序表示: 先针对数学进行排序,如果数学相同,再根据英语进行排序


7、条件查询

指定一个筛选条件,把符合条件的结果保留下来,不符合的就剔除掉

关系运算符:

注意事项: 

有些列是可以不填的(不填就相当于是NULL)

NULL参与各种运算,运算的结果还是NULL

NULL = NULL             结果是false 

NULL <=> NULL         结果是true  

  逻辑运算符:

 示例1:查询英语不及格的同学的英语成绩

 注意理解查询语句执行的过程:

1、服务器需要先遍历表中的每一个记录

2、针对当前记录,带入条件,看是否成立

3、如果条件成立,则这一条记录加入结果集,并返回给客户端

4、如果条件不成立,则这一条记录跳过

条件比较的时候,并不只是使用列名和常量比较,也可以使用列名和其它列名比较,例如

示例2:查询语文成绩大于英语成绩的同学

 此外,条件查询也可以结合一些更复杂的表达式

示例3:查询总分小于200的同学

 注意:当我们在条件中,尝试使用别名的时候,这个别名是不能被正确识别出来的!!!

MySQL 的 where 条件中,无法使用 列 的别名!!!


8、模糊查询

MySQL中提供的模糊查询,是相对比较简单的 :like

MySQL中提供了两个通配符:

%  匹配 0 个 或者 任意个 字符

_   匹配 1 个任意字符

 示例:查询姓孙的同学

 示例:查询名字以孙结尾的同学

其实,MySQL进行 like 模糊查询是一个比较低效的操作,尤其是针对一些比较长的字符串

因此我们使用模糊查询的时候要慎重 


9、空值查询

除了之前讲过的 =  和 <=> 的区别之外,它们在使用方法上还有别的不同

<=> 可以用于两个列之间的比较


10、分页查询 

分页查询:limit 

针对查询出来的结果,进行 截取,取出其中的一部分

                                                                                                                                                                                                                                                                                                                              这个操作中 limit 4 的意思是,一次查询,最多查询到4条记录

那么如果我们想查询到下一页的记录,则应该这样写:

                                                                                                                                                            其中,limit 约束了结果中最多包含几条记录  ,offset 描述了当前的结果从哪一条开始算,也可以当做从下标为4 的记录开始获取


三、修改   

语法:

update 表名 set 列名 = 值 where 条件;

  进行修改的时候要明确一些重要信息:

1、改哪个表

2、改这个表的哪个列 / 哪个行,改成什么

3、改这个表的哪些行                                                                                                               

 示例:将孙悟空的数学成绩改成80分

我们可以看到,目前孙悟空的数学成绩是78分

 那么接下来,我们对其进行 update 操作

注意:math = 80 此处的等号是赋值的意思,不再是比较相等了 

 经过上述的修改之后,我们再查询孙悟空的成绩

此时,其数学成绩已经成功被修改成了80

注意:此处的修改是修改MySQL 服务器保存在硬盘上的数据(持久生效的) 

 此外,update 也可以一次操作修改多个列

示例:将曹孟德的数学成绩变更为 60 分,语文成绩变更为 70 分

曹孟德本来的成绩如下:

 然后使用update 对其两列成绩进行修改

 结果如下:

此外,修改操作也可以搭配 order by 这样的排序操作 

示例:把总成绩倒数的3位同学,数学成绩加上30分

我们现在可以看到,总成绩倒数三名的同学是这三位:

现在,我们要对它们的数学成绩进行加三十分的操作

 但是这个时候发生了报错,这是因为刘玄德的数学成绩此时是85,而此处设定的成绩是3位有效数字,如果再加30,那么就是四位有效数字了,所以这里我们选择只加10分

 然后我们便会发现刚才倒数的三位同学的数学成绩都加上了10分

由此得知: select 中支持的条件,排序,分页对于update来说,是同样生效的

update 可以理解成: 先查询,再修改

注意:如果我们在 update 操作的时候,没有加其它条件,会将所有的行都进行修改!!!


四、删除

delete 直接删除符合条件的行

语法:

delete from 表名 where 条件;

示例:删除孙悟空的考试成绩

删除前:

 

删除操作: 

删除后:

注意:删除是按照行来进行删除的,我们无法删除某些列 

如果先要删除列,可以通过update 把指定条件的行的指定列设为null

同样的,如果在delete 的时候,没有指定数据,就会将整张表的数据都删除掉

效果和删除表差不多,但还是略有不同

delete from 删除之后,表还在,但是表里面的数据没有了

drop table 删除之后,表以及表里面的数据都没有了 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring底层

配置文件 配置优先级 之前讲解过&#xff0c;可以用这三种方式进行配置 那如果这三种都进行了配置&#xff0c;那到底哪一份生效呢&#xff1f; 结论 优先级从大到小 properties>yml>yaml然后就是现在一般都用yml文件进行配置 其他配置方式 除了配置文件外 还有不同…

stm32读取DHT11温湿度传感器

stm32读取DHT11温湿度传感器 一.序言二.DHT11响应数据格式三.DHT11通讯过程3.1 产生起始信号3.2 读取数据03.3 读取数据1DHT11停止信号 四.代码实例4.1读取DHT11源文件4.2 读取DHT11头文件 五.结语5.1 总结整体思路5.2 对读者的期望 一.序言 我们知道DHT11是单总线协议&#x…

基于Java+SpringBoot+Vue前后端分离仓库管理系统详细设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

kubernetes中特定域名使用自定义DNS服务器出现的解析异常

故障发生背景&#xff1a; 租户反馈生产业务服务连接到中间件的时候&#xff0c;偶尔会有连接失败的情况&#xff0c;然后我们查看对应组件服务正常&#xff0c;手动请求组件服务也显示正常&#xff0c;让租户查看业务服务日志发现报错无法解析对应的域名&#xff0c;我们手动是…

Spring Batch之读数据库—JdbcPagingItemReader(四十一)

一、JdbcPagingItemReader Spring Batch框架提供了对JDBC分页读取支持的组件JdbcPagingItemReader。JdbcPaginItemReader实现ItemReader接口&#xff0c;核心作用是将数据库中记录通过分页的方式转换为Java对象。在JdbcPagingItemReader将数据库记录转换为Java对象是主要有两步…

C 知识积累 回车与换行 Linux C 语法分析

目录 回车与换行一.知其然二.知其所以然 关键字&#xff0c;操作符和函数区别1&#xff1a;关键字2&#xff1a;操作符3&#xff1a;函数 命令行参数argv原码补码补码加法 Linux C 语法分析结构体指针类型函数宏定义其他 const语法整理 回车与换行 一.知其然 \n是换行&#x…

【矩阵的创建与基本运算】——matlab基础

目录索引 创建矩阵&#xff1a;zeros()&#xff1a;ones&#xff1a;eye()&#xff1a;magic()&#xff1a;引号创建序列矩阵&#xff1a;linspace()&#xff1a; 加减与数乘&#xff1a;其他运算&#xff1a;指数运算&#xff1a;*exp()&#xff1a;* 点式运算&#xff1a; 创…

SpringBoot 整合 RabbitMQ demo

Rabbit Windows安装教程 本文只做Demo案例的分享&#xff0c;具体只是需自行百度 一、生产者 1.application.properties 配置Rabbit的基本信息 #rabbit 主机IP spring.rabbitmq.host127.0.0.1 #rabbit 端口 spring.rabbitmq.port5672 #rabbit 账号 可自行创建 这里是默认的 …

springboot与rabbitmq的整合【演示5种基本交换机】

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏&#xff1a;后端专栏 &#x1f4e7;如果文章知识点有错误的地方&#xff0c;…

Makefile:6: *** missing separator. Stop.

Makefile:2: *** missing separator. Stop. Windows下用VS CODE编写makefile文件&#xff0c;编译报出这个错误 可以查看一下VS CODE左下角&#xff0c;如果是下图“空格&#xff1a;4”这样&#xff0c;需要更改一下。 在“空格&#xff1a;4”上左键单击一下&#xff0c;在…

涂鸦智能打造专业家庭智能生活助手,实现人机交互升级

近年来&#xff0c;智能家居设备的品类不断拓展&#xff0c;同时&#xff0c;人们对AI与智能家居的联动愈发憧憬。自然语言交互是未来人机交互的主要趋势之一&#xff0c;其关键在于使AI具备主动理解信息的能力&#xff0c;让用户的交互更轻松。如何将智能场景的交互变得更“善…

【动手学深度学习】--15.含并行连结的网络GoogLeNet

文章目录 含并行连结的网络GoogLeNet1.Inception块2.GoogLeNet模型3.训练模型 含并行连结的网络GoogLeNet 学习视频&#xff1a;含并行连结的网络 GoogLeNet / Inception V3【动手学深度学习v2】 官方笔记&#xff1a;含并行连结的网络&#xff08;GoogLeNet&#xff09; 1.…

基于Web API drap事件的简单拖拽功能

基于Web API drap事件的简单拖拽功能 效果示例图代码示例 效果示例图 代码示例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style type"text/css">* {padding: 0px;margin: 0px;box-s…

单例模式、指令重排序、锁、有序性

今天在回顾单例模式时&#xff0c;我们都知道懒汉式单例中有一种叫做双重检查锁的单例模式。 我们来看下下面的代码有没有问题&#xff1a; 这段代码我们可以看到&#xff0c;即优化了性能&#xff0c;在多线程情况下&#xff0c;如果实例不为空了&#xff0c;则直接返回了。…

Vue成绩案例实现添加、删除、显示无数据、添加日期、总分均分以及数据本地化等功能

一、成绩案例 ✅✅✅通过本次案例实现添加、删除、显示无数据、添加日期、总分均分以及数据本地化等功能。 准备成绩案例模板&#xff0c;我们需要在这些模板上面进行功能操作。 <template><div class"score-case"><div class"table">…

Rsync(二十七)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、特性 三、应用场景 四、数据的同步方式 五、rsync传输模式 六、rsync应用 七、rsync 命令 1. 格式 1.1 作为远程命令 1. 2 作为rsync服务 2. 选项 3.…

解密:GPT-4框架与训练过程,数据集组成,并行性的策略,专家权衡,推理权衡等细节内容

大家好&#xff0c;我是微学AI&#xff0c;今天给大家解密一下GPT-4框架与训练过程&#xff0c;数据集组成&#xff0c;并行性的策略&#xff0c;专家权衡&#xff0c;推理权衡等细节内容。2023年3月14日&#xff0c;OpenAI发布GPT-4&#xff0c;然而GPT-4的框架没有公开&#…

【ArcGIS Pro二次开发】(46):要素类从上到下、从左到右排序

要素类经过编辑之后&#xff0c;【OBJECTID】字段会变得不规律。应部分网友要求&#xff0c;做了这个从上到下、从左到右排序的工具。 不过后来在ArcGIS Pro中发现了一个【排序】工具&#xff0c;已经可以完美实现这个功能需求&#xff0c;发现自己做了个白工。 不过做了不能白…

【最新教程】树莓派安装系统及VNC远程桌面连接

大家好&#xff0c;今天就不给大家介绍PYTHONL ,今天我作为一个刚入坑树莓派的小白&#xff0c;整理了一下自己安装树莓派的整个过程&#xff0c;分享给大家。 目录 树莓派 准备工作&#xff1a; 树莓派远程ssh失败access denied 原因&#xff1a; 树莓派系统安装 1、下载…

hive常用方法

日期类 Date_sub 日期进行加减 &#xff0c;正的减&#xff0c;负的加 select current_date -- 当前日期,date_sub(current_date,1) -- 前一日,date_sub(current_date,-1) -- 后一日 from edw.test;字符类 split 该函数是分割字符串 &#xff0c;按照…