【MySQL】基本查询(二)

文章目录

  • 一. 结果排序
  • 二. 筛选分页结果
  • 三. Update
  • 四. Delete
  • 五. 截断表
  • 六. 插入查询结果
  • 结束语

操作如下表

//创建表结构
mysql> create table exam_result(-> id int unsigned primary key auto_increment,-> name varchar(20) not null comment '同学姓名',-> chinese float default 0.0 comment '语文成绩',-> math float default 0.0 comment '数学成绩',-> english float default 0.0 comment '英语成绩'-> );//插入测试数据
INSERT INTO exam_result (name, chinese, math, english) VALUES
('唐三藏', 67, 98, 56),
('孙悟空', 87, 78, 77),
('猪悟能', 88, 98, 90),
('曹孟德', 82, 84, 67),
('刘玄德', 55, 85, 45),
('孙权', 70, 73, 78),
('宋公明', 75, 65, 30);

一. 结果排序

语法:

ASC 升序(从小到大)
DESX 降序(从大到小)
排序默认为ASC 升序
select ... from table_name order by 属性 [ASC 或者 DESC]

注意:没有order by 子句的查询,返回的顺序是未定义的。
NULL值比任何值都小


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

mysql> select name,math from exam_result order by math;
+-----------+------+
| name      | math |
+-----------+------+
| 宋公明    |   65 |
| 孙权      |   73 |
| 孙悟空    |   78 |
| 曹孟德    |   84 |
| 刘玄德    |   85 |
| 唐三藏    |   98 |
| 猪悟能    |   98 |
+-----------+------+

查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
多字段排序,排序优先级随书写顺序

mysql> select name,math,english,chinese from exam_result order by math desc,english asc,math asc;
+-----------+------+---------+---------+
| name      | math | english | chinese |
+-----------+------+---------+---------+
| 唐三藏    |   98 |      56 |      67 |
| 猪悟能    |   98 |      90 |      88 |
| 刘玄德    |   85 |      45 |      55 |
| 曹孟德    |   84 |      67 |      82 |
| 孙悟空    |   78 |      77 |      87 |
| 孙权      |   73 |      78 |      70 |
| 宋公明    |   65 |      30 |      75 |
+-----------+------+---------+---------+

查询同学及总分,由高到低
order by 子句可以使用别名

mysql> select name,chinese+math+english as total from exam_result order by total desc;
+-----------+-------+
| name      | total |
+-----------+-------+
| 猪悟能    |   276 |
| 孙悟空    |   242 |
| 曹孟德    |   233 |
| 唐三藏    |   221 |
| 孙权      |   221 |
| 刘玄德    |   185 |
| 宋公明    |   170 |
+-----------+-------+

查询姓孙的同学或者姓曹的同学的数学成绩,结果按数学成绩由高到低显示

mysql> select name,math from exam_result where name like '孙%' or name like '曹%' order by math desc;
+-----------+------+
| name      | math |
+-----------+------+
| 曹孟德    |   84 |
| 孙悟空    |   78 |
| 孙权      |   73 |
+-----------+------+

二. 筛选分页结果

