MySQL表CRUD(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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分后可能就不再是倒数前三了


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
运维 DataWorks 关系型数据库
DataWorks产品使用合集之DataWorks还有就是对于mysql中的表已经存在数据了,第一次全量后面增量同步的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
38 2
|
4天前
|
关系型数据库 MySQL Java
实时计算 Flink版产品使用合集之mysql通过flink cdc同步数据,有没有办法所有表共用一个dump线程
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
9 0
|
6天前
|
SQL 关系型数据库 MySQL
MySQL第三战:CRUD,函数1以及union&union all
MySQL第三战:CRUD,函数1以及union&union all
|
6天前
|
SQL 存储 关系型数据库
【MySQL】DDL的表操作详解:创建&查询&修改&删除
【MySQL】DDL的表操作详解:创建&查询&修改&删除
|
6天前
|
存储 SQL 关系型数据库
mysql查询数据库表大小怎么操作
mysql查询数据库表大小怎么操作
|
6天前
|
SQL 关系型数据库 MySQL
使用Python的pymysql库连接MySQL,执行CRUD操作
使用Python的pymysql库连接MySQL,执行CRUD操作:安装pymysql,然后连接(host='localhost',user='root',password='yourpassword',database='yourdatabase'),创建游标。查询数据示例:`SELECT * FROM yourtable`;插入数据:`INSERT INTO yourtable...`;更新数据:`UPDATE yourtable SET...`;删除数据:`DELETE FROM yourtable WHERE...`。
29 0
|
6天前
|
存储 SQL 关系型数据库
MySQL表的增删改查---多表查询和联合查询
MySQL表的增删改查---多表查询和联合查询
|
6天前
|
存储 关系型数据库 MySQL
{MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询
{MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询
22 0
|
6天前
|
存储 关系型数据库 MySQL
|
6天前
|
关系型数据库 MySQL
MySQL 实例employee表综合查询
MySQL 实例employee表综合查询