MySQL数据表的“增删查改“

news2024/11/20 9:38:36

我们学习数据库, 最重要的就是要学会对数据表表进行"增删查改"(CRUD).(C -- create, R -- retrieve, U -- update, D -- delete)

目录

一. "增"(create)

1. 普通新增

2. 指定列新增

 3. 一次插入多行

4. 用insert插入时间

5. 小结

二. "查"(retrieve)

1. 全列查询

2. 指定列查询

3. 查询时指定表达式 

4. 去重查询

5. 排序查询

6. 条件查询(查询中最关键的操作)

7. 分页查询

8. 小结

 三. "改"(update)

四. "删"(delete) 


一. "增"(create)

MySQL中, 新增元素的基本语法如下:

1. 普通新增

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

例如:

注: MySQL中, 表示字符串使用单引号或者双引号都可以

注意:

(1) 这里值的个数和类型, 要和表结构相匹配.

 如上图, 列数和值的个数不匹配.

如上图, 明明第二列插入的int类型和表中定义的varchar类型不匹配, 为什么还能插入成功呢? 这里我们就不得不提到SQL语言的"弱类型"特性. 

SQL(结构化查询语言)通常被认为是一种“弱类型”或“动态类型”的语言. SQL可以在查询执行时自动进行数据类型转换. 例如在这里SQL就自动把int类型的3转换成了字符串类型. 但SQL并非在任何情况下都能将数据类型自动转换.

例如在这里SQL就无法将字符串类型的"李四"转换成int类型, 此时程序就会报错.

2. 指定列新增

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

(注意: 插入值的 个数, 类型, 顺序 要和前面指定的列名匹配).

 3. 一次插入多行

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

每个括号表示一行.

还可以和"指定列新增"配合使用

例如:

4. 用insert插入时间

字符串的形式插入时间.

可以使用now()来插入当前时间. (注: now()获取的时间是字符串类型的).

5. 小结

(1) 普通新增: insert into 表名 values(值, 值, 值 ......);

(2) 指定列新增: insert into 表名(列名, 列名 ......) values(值, 值 ......);

(3) 一次插入多行: insert into 表名 values(值, 值 ...), (值, 值 ...), (值, 值 ...) ...;

(4) 用 insert 插入时间: 以字符串的形式插入时间, 获取当前时间使用now()

二. "查"(retrieve)

SQL中, "增删改"都很简单, "查"比较复杂. 本篇博客我们先介绍简单的"查"操作.

MySQL中, 新增元素的基本语法如下:

1. 全列查询

即查询出指定表的所有行和所有列.

select * from 表名;

(注意: *是通配符. 在这里, *代指所有列)

注意: select* 是一个非常危险的操作. 因为一旦表的规模非常大, 此时进行select*操作, 就会产生大量的硬盘io和网络io, 很可能会把硬盘/网卡的带宽"吃满", 造成"拥堵". 使得其他客户端在尝试访问数据库时, 访问操作就无法正常进行了.

2. 指定列查询

查询的时候, 手动指定列名, 查询出来的结果就是指定的列.

select 列名, 列名 from 表名;

3. 查询时指定表达式 

select 表达式(as 别名) from 表名;

这里的表达式: 可以是针对某个列的加减乘除, 也可以是针对多个列的加减乘除.

例如:  我们想把成绩表每个学生的语文成绩加10分后查询:

把每个学生的总分查询出来:

注意: 这里可以给chinese,math,english的和取一个别名sum.需要使用到"as".如下:

 也可以省略as,但是我们并不建议这样做, 因为这样很容易造成SQL语句表达含义不清晰.

注意: 查询操作(select)生成的表只是"临时表". 数据库本体(数据库服务器硬盘上的数据)不会发生任何改变.

4. 去重查询

去重的含义: 多个行的数据, 如果出现相同的, 就会只保留一份.

select distinct 列名 from 表名;

5. 排序查询