行的起始下标是0
从0开始,筛选n条结果(默认从0开始)
select ... from table_name ... limit n
从s开始,筛选n条结果
select ... from table_name ... limit s,n
从s开始,筛选n条结果(建议使用
select ... from table_name ... limit n offset s

注意:对未知表进行查询时,最好加一条limit 1,避免因为表中数据过大,查询全表数据导致数据库卡死


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

//第一页
mysql> select id,name,math,english,chinese from exam_result
order by id limit 3 offset 0;
+----+-----------+------+---------+---------+
| id | name      | math | english | chinese |
+----+-----------+------+---------+---------+
|  1 | 唐三藏    |   98 |      56 |      67 |
|  2 | 孙悟空    |   78 |      77 |      87 |
|  3 | 猪悟能    |   98 |      90 |      88 |
+----+-----------+------+---------+---------+
//第二页
mysql> select id,name,math,english,chinese from exam_result
order by id limit 3 offset 3;
+----+-----------+------+---------+---------+
| id | name      | math | english | chinese |
+----+-----------+------+---------+---------+
|  4 | 曹孟德    |   84 |      67 |      82 |
|  5 | 刘玄德    |   85 |      45 |      55 |
|  6 | 孙权      |   73 |      78 |      70 |
+----+-----------+------+---------+---------+
//第三页
mysql> select id,name,math,english,chinese from exam_result
order by id limit 3 offset 6;
+----+-----------+------+---------+---------+
| id | name      | math | english | chinese |
+----+-----------+------+---------+---------+
|  7 | 宋公明    |   65 |      30 |      75 |
+----+-----------+------+---------+---------+

三. Update

update table_name set 属性=数据 [where...] [order by ...] [limit ...]
[]内的容可以省略

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

mysql> update exam_result set math=80 where name='孙悟空';

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

mysql> update exam_result set math=60,chinese=70 where name='曹孟德';

将总成绩倒数前三的3位同学的数学成绩加上30分
MySQL不支持math+=30,但可以使用math=math+30

mysql> update exam_result set math=math+30 order by english+math+chinese limit 3;

将所有同学的语文成绩更新为原来的2倍

没有where子句的update会更新全表数据
update exam_result set chinese=chinese*2;

四. Delete

delete from table_name [where...] [order by...] [limit ...]

删除孙悟空同学的信息

delete from exam_result where name='孙悟空';

删除整表数据 注意慎用

delete from table_name;

需要注意的是,delete删除数据不会改变auto_increment自增长的记录

五. 截断表

truncate [table] table_name;

注意:此操作慎用

  1. 只能对整表操作,不能像delete那样针对部分数据使用
  2. 实际上truncate不对数据操作,所以比delete更快,但是truncate在删除数据的时候,并不经过真正的事物,所以无法回滚
  3. 会重置auto_increment

六. 插入查询结果

insert into table_name 属性列 select ...
将select查询的结果插入表中

实验:删除表中的重复数据,重复数据只能有一份

mysql> create table duplicate_table(-> id int,-> name varchar(20)-> );
mysql> insert into duplicate_table values-> (100,'aaa'),-> (100,'aaa'),-> (200,'bbb'),-> (200,'bbb'),-> (200,'bbb'),-> (300,'ccc');

思路:建立一个具有相同表结构的表,然后将dupliate_table的数据,无重复的查找出来,然后插入新表中,再将新表重命名为duplicate_table

//建立新表
mysql> create table no_duplicate_table like duplicate_table;
//将查询的无重复的数据插入新表
mysql> insert into no_duplicate_table select distinct * from duplicate_table;
//删除旧表
mysql> drop table duplicate_table;
//重命名新表
mysql> rename table no_duplicate_table to duplicate_table;

结束语

感谢你的阅读

如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站强制跳转至国家反诈中心该怎么办?怎么处理?如何解封?

在互联网环境中,网站安全是非常重要的。然而,在实际操作过程中,不少网站可能因内容问题、技术安全漏洞等原因被迫下线甚至跳转至国家反诈骗中心网址。面对这一严峻问题,我们如何有效解决,让网站恢复运行并解除强制跳转…

外汇天眼:三大方法提高容错率——成功投资者的秘密策略!

容错率是什么? 虽然A股市场投资体验不佳,但相较于中概股市场的波动,A股投资者仍有幸福感。以中概股的代表,金龙指数ETF为例,仅一年多时间内从85.90元下跌至20.47元,跌幅高达76%。 然而,有一位…

Spring实例化源码解析之Custom Events下集(九)

上集从官网的角度讲解了基本的使用和源码的内容,没有深入的进行分析,本章将从源码的角度分析ApplicationEvent、ApplicationListener、ApplicationEventMulticaster这三者之间的关系。 initApplicationEventMulticaster 上一章后续部分给出了源码的含义…

PTE阶段规划

目录 复习的各个阶段 线下应该如何 rs应对 从来都是流利度大于内容 推荐的练习网站 口语 DI 关键词是不能念错 口语 RL rl每日练习方法 ASQ 写作 swt 阅读 一半靠机经 听力 口语和听力 考模版来熟悉 熟悉模版 强调的是,整个的逻辑思维 字字和句句都…

使用运放产生各种波形

目录复制 文章目录 RC正弦振荡电路文氏电桥振荡电路移项式正弦波振荡电路 集成函数发生器运算放大器驱动电容性负载峰值检波多通道运放未使用的运放接法 RC正弦振荡电路 文氏电桥振荡电路 这个振荡器起振条件RF > 2R1,起振后又希望RF 2R1产生矛盾怎么办? 将RF换…

IP 子网划分(VLSM)

目录 一、 为什么要划分子网 二、如何划分子网 1、划分两个子网 2、划分多个子网 一、 为什么要划分子网 假设有一个B类IP地址172.16.0.0,B类IP的默认子网掩码是 255.255.0.0,那么该网段内IP的变化范围为 172.16.0.0 ~ 172.16.255.255,即…

SpringMVC系列-4 参数解析器

背景: 本文作为SpringMVC系列的第四篇,介绍参数解析器。本文讨论的参数解析表示从HTTP消息中解析出JAVA对象或流对象并传参给Controller接口的过程。 本文内容包括介绍参数解析器工作原理、常见的参数解析器、自定义参数解析器等三部分。其中&#xff0…

蓝桥等考Python组别十六级002

第一部分:选择题 1、Python L16 (15分) a和b是两个集合,它们的关系如下图所示: 以下哪个表达式的值是True?( ) a > ba < ba == ba >= b正确答案:B 2、Python

低功耗国产蓝牙芯片OM6621/HS6621- 蓝牙防丢器

在繁忙的生活中&#xff0c;我们往往会因为疏忽而丢失贵重物品&#xff0c;如钱包、钥匙、手机等&#xff0c;给生活带来不小的麻烦。然而&#xff0c;现代科技正为我们提供一种聪明的解决方案——蓝牙防丢器。这款小巧智能的装置不仅保护您的财物&#xff0c;还为您的生活带来…

swift加载h5页面空白

swift加载h5页面空白 problem 背景 xcode swift 项目&#xff0c;WebView方式加载h5页面本地h5地址是&#xff1a;http://localhost:5173/ 浏览器打开正常 Swift 加载h5&#xff1a; 百度官网 加载正常本地h5页面 加载空白&#xff0c;没有报错 override func viewDidLoad…

系统架构设计:1论软件系统建模方法及其应用

目录 一 软件系统建模方法 1结构化建模 2信息工程建模 3面向对象建模 4功能分解法 5基于构件的开发方法 一 软件系统建模方法 软件建模体现了软件设计的思想&#xff0c;是连接需求和实现的桥梁&#xff0c;用于指导软件的具体实现。软件模型不是软件系统的完备表示&…

解决maven骨架加载慢问题(亲测解决)

1、下载archetype-catalog.xml 网站 &#xff1a; https://repo.maven.apache.org/maven2/ 2、放在这个文件夹下面 3、setting–>build–>Runner : -DarchetypeCataloglocal