MySQL表CRUD(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL表CRUD

2.3 结果排序

SELECT ... FROM table_name [WHERE ...] ORDER BY column [ASC | DESC] [, ...];

SQL中大写的表示关键字,[ ]中代表的是可选项

ASC和DESC分别代表的是排升序和排降序,默认为ASC

注意: 若查询SQL中没有order by子句,那么返回的顺序是未定义的


查询同学及其数学成绩,按数学成绩升序显示


在select的column列表中指明要查询的列为姓名和数学成绩,在order by子句中指明按照数学成绩进行升序排序


9e131664776d42d9b5bba9fc87276d18.png


查询同学及其QQ号,按QQ号升序显示


在select的column列表中指明要查询的列为姓名和QQ号,在order by子句中指明按照QQ号进行升序排序

f36aa4e953b54fc598d00a599f23a1a6.png



NULL值视为比任何值都小,因此排升序时出现在最上面


查询同学的各门成绩,依次按数学降序、英语升序、语文升序显示


在select的column列表中指明要查询的列为姓名、数学成绩、英语成绩和语文成绩,在order by子句中指明依次按照数学成绩排降序、英语成绩排升序和语文成绩排升序


6acc6e365481475ca4da55fd848ed181.png


可以看到显示结果是按照数学成绩进行降序排序的,而相同的数学成绩之间则是按照英语成绩进行升序排序的


order by子句中可以指明按照多个字段进行排序,每个字段都可以指明按照升序或降序进行排序,各个字段之间使用逗号隔开,排序优先级与书写顺序相同

如上图中SQL,当两条记录的数学成绩相同时就会按照英语成绩进行排序,若这两条记录的英语成绩也相同就会继续按照语文成绩进行排序,以此类推

查询同学及其总分,按总分降序显示


在select的column列表中指明要查询的列为姓名和总分(表达式查询),在order by子句中指明按照总分进行降序排序


6cc384f3a9c34c2e9425409339be3099.png


在order by子句中可以使用select中指定的别名:


查询数据时是先根据where子句筛选出符合条件的记录

然后再将符合条件的记录作为数据源来依次执行select语句

最后再通过order by子句对select语句的执行结果进行排序

即order by子句的执行是在select语句之后的,所以在order by子句中可以使用别名


查询姓孙的同学或姓曹的同学及其数学成绩,按数学成绩降序显示


题目的前半句描述的是查询,后半句描述的是排序

在排序的时候必须要有数据,因此可以先完成前面的查询动作,然后再根据题目要求进行排序

查询数据时,在where子句中指明筛选条件为姓孙或姓曹(模糊匹配),在select的column列表中指明要查询的列为姓名和数学成绩


fa80d065495840cc945ed912e14c3ff2.png


当查询到目标数据后再在查询SQL后添加order by子句,在order by子句中指明按照数学成绩进行降序排序



94b6cbc57a064927a0c9b74881bafb9a.png

2.4 筛选分页结果

从第0条记录开始,向后筛选出n条记录


SELECT ... FROM table_name [WHERE ..] [ORDER BY ...] LIMIT n;

从第s条记录开始,向后筛选出n条记录


SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;

从第s条记录开始,向后筛选出n条记录


SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

SQL中大写的表示关键字,[ ]中代表的是可选项

查询SQL中各语句的执行顺序为:where、select、order by、limit

limit子句在筛选记录时,记录的下标从0开始

建议: 对未知表进行查询时最好在查询SQL后加上limit,避免在查询全表数据时因为表中数据过大而导致数据库卡死


按id进行分页,每页3条记录,分别显示第1、2、3页


这里使用成绩表中的数据来演示分页查询,成绩表中的内容如下:


02ce96abcfcf4e74b1525645d6b79a8c.png


查询第1页记录时在查询全表数据的SQL后,加上limit子句指明从第0条记录开始,向后筛选出3条记录


8a0beb1acbe44e1885957d8a142f595b.png


查询第2页记录时在查询全表数据的SQL后,加上limit子句指明从第3条记录开始,向后筛选出3条记录

c238f3b7654d4829997570c6a860e4cf.png



查询第3页记录时在查询全表数据的SQL后,加上limit子句指明从第6条记录开始,向后筛选出3条记录

e6627630b17c456bbaa740e7b530704a.png



若从表中筛选出的记录不足n个,则筛选出几个就显示几个


三、Update

UPDATE table_name SET column1=expr1 [, column2=expr2] ... [WHERE ...] [ORDER BY ...] [LIMIT ...];

SQL中大写的表示关键字,[ ]中代表的是可选项

SQL中的column=expr,表示将记录中列名为column的值修改为expr

在修改数据之前需先找到待修改的记录,update语句中的where、order by和limit就是用来定位数据的

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


在update语句中指明要将筛选出来的记录的数学成绩改为80分


74408d1ac7974cc89155b3f85b1814f8.png


将曹孟德同学的数学成绩修改为60分,语文成绩修改为70分

bdc59a0c0eaf48d191e4e5a8d35c93d5.png



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


在修改数据之前,先查看总成绩倒数前三的3位同学的数学成绩

55f8efc92e714faebb48f996e0e29324.png



在update语句中指明要将筛选出来的记录的数学成绩加上30分,并在修改后再次查看数据确保数据成功被修改1b8bdebf66f34aa2b94845f833d70cfa.png




注意:MySQL中不支持+=这种复合赋值运算符。在查看更新后的数据时不能查看总成绩倒数前三的3位同学,因为之前总成绩倒数前三的3位同学,数学成绩加上30分后可能就不再是倒数前三了


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
2月前
|
关系型数据库 MySQL 数据库
MySQL 表的CRUD与复合查询
【9月更文挑战第26天】本文介绍了数据库操作中的 CRUD(创建、读取、更新、删除)基本操作及复合查询。创建操作使用 `INSERT INTO` 语句插入数据,支持单条和批量插入;读取操作使用 `SELECT` 语句查询数据,可进行基本查询、条件查询和排序查询;更新操作使用 `UPDATE` 语句修改数据;删除操作使用 `DELETE FROM` 语句删除数据。此外,还介绍了复合查询,包括连接查询(如内连接、左连接)和子查询,以及聚合函数与分组查询,并提供了示例代码。
|
3月前
|
前端开发 Java 关系型数据库
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
219 0
|
4月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
4月前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表
|
4月前
|
运维 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在处理MySQL表新增数据记录时,没有正确触发变更事件,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
关系型数据库 MySQL
蓝易云 - 如何修复MySQL中损坏的表
最后,为了防止数据丢失,定期备份数据是非常重要的。
153 3
|
5月前
|
SQL 关系型数据库 MySQL
ClickHouse(23)ClickHouse集成Mysql表引擎详细解析
ClickHouse的MySQL引擎允许执行`SELECT`查询从远程MySQL服务器。使用`MySQL('host:port', 'database', 'table', 'user', 'password'[,...])`格式连接,支持简单`WHERE`子句在MySQL端处理,复杂条件和`LIMIT`在ClickHouse端执行。不支持`NULL`值,用默认值替换。系列文章涵盖ClickHouse安装、集群搭建、表引擎解析等主题。[链接](https://zhangfeidezhu.com/?p=468)有更多
253 0
|
5月前
|
SQL 缓存 关系型数据库
MySQL操作全攻略:库、表、数据、事务全面指南
MySQL操作全攻略:库、表、数据、事务全面指南
|
5月前
|
SQL 关系型数据库 MySQL
经验大分享:MySQL(三)数据库表的查询操作【重要】
经验大分享:MySQL(三)数据库表的查询操作【重要】
60 0