【数据库】表的增删改查(基础 )

news2024/11/26 20:46:33

目录

1、新增/插入数据

1.1、给表中所有字段插入数据

1.1、给表中指定字段(列)插入数据

1.2、一次插入多条记录

1.3、时间日期数据的插入 

1.3.1、手动插入某个时间 

 1.3.2、插入当前时刻的时间

2、查找操作 

2.1、全列查找(查找表的所有行,所有列)

2.2、指定列查询

2.3、查询字段为表达式 (进行的是列和列之间的运算)

2.3.1、对查询的列加减乘除

2.3.2、 对查询的多个列进行加减乘除

 2.4、别名(使用as关键字)

2.5、去重查询 (关键字distinct)

 2.6、按照查询结果排序(order by 语句)

2.6.1、按照升序顺序排序(关键字asc)

2.6.2、按照降序顺序排序 (关键字desc——》descend)

 2.6.3、指定多个列来排序

2.7、条件查询 

 2.7.1、条件运算符

2.7.2、使用比较运算符进行条件查询

 2.7.3、使用逻辑运算符进行条件查询

2.7.4、指定范围查询(between   and   ) 

 2.7.4、判断要查询的数据在指定的集合中(in(值,值....))

 2.7.5、模糊查询(like)【重点】

2.7.6、NULL的查询

 2.8、分页查询(limit搭配offset)

 3、修改(update)

3.1、针对单个列进行修改 

 3.2、针对多个进行修改

 3.3、与where 、order by和表达式等的搭配使用

4、删除(delete)【针对表中的行】 

 4.1、删除的时候什么都不搭配


1、新增/插入数据

1.1、给表中所有字段插入数据

语法结构:

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

注意:

  1. 在表中插入数据的时候,数据的个数,类型,顺序要和创建这个表的时候是一致的(表头/字段一致) 。
  2. 在数据库中没有字符类型,所以单引号和双引号都可以表示字符串。
  3. 数据库在创建时,没有修改字符集,默认情况下数据库使用的字符集时“拉丁文”字符集,不能表示汉字。

1.1、给表中指定字段(列)插入数据

语法格式:

insert into 表名 (列名,列名,....)values ('值','值',....);
//后面给的值,要和前面的列名顺序、个数、类型一致

 

 我们可以通过(select*from 表名)来查看结果,select语句下面会说到。

1.2、一次插入多条记录

语法格式:

1、insert into 表名 values ('值','值',....),('值','值',....);
2、insert into 表名 (列名,列名,....) values ('值','值',....),('值','值',....);

 

❗❗❗ 总结:一次插入N个记录,比N次插入一个记录,效率要高一些。因为数据库是一个客户端服务器结构的程序,输入一次,客户端就要和服务器交互一次,那么交互的次数越少,使用的时间就越少。

1.3、时间日期数据的插入 

这里单独说时间日期在表中的插入,主要是因为插入时间的时候,是通过特定格式的字符串来表示日期的,例如:2023-4-21 17:48:00

1.3.1、手动插入某个时间 

 

 1.3.2、插入当前时刻的时间

sql中提供了一个特殊的函数now(),可以得到当前时刻的时间。

2、查找操作 

数据库是一个客户端服务器结构的程序,客户端发送一个请求,服务器会根据请求的sql查询保存的数据,把数据读取出来,通过网络返回个客户端,这个结果相当于一个“临时表”,这个临时表也叫做“结果集”。

2.1、全列查找(查找表的所有行,所有列)

语法格式:

select * from 表名;
// *号表示所有的列,这种特殊含义的符号,计算机中叫做“通配符”

上述说到查询的时候,客户端向服务器发送请求,服务器会根据sql语句,将数据从硬盘中读取出来,通过网络发送给客户端。

这样就导致了一个问题,当我们采用select *这样的方式查询数据,如果表当中的数据非常多,这样就会瞬间将硬盘贷款和网络的带宽全部吃满,就可能导致其他程序无法使用硬盘或者网络。所以这种查询方式非常危险。

