MySQL之程序猿得“爱恨情仇“--(增删查改等MySQL基本操作)(下)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL之程序猿得“爱恨情仇“--(增删查改等MySQL基本操作)(下)

四.表的增删改查(CURD)



1.新增(Create)


1.新增一条记录-单行全列添加(所添加列必须与建表时一致)

语法: insert into 表名 values (), (), … () ;

8b33aeb915a44e80b1c1736bb03c93ea.png

建表后,可以一次添加多组数据,由于时全列添加所添加的记录必须要同建表时字段一致,同时在表结构处的Null哪儿显示YES 即可此列添加null值


2.新增一条记录-多行指定列数(所添加的列必须与指定的列一致)

语法: insert into student(指定field) values(field);

6396b5b8c00148f4b7724535406ae9df.png

此处,name字段即为指定字段,在添加数据时,只需要添加name字段内容即可


2.查找(Retrieve)


对于上面我们新增一条记录后,虽然显示添加成功了,那我们去哪里查看呢? 在MySQL中同样有着对应的查找功能!


1.全列查找

语法: select * from 表名;

ff95778af1814adcaf85cb76bb033613.png


其中 select * from 里这个 * 为通配符的意思.

对于全列查询需要慎用,在没有查找限制条件且数据量巨大的情况下,全列查询容易让硬盘IO吃满,从而让后面的人进行访问服务器时无法访问!


2.指定列查询


指定需要查那一列,有一个筛选的过程!

语法: select 列字段,列字段… from 表名;

46e51cf2035646ce848c751d941e203b.png

上述操作中

1)先创建了一张班级表,包含年级,班级,该班学生总数

2)添加了三组数据

3)进行指定列查询, 其中 grade, id 为我们指定需要查询的列,结果为红色圈中所示,查询指定列则会筛选处符合条件的记录,并且以指定的字段为列名


3.查询的表达式包含字段

语法: select … 表达式 from 表名

3f4bc36783d5452c8e9f51254bc477bd.png


这是一个表达式包含一个字段(也可为多个字段)并且指定列查询

  1. grade 为指定字段
  2. total + 10 为表达式(数学上的算数关系等)加一个字段(此处为10),意为以在学生总数total 的基础上加 每个班 加10人并以该表达式和字段为新结果的列名


4.起别名


在上述表达式包含字段的查询中,最后的结果以该整体字段为该列列名,显得有点突兀,因此我们可以通过起别名的形式来将这个表达式包含字段取一个新的名字来命名该列

语法:select … 表达式 as 别名 from 表名;

2c62abbcd91a4502a2718c0b5d47b64c.png


通过执行该sql语句后可以看到,total+10该结果集中后新的列名为total_people, total + 10 为表达式


5.去重


去重操作,对某一列中的数据进行去重(去除该列中相同的其余几行)

语法: select distinct 列名 from 表名;

768b3161d8bc4eb28231ce34551af6dd.png

上述的班级表中,存在grade和id相同的班,对其按照grade去重,最终筛选处去重后grade的一列(保留需要去重的唯一 一列)


除了单列去重,也可以多列去重,例如:

30c853eff9934c2bae45cbde13e636d8.png


需要注意的是:

1)进行多列去重时,需要某行中的两列同时相同才可以去重


6.条件查询(重中之重)


1. 条件查询中使用得基本条件

在进行条件查询之前,需要来认识一下MySQL中一些基本条件


image.png

在进行筛选记录时,加入一定的条件进行限制筛选出所需要的记录


2.全列查询加上条件

语法: select * from 表名 where 条件;

51c40f0ace8b48febdc468d68efadda0.png


上述操作为查询班级表中,班级总人数小于60得记录


3.指定列查询加上条件

语法: select filed(指定字段), filed from 表名 where 条件;

b08d747769084a7f813d9fa374542ad9.png


上述操作为查询班级表中 grade 和 id 符合总人数小于 60 得所有记录


4.AND 和 OR 条件查询

创建一张表如下:

7e4bb302eb994f13b0cdd117daf3152c.png


先来观察 AND 和 OR 同时存在时得两组示例

1).

670a7f19bf554dd897cb6bb5f721673f.png


从第一组示例不难看出,当AND 和 OR 同时存在时, 先执行了 math > 70 and English > 70 在执行 or Chinese > 80 得到如上记录

2).

95c32f24c87f43b58b5fc5ff8e777dfb.png


从第二组示例中可以看到,在AND 和 OR 同时存在时, 为了避免 AND 和 OR 优先级带来得问题导致条件并非我们想要的, 通常采取括号得形式让其单独处理


7.模糊查询


1).查看当前MySQL所使用得字符集

语法: show variables like ‘%character%’;

image.png

MySQL中, 画圈部分默认为Latin字符集,此处由于我更改了配置文件, 因此为utf8


2). 全模糊查询

语法: select …from 表名 where 列名(字段) like ‘%…’;

image.png


上述模糊查询意为 查询成绩表中所有名字以开头得所有记录, % 为通配符,可以匹配一个或多个字符


2). 指定某个位置模糊