针对查询结果进行排序

... order by 列名;

注意: 如果排序中出现null, null会被视为最小值.

例如: 用数学成绩来排序

(默认是升序排列) 当然升序还是降序也可以手动指定. (asc -- 升序, desc -- 降序). (这里的asc是ascend的缩写, desc是descend的缩写).

也可以指定多个列排序, 排序规则为: 先使用第一列来排列, 如果第一列元素相同, 则使用第二列, 如果前两列都相同, 则使用第三列 ......

  ... order by 列名, 列名, 列名 ......

6. 条件查询(查询中最关键的操作)

查询过程中: 一行一行地遍历表, 根据筛选条件, 把每一行的数据代入到条件中, 满足就保留并显示, 不满足就跳过.

select 列名 from 表名 where 条件;

条件运算符:

>, >=, <, <= : 大于,大于等于, 小于,小于等于

= : 等于, 不支持null的比较 (例如: null = null 的结果为 null)

<=> : 等于, 支持null的比较 (例如: null <=> null 的结果为 true)

(注意: 只要有null参加的运算,结果都是null)

!= : 不等于

between a and b : 范围匹配, 闭区间[a, b]. 如果value值在[a, b]范围内, 就返回true.

例如: 

in (option1, option2 ......) : 如果是几个option中的任意一个, 则返回true.

例如:

is null : 是null

is not null : 不是null

like : 模糊匹配 (即: 不要求完全相等, 满足一些条件可以了) 此外还需要搭配通配符来使用. 

(%匹配0个或任意个字符, _匹配一个特定字符)

例如: 

and : 并且

or : 或者

not : 非(逻辑取反)

7. 分页查询

select 列名 from 表名 limit N (offset M):

N代表限制查询几条数据.

例如:

指定limit时, 还可以搭配offset来使用. offset表示从下标为几开始算limit.

例如:

8. 小结

(1) 全列查询: select * from 表名;

(2) 指定列查询: select 列名, 列名 from 表名;

(3) 查询时指定表达式: select 表达式(as 别名) from 表名;

(4) 去重查询: select distinct 列名 from 表名;

(5) 排序查询: ... order by 列名 desc/asc;

(6) 条件查询: select 列名 from 表名 where 条件;

(7) 分页查询: select 列名 from 表名 limit N (offset M):

 三. "改"(update)

使用update所完成的修改, 是真正在硬盘上完成了修改. 这样的修改, 是"持久有效"的.

基本语法:

update 表名 set 列名 = 值, 列名 = 值, 列名 = 值 ......;

注意:

(1) 这里还可以配合使用where, order by, limit 来对查询结果进行条件限制/排序/分页.

(2) 如果没有指定条件, 默认对所有列进行修改.

例如, 这里我们要把sunwukong的english成绩改为79:

 从上面结果我们可以看到:  "查询成功, 1行受到影响", "匹配到的行数:1 , 修改的行数:1, 警告: 0".

注意: 这里匹配到的行数和实际被修改的行数不一定相等, 要根据实际情况决定, 比如: 

这里虽然匹配到了9行, 但是只修改了6行. 因为只要有null参与的运算, 结果都是null, 无法修改.

注意: 这里写到的 chinese = chinese + 10  不能写成chinese += 10. 因为SQL语言中没有这样的语法. 

再例: 我们要把louxiang的id 6,成绩 99, 87, 74都记录下来

update是一个非常简单单操作, 关于update的操作, 大概就是这么多.

四. "删"(delete) 

基本语法: 

delete from 表名 where 条件 (order by / limit N).

注意:

(1) delete(删除)操作也是一个非常危险的操作, 在实际开发中, 要谨慎使用.

(2) 如果delete语句没有指定条件, 那么默认会删除表中所有数据.

(2) 注意辨析delete from 表名 和 drop table 表名 的区别: delete 只是删除表中数据, 但是表依然存在; drop 是连数据带表一块都删除了.