什么是带宽??


  • 带宽,将它想象成一条公路,有的路较窄,单位时间能通过的车就比较少,称为“带宽低”,有的路比较宽,单位时间能通过的车就很多,称为“带宽高”。可以用1s能够读写多少个字节,或者多少个bit来衡量带宽。
  • 说到带宽,有的同学会想到总线的问题,就电脑而言,有的电脑是32位总线,有的是64位总线。这里我们可以将总线想象成车速。带宽是公路。

全列查询操作非常危险,下面的操作可以针对上述的问题,进行一些优化,但是还是存在一定的危险,在使用查询语句的时候一定要非常的谨慎。 

2.2、指定列查询

语法格式:

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

 指定查询某一列或者某些列

 

2.3、查询字段为表达式 (进行的是列和列之间的运算)

表示的意思是查询过程中,可以做一些简单的运算,(这里的查询时的运算是列和列之间的运算,而不是行和行之间)。因为我们后面还会说到聚合查询,这是行和行之间运算。

2.3.1、对查询的列加减乘除

例如:

select name,math+10 from exam_result;

❗❗❗注意:

 我们在创建exan_result这个表的时候,指定的成绩的数据类型为decimal(3,1),表示的意思为只能插入deciaml类型的数据且有效数字为3位,小数点之后只能有一个数字。所以我们不能插入三位整数,当插入三位整数的时候,实际上插入的是四位有效数字(xxx.x)。

 给表exam_result中插入数据

 对exam_result表中的每一行的数学成绩+10.

 ❓❓❓上面说到,成绩的数据类型是decimal(3,1)不能插入3位整数,但是math+10之后,成绩成为3位数字了,有效数据为4位,那就不符合我们建表时的规定了,为什么程序没有报错,输出了结果???


这里我们还是要说到MySQL是一个客户端-服务器结构的程序。我们在插入数据的时候,将数据插入到服务器中,服务器中的数据保存在硬盘中,我们通过查询的时候,在客户端输入sql,通过请求发送给服务区,服务区解析并执行sql把查询的结果从硬盘中读取出来,通过网络响应还给客户端,客户端把这些数据以临时表的形式展示出来。客户端上展现出来的表和硬盘上的表没有什么关系。在客户端中临时表的成绩的数据类型,我们可以认为是decimal类型的,没有规定有效数字位数和小数点位数。

2.3.2、 对查询的多个列进行加减乘除

 2.4、别名(使用as关键字)

像上述的,查询字段为多个列的求和,最终列名和表达式一样,这样很多时候表达式是不直观的我们不可能在阅读表的时候,根据表达式分析这一列表示的是什么。所以我们给他起一个名字,能够表达这一列是什么意思。

❗❗❗ as可以神略,但是不建议使用,不加as 这使代码的阅读性降低

2.5、去重查询 (关键字distinct)

distinct针对指定列经行去重(把重复的行只保留一个)

distinct针对单个列进行去重。 

 

 

 distinct针对多个列进行去重的时候,要求这些列的值都相同,才视为重复。

 2.6、按照查询结果排序(order by 语句)

order by 子句,指定某些列进行排序,有可能是升序,有可能是降序。

2.6.1、按照升序顺序排序(关键字asc)

❗❗❗注意:使用asc关键字表示升序排序,但是省略不写默认就是升序

按照一个列查询,将查询结果进行排序

❗❗❗ 注意:对于MySQL来说,如果一个sql没有指定order by,此时的查询结果集的数据顺序,是不可预期的,顺序是乱的。

2.6.2、按照降序顺序排序 (关键字desc——》descend)