语法: select … from 表名 where 列名(字段) like ‘_x’ ;

image.png


上述指定位置模糊查询意为 查询成绩表中所有名字中以开头得两个字得记录

综上所述, 模糊得位置可以用 ’ _ ’ (下划线) 来指定, 也可以用 ’ % ’ 通配符来代表多个字符


8.分页查询


当数据过多时, 有时候只需要一页只需要展示固定条记录, 此时我们便可以采取分页查询, 来规定一次几条记录

语法: select…from 表名 limit N offset M;

第一页

image.png


第二页

image.png


第三页

c96a6e75c4dd419389dbdffe7caac39e.png


通过上述操作, 我们就可以将一组记录分成X页

其中 N 代表了 一页有多少条记录, M 代表了 从第几页开始


9.排序
1.单一排序(只有一个字段进行排序)

语法: select … from 表名 order by 字段(所需排序得) …

例如:将成绩表中 语数英得总分取别名为 total 并将所有人按照总分升序排序

image.png


若需要降序,则需在order by 字段后面加上 desc 即可

image.png


上述排序中可以发现,无论时在升序(降序)时, NULL总时在第一(倒数第一), 由此可以看出 NULL 是一个非常特别得值, 升序是它是最大值(可以近似理解为无穷大), 降序是它是最小值, 升值比负数还小(可以近似理解为无穷小), 当存在多组值为NULL 进行排序时, 顺序为插入数据时得顺序!


2.多字段排序


语法: select … from 表名 order by filed1 desc, filed 2 , filed3 desc…;

排序优先级按照sql语句顺序执行

例如:将成绩表中查询同学的成绩并依次按照数学降序, 英语降序;

efdf88c4b53c4dc8bc76a9ae480a9165.png


先进行数学排序时, 得到如上结果,下面在数学降序得基础上在进行英语降序

fb09c7ea0b35420d947bae85f68a6b34.png


可以看出, 先进行数学降序后, 王五和张三得数学成绩相同, 只有在数学成绩相同时, 此时在进行英语降序排序, 王五和张三得排序收到英语成绩影响, 重新排序得到如上结果


综上所述, 当多字段排序时, 按照sql语句书写顺序执行, 只有当前一个排序结果相同时, 下一个排序字段才会按照此重新排序


3. 修改(Update)


语法: update 表名 set 字段(所需的修改) where/order by…


update 得使用非常灵活, 可以搭配where / order by / limit / 基本条件 同时使用, 因此在上述语法中, 可以按照要求进行自行组合


下面举例一些常见常用得:

1). 将成绩表中张三同学得数学成绩更改为 98.5

image.png


2).将成绩表中张三同学得 语文成绩改为80, 英语成绩改为90

bff0237144e847faaf382f764720c792.png


3).将总分倒数前三得同学数学成绩扣10分

36c53e65b041437eb57de8d0e9efa050.png


先将总分倒数前三得同学得成绩筛选出来

在将总分倒数前三得同学数学成绩减10分

faf000a8a930489bb67f7a1dd7a51204.png


对于MySQL得修改功能, 在使用时一定需要谨慎, 防止条件错误带来得错误修改导致后续数据错误


4.删除(Delete)


删除表中不需要的数据

语法: delete from 表名 where / order by / limit …

delete 得使用同update修改功能一样, 使用非常灵活, 同样可以根据自己的需求给定不同得条件进行限制删除表中某些数据

例如: 删除成绩表中总分最小得那个同学


未删除前:

image.png


删除后:

image.png


对于删除功能, 更是需要谨慎, 并且delete同drop不同, delete 删除得时表中某个数据, 当表中数据均 delete为

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
安全 关系型数据库 MySQL
【MySQL】表的增删查改
【MySQL】表的增删查改
|
2月前
|
存储 关系型数据库 MySQL
MySQL的一些基本操作
MySQL的一些基本操作
20 1
|
2月前
|
关系型数据库 MySQL 数据库
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
|
3月前
|
SQL 关系型数据库 MySQL
mysql 数据库 增删改查 基本操作
mysql 数据库 增删改查 基本操作
|
3月前
|
SQL Java 关系型数据库
Mysql 数据库基本操作
Mysql 数据库基本操作
|
3月前
|
SQL 关系型数据库 MySQL
MySQL基本操作——增删查改
MySQL基本操作——增删查改
26 2
|
3月前
|
SQL 存储 关系型数据库
MySQL进阶-增删查改(全网最详细sql教学)-3
MySQL进阶-增删查改(全网最详细sql教学)
33 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL进阶-增删查改(全网最详细sql教学)-2
MySQL进阶-增删查改(全网最详细sql教学)
32 0
|
3月前
|
SQL NoSQL 关系型数据库
MySQL进阶-增删查改(全网最详细sql教学)-1
MySQL进阶-增删查改(全网最详细sql教学)
35 0
|
3月前
|
NoSQL 关系型数据库 MySQL
【MySQL探索之旅】MySQL数据表的增删查改——约束
【MySQL探索之旅】MySQL数据表的增删查改——约束