以上就是本篇博客的全部内容啦,如果喜欢小编的文章,可以点赞,评论,收藏~

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

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

相关文章

港口与航运3D三维虚拟仿真展区让更多人了解到海洋知识

在短短20天内&#xff0c;搭建起200多家线上3D展厅&#xff0c;听起来似乎是一项艰巨的任务。然而&#xff0c;对于我们的3d云展平台而言&#xff0c;这早已成为常态。连续三年&#xff0c;我们已成功为众多会展公司在短时间内构建出几百家甚至上千家的线上3D展会&#xff0c;见…

AD23中一些好用的功能

1.关闭在线DRC功能&#xff0c;可以避免布线时候一卡一卡的问题&#xff1a; 取消在线DRC的勾选&#xff1a; 2.AD的在线封装库&#xff0c;非常好用&#xff1a; 如何优雅地服用AD 21的在线元件库 – 吴川斌的博客 (mr-wu.cn) 3.如何恢复Altium Designer23默认窗口布局 打开…

搭贝财务管理助您轻松掌控财务大局

在当今竞争激烈的商业环境中&#xff0c;有效的财务管理是企业成功的关键之一。搭贝财务管理平台为您提供了一揽子解决方案&#xff0c;助您轻松掌握财务大局&#xff0c;实现财务管控的全面数字化。 &#x1f4c8; 基础信息管理 搭贝财务管理平台首先提供了完善的基础信息管理…

图算法新书发布会圆满成功,大咖现场都讲了啥?

5月24日&#xff0c;嬴图与机工社携手举办的“《图算法&#xff1a;行业应用与实践》新书发布会”圆满成功。 现场直播在线观众达4000人/次左右&#xff0c;点赞数量超7000&#xff0c;直至发布会尾声&#xff0c;观看人数仍在持续增长。 通过观众们的反馈&#xff0c;我们也对…

对北京新发地当时菜品三十天内价格分布式爬取(1)---(获取当时菜品数据并构建请求数据推入redis)

本次项目网页url 北京新发地: http://www.xinfadi.com.cn/priceDetail.html 我们首先创建一个爬虫用于收集url与请求的data然后b,c,d使用RedisCrawlSpider来对数据进行分布式爬取 在此篇中我们仅介绍爬虫a 一.获取当天所有菜品数据 这是一条请求的负载我们只需要对pubDateSta…

Creo装配体中只显示一部分零部件

从模型树中选中要显示的零部件&#xff0c;也可以结合Ctrl框选的方式选择对象。然后在模型树右击等会弹出选项&#xff0c;点选----即可

内存泄漏面面谈

概述 主要介绍了内存泄漏的关注点是对象&#xff0c;对内存问题进行了分类并且确定本文关注点是内存泄漏&#xff0c;15种内存泄漏判断方式&#xff0c;hprof文件的用法和分析过程&#xff0c;以及memory profiler工具一些基本概念&#xff0c;最后提到了如何触发内存泄漏问题…

护网2024-攻防对抗解决方案思路

一、护网行动简介 近年来&#xff0c;网络安全已被国家上升为国家安全的战略层面&#xff0c;网络安全同样也被视为维护企业业务持续性的关键。国家在网络安全治理方面不断出台法规与制度&#xff0c;并实施了一些大型项目和计划&#xff0c;如网络安全法、等级保护、网络安全…

Nacos服务分级存储模型

Nacos服务分级存储模型 Nacos把服务拆分为三级 一级 服务 二级 集群 三级 实例 将某服务 例如订单模块 拆分为北京 上海 杭州集群 为了避免跨地域调用集群实例 就近原则先调用本地的实例 不行再去跨地域调用 提高容灾处理能力 负载均衡: 当服务去请求本地的集群实例 实例很多的…

ssm136公司项目管理系统设计与实现+jsp

公司项目管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本T公司项目管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在…

SRS视频服务器应用研究