❗❗❗注意:

  • 这里的desc写在erder by 之后,表示的是descend的缩写,表示的降序排序。
  • 若直接写在开头后面跟的是表名,这里他是describle的缩写,表示描述一个数据表结构

 2.6.3、指定多个列来排序

  • 指定多个列来进行排序,多个列之间使用逗号(,)来分割。这个列越靠前,就是越关键的排序依据。
  • 先按照第一列排序,如果第一列的值中存在相同的,再按照第二列排序。

 可以这样理解,先按照数学成绩降序排序,如果数学成绩中存在相同的,则使用语文成绩进行排序,将数学成绩重复的两个人的语文成绩进行降序排序,其他人的语文成绩排序无效。

2.7、条件查询 

在查询的时候指定筛选条件,符合条件的数据留下,不符合的直接不显示。

sql中通过一系列的运算符来表示条件。

通过where子句,搭配上条件表达式,就可以完成条件查询

 2.7.1、条件运算符

比较运算符:

运算符说明
> ,>= ,<,<=大于,大于等于,小于,小于等于
=等于,null不安全,例如null = null 结果是null
<=>等于,null安全,例如null <=> null的结果是true
!=,<>不等于
between  数值 and 数值范围匹配,[ a0,a1],如果a0 <= value <= a1,返回true
in(option,...)判断或者查找的元素如果是option中的任意一个,返回true
is null是null
is not null不是null
like

模糊匹配。%表示任意多个(包括0个)任意字符;

_表示任意一个字符

 ❗❗❗注意:

  • 这里的(=与<=>)都有比较的意思,只不过=不能比较null,而<=>能过比较null,当null<=>null的时候,结果为true。
  • =在sql中别的地方表示的意思有可能是赋值,但是在条件查询这里表示的意思为比较的意思。

逻辑运算符:

运算符说明
and多个条件都为true,结果才是true,相当于Java当中的&&
or任意一个条件为true,结果为true,相当于Java当中的||
not条件为true,结果为false,相当于Java当中的!

2.7.2、使用比较运算符进行条件查询

1、查询语文成绩不及格的成绩(<60)

相当于将语文成绩通过遍历,将不及格的显示出来作为结果集。

 2、查询语文成绩好于英语成绩的同学

条件查询可以直接拿两个列进行的比较

 3、查询总分在200分以下的同学(条件查询,可以使用表达式作为条件)

 两种查询方式都可以实现查询总分小于200的人。

  • 第一种,默认将查询到的人的所有信息都显示出来,表达式作为查询条件,最终没有显示总分,这里在sql种指定的条件,可以在select查询的列中出现,也可以不出现。
  • 第二种,我们指定显示总分没有超过200的人姓名,和总分信息。第二种select查询中出现的列名,是以表达式的方式显示,但是这种方式不直观。我们可以给表达式作为列名的这一列起一个别名,让表格阅读更加直观。

 在条件查询的时候给总分列设置别名

❗❗❗ 注意:

给第二种显示总分的条件查询中,总分那一列设置别名的时候,存在一个小问题。

 我们在前面虽然说给Chinese+math+English设置了别名,但是这句代码报错的原因就是在判断的时候并不认识total. 

sql语句存在的执行规则 

  • 这里就表明我们写下一个sql语句之后,在执行的时候,并不是从前往后的执行,它的执行是由一定的顺序。
  • 就上述代码而言,它的执行规则就是。
  1. 遍历每一行数据
  2. 把这一行数据带入到where的条件中
  3. 符合条件的结果,再根据select这里指定的列,进行查询/计算

 2.7.3、使用逻辑运算符进行条件查询

1、查询语文成绩大于80并且英语成绩大于80(and)

 2、查询语文大于80或者英语大于80(or)

如果一个where中即存在and有存在or,先执行and后执行or。

2.7.4、指定范围查询(between   and   ) 

(between  and ) 约定的是前闭后闭的区间。包含两侧边界。

 1、查询语文成绩在[80,90]之间同学的成绩

 2.7.4、判断要查询的数据在指定的集合中(in(值,值....))

1、查询数学成绩是58或者59或者98或者99的同学的数学成绩

 2.7.5、模糊查询(like)【重点】

模糊查询起到的一个效果就是,能够模糊匹配,不要求元素完全相同,只要满足一定的规则就可以。

like支持两个用法:

1、使用%:代表任意0个或者N个字符

2、使用 (下划线)_:代表任意1个字符

 1、查询姓孙的同学的成绩(%)

 这样就可以查到两个同学,不论孙后边是几个字,只要是满足(孙%)规则的就会全部输出。

2、使用下划线(_)按照上述查找姓孙同学的成绩

一个下滑线,只能代表一个字。

2.7.6、NULL的查询

❗❗❗注意:

  • sql中null和其他数值进行运算,结果还是null,null和null进行比较相等,最终结果还是null,在查询条件中相当于false。(不能使用null = null,进行比较)
  • 在sql中null要比较相等,提供了<=>,用来处理null的比较。

使用=比较null相等。 

 

 使用<=>比较相等。

 也可以使用is null这个比较运算符(is null 判断是否为空)

 2.8、分页查询(limit搭配offset)

limit规定每一页查询几行数据。

offset规定每一页从第几行开始查询。

这种是我们在前端中常见的分页查询,当数据特别多的时候,我们可以使用分页查询,先查询一部分,每一页查询5个数据。想要查询剩余数据,点击下一页。这样查询的好处在于系统的压力就大大减小。

limit单独使用

 

 limit与offest搭配使用

limit 3 offset 6 与limit6,3是一个等价的写法,但是limit 6,3这种写法不推荐,可读性不高。

❗❗❗ 注意:limit可以和前面的查询条件,搭配使用的(例如:与条件查询,去重查询,模糊查询...)

举例:查询总分前三名的同学。

 3、修改(update)

语法格式

update 表名 set 列名 = 值,列名 = 值.... (where 条件/order by /limit等);
//这里的set表示的意思为设置。()中的这些可以有也可以没有,主要看题目的需求。

3.1、针对单个列进行修改 

 将孙悟空同学的数学成绩变为80分

注意:不设置条件 ,修改就是针对所有行的math列进行的

 3.2、针对多个进行修改

 3.3、与where 、order by和表达式等的搭配使用

1、将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

修改超出范围,不会执行

❗❗❗ 注意:

在修改值的时候,不能使用Java中的math += 30,这种写法,sql中是不支持的。、

update这也是一个非常危险的操作。操作不当可能会将所有数据都改掉。

4、删除(delete)【针对表中的行】 

语法格式:

delete from 表名 (where 条件、order by、limit....)
//括号中的内容可以与delete 搭配使用。

删除孙这一行的记录

 4.1、删除的时候什么都不搭配

这样的操作与删表基本没有什么区别了(drop table exam_result;)

 只不过这样写,exam_result表还存在,使用 drop table exam_result,这个表和数据都会被删除。

❗❗❗注意:

  • 这里还有一种清空表的方式使用关键字truncate,truncate直接将表中所有的数据一次删完。
  • delect 关键字,删除表中的数据,是一条一条删除。删的慢。
  • 如果误删大量数据的话,还可能停止保留一部分数据,但是使用truncate,则没有挽救的机会了
  • delect这个操作也是比较危险的。

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

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

相关文章

【ArcGIS Pro二次开发】(24):现状、规划用地图斑的变化检查

如题如见&#xff0c;这是一个检查现状、规划用地变化的工具。 通过此工具&#xff0c;可以生成变化图斑&#xff0c;检查规划中发生的变化&#xff0c;明确是正常的规划措施&#xff0c;还是因为误操作产生的图斑变化。 一、要实现的功能 如上图所示&#xff0c;点击【检查现状…

【Daily Share】没有域名怎么破?手把手教你如何通过hosts配置域名(假域名)