1.SRS尝试从源码编译启动 1.1.安装ubuntu 下载镜像文件 使用VMWare安装&#xff0c;过程中出现蓝屏&#xff0c;后将VM的软件版本从15.5升级到17&#xff0c;就正常了。

基于SpringBoot+Vue+Redis+Mybatis的商城购物系统 【系统实现+系统源码+答辩PPT】

前言 该系统采用SpringBootVue前后端分离开发&#xff0c;前端是一个单独的项目&#xff0c;后端是一个单独的项目。   技术栈&#xff1a;SpringBootVueMybatisRedisMysql   开发工具&#xff1a;IDEA、Vscode   浏览器&#xff1a;Chrome   开发环境&#xff1a;JDK1…

Java类和包

一.什么是包 粗暴的讲&#xff0c;包就是一个文件夹 、在src路径下&#xff0c;可以创建一个软件包&#xff0c;这个就是包 我们来创建一个包 这里我们看到&#xff0c;我们创建了两个包&#xff0c;在俩包中分别创建一个Java文件 如果我想在text中调用text2&#xff0c;看…

【MiniCPM-V】win10本地部署踩坑

尝试最新大模型MiniCPM-V&#xff0c;题主的3080Ti 16G显存&#xff0c;CUDA12.3&#xff0c;选用模型openbmb/MiniCPM-Llama3-V-2_5。 踩坑经过 Could not create share link. Please check your internet connection or our status page: https://status.gradio.app 解决方…

云服务器如何使用局域网服务器的磁盘空间

说明 云服务器中的磁盘空间不足时&#xff0c;想要开通更多的磁盘空间&#xff0c;但奈何价格太贵&#xff0c;开不起 刚好局域网中有闲置的服务器空间可以拿来用&#xff0c;这里我们直接使用Samba服务来共享文件夹&#xff0c;使用frp来进行内网穿透&#xff1b; 1、磁盘挂…

ICPC训练赛补题集

ICPC训练赛补题集 文章目录 ICPC训练赛补题集D - Fast and Fat (负重越野)I-路径规划G. Inscryption(邪恶铭刻)NEW Houses D - Fast and Fat (负重越野) 原题链接&#xff1a;原题链接 题意&#xff1a;体重大的背体重小的速度不变&#xff0c;体重小的背体重大的速度会变化&a…

家用洗地机哪个品牌好?家用洗地机排行榜前十名

随着洗地机逐渐进入大众视野&#xff0c;这种集吸、拖、洗功能于一体的清洁工具&#xff0c;凭借其高效便捷的特点&#xff0c;成为家庭清洁的新宠。洗地机不仅能够减少地面清洁时间&#xff0c;节省体力&#xff0c;还能提高清洁效果。然而&#xff0c;面对琳琅满目的洗地机品…

多系统集成的项目周期为何普遍较长?

在现代企业的运营中&#xff0c;各种信息系统的集成已成为提升效率和竞争力的关键。然而&#xff0c;当工厂的ERP系统需要与MES、SRM、WMS、CRM等其他系统集成时&#xff0c;项目周期往往长达一年以上&#xff0c;这不仅耗费时间、人力和财力&#xff0c;还可能影响企业的正常运…

体验SmartEDA的高效与便捷,电子设计从未如此简单

SmartEDA&#xff1a;革新电子设计&#xff0c;让高效与便捷触手可及 在快节奏的现代生活中&#xff0c;科技日新月异&#xff0c;各行各业都在寻求更高效、更便捷的解决方案。对于电子设计行业而言&#xff0c;SmartEDA的出现&#xff0c;无疑是一场革命性的变革。它以其高效…

腾讯云联络中心ivr调用自定义接口

1&#xff0c;java代码&#xff1a;http接口 RequestMapping(value "/getMsg5", method RequestMethod.POST) public Map<String, String> index(RequestBody Map<String, String> params) {String id params.get("id");HashMap<String…