目录 ❌前言&#x1f4c4;hosts文件&#x1f989;DNS解析步骤&#x1f44c;配置伪域名第一步 修改本机hosts配置第二步 配置服务器nginx &#x1f503;流程图 ❌前言 ip记不住&#xff1f;&#xff1f;&#xff1f; 域名不想买&#xff1f;&#xff1f;&#xff1f; 每次当我…

系统分析师《企业信息化战略与实施》高频知识点

企业信息化战略与实施---企业信息化与电子商务 业务流程重组&#xff08;Business Process Reengineering BPR&#xff09;是针对企业业务流程的基本问题进行反思&#xff0c;并对它进行彻底的重新设计&#xff0c;使业绩取得显著性提高。与目标管理、全面质量管理、战略管理等…

桂林阳朔4天4夜旅游攻略-亲测整理踩坑版本

桂林阳朔4天4夜旅游攻略-亲测整理踩坑版本 前言我的行程上海飞机出发到达两江机场桂林第一家酒店第一天早饭桂林米粉正宗吃法坐大巴去杨堤路口杨堤路口坐巴士直达杨堤码头杨堤到兴坪坐电动竹筏兴坪--20元背面打卡地兴坪古镇--汽车站阳朔酒店租电动车遇龙河漂流&#xff08;*五星…

Three.js教程:Face3对象定义Geometry的三角形面

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 其他系列工具&#xff1a; NSDT简石数字孪生 Face3对象定义Geometry的三角形面 几何体Geometry的三角面属性geometry.faces和缓冲类型几何体BufferGeometry顶点索引属性BufferGeometry.index类似都是顶点位置数据的索引值…

【MySQL入门指南】MySQL中的数据类型总结

文章目录 MySQL数据类型一、数值类型1.类型总览2.BIT类型3.INT系列类型4.浮点数类型1)float与double2.float与decimal 二、字符串类型1.类型总览2.CHAR类型3.VARCHAR类型 三、日期与时间类型四、枚举类型1.enum类型2.set类型3.在set中的查找 MySQL数据类型 ​ MySQL中支持的数…

ONLYOFFICE协作空间是什么?

今天给大家带来一个好消息&#xff0c;ONLYOFFICE推出更安全的协作空间了&#xff0c;好多朋友看到这个标题不认识是什么&#xff0c;我也是&#xff0c;今天来给大家介绍一下。 什么是 ONLYOFFICE 协作空间 简单来说ONLYOFFICE协作空间是一个协同工作平台&#xff0c;帮助您更…

Unity3D:模拟器视图

推荐&#xff1a;将NSDT场景编辑器加入你的3D工具链 3D工具集&#xff1a;NSDT简石数字孪生 模拟器视图 “模拟器”视图在模拟的移动设备上显示应用程序。使用它来查看应用程序与该设备的屏幕形状、分辨率和方向的显示方式。 模拟器视图的屏幕截图 使用模拟器视图 若要打开…

微服务学习——Docker

初识Docker 项目部署的问题 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题: 依赖关系复杂&#xff0c;容易出现兼容性问题开发、测试、生产环境有差异 Docker Docker如何解决依赖的兼容问题的? 将应用的Libs(函数库)、 Deps&#xf…

【软件测试】第1章 软件测试概述

系列文章目录 文章目录 系列文章目录前言第1章 软件测试概述1.1 软件、软件危机和软件工程1.1.1 基本概念1.1.2 软件工程的目标及其一般开发过程1.1.3 软件过程模型 1.2 软件缺陷与软件故障1.2.1 基本概念1.2.2 典型案例 1.3 软件测试的概念1.3.1 软件测试的定义1.3.2 软件测试…

2023全球运维大会 | 智能运维中的数据管理和数据探索

GOPS 全球运维大会由高效运维社区&#xff08;GreatOPS&#xff09;、开放运维联盟&#xff08;OOPSA&#xff09;和 DevOps 时代社区联合主办&#xff0c;指导单位为云计算开源产业联盟、FinOps产业推进方阵。迄今为止&#xff0c;GOPS 已经举行了十九次&#xff0c;大会参会嘉…

Docker网络与资源控制

目录 一、Docker网络 1.Docker网络模式 2.Docker网络实现的原理 3.映射端口 4.none模式 5.bridge模式 二、资源控制 1&#xff0e;CPU 资源控制 2.cgroups有四大功能&#xff1a; 一、Docker网络 1.Docker网络模式 ●Host&#xff1a;容器将不会虚拟出自己的网卡&am…

如何保护数据安全?企业该从部署SSL证书开始

数字化时代&#xff0c;大数据开始蔓延到各行各业&#xff0c;影响着生活的方方面面。在犹如“皇帝穿新衣”般透明的大数据时代&#xff0c;数据泄露无孔不入&#xff0c;存在问题层出不穷&#xff0c;未知的漏洞隐患、安全边界的模糊、新的网络攻击手段、个人隐私的无处藏身等…

音视频开发面试题大盘点:掌握这些基础知识,你就能轻松应对面试

前言 音视频开发作为一种高技术含量的领域&#xff0c;随着人们对数字媒体的需求不断增加&#xff0c;其前景非常广阔。预计在2023年&#xff0c;音视频开发领域仍将继续保持快速发展的态势&#xff0c;尤其是在移动互联网、物联网、虚拟现实、增强现实等领域。 根据BOSS招聘…

deepstream6.2更新的新特性-支持雷达lidar的推理检测

1,其实在deepstream6.1中已经加入了3D深度图像 其实在deepstream6.1中已经加入了3D深度图像,可以将深度图像的数据显示出来,但是需要专门的深度相机,官方给出的是Intel realSense D435相机,它可以读取相机数据,并进行点云显示以及渲染深度绘制,这个功能有点类似调用ope…

ES集群配置

一、高并发下如何保证读写一致 1.1 写操作 对于写操作&#xff0c;一致性级别支持 quorum/one/all&#xff0c;默认为 quorum&#xff0c;即只有当大多数分片可用时才允许写操作。但即使大多数可用&#xff0c;也可能存在因为网络等原因导致写入副本失败&#xff0c;这样该副本…

centos集群上安装hive客户端的操作步骤以及hive介绍

系列文章目录 虚拟机centos7配置Hadoop单节点伪分布配置教程​​​​​​ hbase进阶操作——读流程与写流程介绍 HBase进阶——文件的合并、 MemStore Flush、StoreFile Compaction、 Region Split、高可用与预分区介绍 centos7虚拟机下hbase的使用案例讲解 文章目录 前言…

【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata

NacosSentinelSeata 9/9 1、SpringCloud Alibaba简介1.1 主要功能1.2 具体组件 2、SpringCloud Alibaba Nacos服务注册和配置中心2.1 Nacos介绍2.2 Nacos下载安装2.3 使用Nacos作为注册中心2.3.1 在父工程的pom文件中引入springcloudalibaba依赖2.3.2 创建cloudalibaba-provide…

面向对象(高级)-包装类的理解_基本数据类型、包装类、String类型间的转换及练习

包装类 大纲 包装类的使用 1.为什么要使用包装类&#xff1f; 为了使基本数据类型的变量具备引用数据类型变量的相关特征&#xff08;比如&#xff1a;封装性、继承性、多态性&#xff09;。我们给各个基本 数据类型的变量都提供了对应的包装类。2.&#xff08;掌握&#xff…

Vue电商项目--项目路由

项目路由分析 vue-router 路由分为KV node平台&#xff08;并非语言&#xff09; 对于后台而言:K即为URL地址 V即为相应的中间件 前端路由: K即为URL&#xff08;网络资源定位符&#xff09; V即为相应的路由组件 路由的一个分析 确定项目结构顺序:上中下 -----只有中间部…