MySQL数据操作与查询笔记 • 【第4章 SELECT 数据查询】
全部章节 >>>>
本章目录
4.1 select 选择列表
4.1.1 select 基本结构
select 查询语句的语法如下:
SELECT <COLUMN1, COLUMN2, COLUMN3...>
FROM <table_name> [WHERE < 条件表达式 >]
[GROUP BY COLUMN1, COLUMN2, COLUMN3... | HAVING < 条件表达式 >]
[ORDER BY < COLUMN1, COLUMN2, COLUMN3...> [ASC 或 DESC]]
语法说明:
必须的子句只有 select 子句和 from 子句。
where 子句用于对查询结果进行过滤。
group by 子句根据指定列分组,having 子句对分组后的结果进行过滤。(后续章节学习。)
order by 子句用于对查询结果进行排序。asc 表示升序排序,desc 表示降序排序,默认按 asc 排序。
4.1.2 选择列表
选择所有列
select * from line
查询部分列
select lineNo from line
注意:MySQL 针对表名、列名以及关键字,均不区分大小写。如表“line”可写成“LINE”;字段“miles”可写成“MILES”;“select”可写成“SELECT”。
查询出所有线路的线路名、始发站和终点站
select lineNo, from_station, end_station from line
使用 AS 关键字显示列标题
SELECT 字段名 1 AS 列标题 1,字段名 2 AS 别标题 2... FROM 表名
示例:select lineNo as 线路 , from_station as 始发站 , end_station as 终点站 from line
使用空格显示列标题名
SELECT 字段名1 列标题1,字段名2 列标题2... FROM 表名
示例:select lineNo 线路 , from_station 始发站 , end_station 终点站 from line
使用 DISTINCT 关键字过滤重复行
SELECT DISTINCT 字段名 FROM 表名
示例:select model 型号 from vehicle
示例:select distinct model 型号 from vehicle
选择列为表达式
示例:公交集团为落实政府的“公交优先” 理念,拟将所有线路的车辆数增加 20%。
select lineNo 线路号 , number 车辆数 , ceil(number*1.2) 调整后车辆数 from line;
ceil(a) 为 MySQL 中内置数学函数,其功能是对数值型 a 进行向上取整,如 ceil(12.4) 的值为 13。
floor(a) 为 MySQL 中内置数学函数,其功能是对数值型 a 进行向下取整,如 floor(12.7) 的值为 12。
round(a) 为 MySQL 中内置数学函数,其功能是对数值型 a 进行四舍五入,如 round(12.7)
4.2 MySQL 运算符
4.2.1 MySQL 算术运算符
运 算 符 |
含 义 |
+ |
加法运算 |
- |
减法运算 |
* |
乘法运算 |
/ |
除法运算,返回商 |
% |
求余运算,返回余数 |
示例:
create table tmp1(num int);
insert into tmp1 value(99);
select num, num+1, num-5+1, num*2, num/3, num/7, num%4 from tmp1
在数学运算时,除数为 0 的时候无意义,因此除法运算中除数不能为 0,如果被 0 除,则返回结果为 null。
例如:select num, num/0, num%0 from tmp1;
4.2.2 MySQL 比较运算符
运 算 符 |
含 义 |
= |
等于 |
<=> |
安全等于,可以比较 null |
<> 或 != |
不等于 |
>= |
大于等于 |
<= |
小于等于 |
> |
大于 |
< |
小于 |
IS NULL |
判断一个值是否为 null |
IS NOT NULL |
判断一个值是否不为 null |
示例:
select 1=2, 3=3,'3'=3,1>2, '3'<=>3, 'a'='a', 'a'<=>'a', 2+4=3+3, NULL=NULL, NULL<=>NULL
MySQL 进行数值比较时规则如下:
(1)若有一个或两个参数为 null,则比较运算的结果为 null。
(2)若同一个比较运算中的两个参数都是字符串,则按照字符串进行比较。
(3)若两个参数均为正数则按照整数进行比较。
(4)若一个字符串和一个数字进行相等判断,则 MySQL 可以自动将字符串转换为数字。
4.2.3 MySQL 逻辑运算符
运 算 符 |
含 义 |
AND 或者 && |
逻辑与,含义为“并且”。当所有操作数均为非零值且不为 null 时,返回值为 1;当一个或多个操作数为 0 时,返回值为 0;其余情况返回值为 null |
OR 或者 || |
逻辑或,含义为“或者”。当所有操作数均不为 null 且任意一个操作数为非零时,返回值为 1,否则为 0;当有操作数为 null,且存在另一个操作数为非零时,返回值为 1,否则为 null;当所有操作数均为 null 时,返回值为 null |
NOT 或者 ! |
逻辑非,含义为“取反”。当操作数为 0 时,返回值为 1;当操作数为非零时,返回值为 0;当操作数为 null 时,返回值为 null |
XOR |
逻辑异或。当任意一个操作数为 null 时,返回值为 null;对于非 null 的操作数,如果两个操作数都是非零或者都是零,则返回值为 0;如果一个为零,另一个为非零,返回结果为 1 |
4.2.4 条件查询中的运算符
1、单条件查询
select * from line where miles>20
select * from line where company=' 公交三公司 '
select * from line where company<>' 通恒公司 '
或
select * from line where company!=' 通恒公司 '
2、多条件查询
select * from line where company=' 公交二公司 ' and miles>=20
或
select * from line where company=' 公交二公司 ' && miles>=20
select * from line where company=' 公交三公司 ' or company=' 公交四公司 '
或
select * from line where company=' 公交三公司 ' || company=' 公交四公司 '
示例:使用多条件查询所有属于公交三公司和公交四公司且营运里程数大于 25 千米的线路信息
分析:
条件一:线路所属公司为公交三公司或者公交四公司,使用“or”运算符实现“或者”条件。
条件二:线路营运里程数大于 25 千米。
条件一与条件二作为查询的并列条件之一,需使用“and”实现。
select * from line where (company=' 公交三公司 ' or company=' 公交四公司 ') and miles>25
示例:查询地址为空的驾驶员信息。
select * from driver where phone IS NULL
select * from vehicle where driverID IS NOT NULL
4.3 定制显示查询结果
4.3.1 查询结果排序
1、单列排序
select * from line order by miles asc
或
select * from line order by miles
select lineNo 线路号 ,company 所属公司 , from_station 起始站 , end_station 终点站 , miles 里程数 , number 车辆数 from line order by number desc
可用字段别名“车辆数”替换“number”
2、多列排序
select lineNo 线路号 ,company 所属公司 , from_station 起始站 , end_station 终点站 , miles 里程数 , number 车辆数 from line
order by miles, number desc
4.3.2 使用 LIMIT 限制查询结果数量
LIMIT 子句可以被用于强制 select 语句返回指定的记录数,具体语法如下:
偏移量为 0,省略
语法说明:
参数 offset 和 rows 必须为整数,offset 可以省略。
offset 指定第一个返回记录行的偏移量。注意:初始记录行的偏移量是 0,而不是 1。
rows 指定返回记录行的最大数目。
查询营运里程数在第三至第五之间的线路信息。
select * from line order by miles desc limit 2, 3
查询营运里程数排名最高的前 5 条线路信息。
select * from line order by miles desc limit 0, 5
或
select * from line order by miles desc limit 5
limit 5 偏移量为 0,省略0
4.4 模糊查询
4.4.1 LIKE 运算符
模糊查询是利用数据的部分信息进行查找的一种查询方式。如果数据库用户在进行数据查询时,不知道查询实体的全部具体信息,仅知道其部分信息,此时即可使用 LIKE 运算符进行模糊查询。
在 MySQL 中,使用通配符实现 LIKE 运算。通配符是一种在 WHERE 子句中拥有特殊意义的字符,通配符包括 “%”“_”和“[]”。
注意:只有字符类型的数据才能使用 LIKE 运算符和通配符。
“%”通配符可以匹配 0 到多个任意字符。
查找所有“张”姓司机的姓名和电话信息:
select name, phone from driver where name like ' 张 %';
查找所有姓名以“宇”字结尾的司机的姓名和电话信息:
select name, phone from driver where name like '% 宇 ';
查询所有姓名以“陈”字开头、“辉”字结束的司机的姓名和电话信息:
select name, phone from driver where name like ' 陈 % 辉 ';
查询所有姓名含“一”字的司机的姓名和电话信息:
select name, phone from driver where name like '% 一 %';
“_”通配符的功能与“%”类似,其仅匹配任意一个字符。如需匹配两个字符,则使用“_ _”。
查询姓名以“林”字开头,“一”字结束且姓名为 3 个字的司机的电话信息:
select name, phone from driver where name like ' 林 _ 一 ';
匹配多个字符。查询姓名以“徐”字开头且姓名为 3 个字的司机的电话信息:
select name, phone from driver where name like ' 徐 _ _';
使用模糊查询时,有时需综合“_”与“%”才能完成。
查询姓名中第二个字符为“重”的司机信息:
select name, phone from driver where name like '_ 重 %';
4.4.2 IN 运算符
IN 运算符也称为“成员条件运算符”,用于判断一个值是否在一个指定的数据集合之内。
显示公交一公司和公交三公司线路站点信息:
select lineNo 线路号 , from_station 起始站 , end_station 终点站from line where company in(' 公交一公司 ',' 公交三公司 ');
等价语句:
select lineNo 线路号 , from_station 起始站 , end_station 终点站
from line where company=' 公交一公司 ' or company=' 公交三公司 ';
IN 运算符与 OR 运算符相比,其优点是:当选择条件很多时,采用 IN 运算符运行效率更高。
4.4.3 between...and 运算符
在 WHERE 子句中,可以采用 between...and 运算符选取介于两个值之间的数据,这些值可以是数字和日期类型(取值范围包括边界值)。
查询长度为 20 ~ 25 千米的线路信息:
select lineNo 线路号 , from_station 起始站 , end_station 终点站 , miles 公里里程 from line where miles between 20 and 25;
查询出生日期在 1970-01-01 到 1980-01-01 之间的员工信息:
select * from employee where birthday between '1970-01-01' and '1980-01-01';
总结:
- select 查询语句中必须的子句是:
select 子句和 from 子句。
- 多列字段排序的原则是:
依照排序列从左至右的次序确定优先级别。
- LIKE 运算符常见的通配符:
通配符包括“%”“_”和“[]”。
“%”含义:匹配 0 到多个任意字符。“_”含义:匹配任意一个字符。
“[]”含义:用于指定一个字符集合。
MySQL数据操作与查询笔记 • 【第4章 SELECT 数据查询】的更多相关文章
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)
Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ...
- 《SQL CookBook 》笔记-第三章-多表查询
目录 3.1 叠加两个行集 3.2 合并相关行 3.3 查找两个表中相同的行 3.4 查找只存在于一个表中的数据 3.5 从一个表检索与另一个表不相关的行 3.6 新增连接查询而不影响其他连接查询 3 ...
- Mysql高手系列 - 第7篇:玩转select条件查询,避免踩坑
这是Mysql系列第7篇. 环境:mysql5.7.25,cmd命令中进行演示. 电商中:我们想查看某个用户所有的订单,或者想查看某个用户在某个时间段内所有的订单,此时我们需要对订单表数据进行筛选,按 ...
- WPF中ListBox ListView数据翻页浏览笔记(强调:是数据翻页,非翻页动画)
ListBox和ListView在应用中,常常有需求关于每页显示固定数量的数据,然后通过Timer自动或者手动翻页操作,本文介绍到的就是该动作的实现. 一.重点 对于ListBox和ListView来 ...
- C++ primer plus读书笔记——第3章 处理数据
第3章 处理数据 1. C++对于变量名称的长度没有限制,ANSI C只保证名称中的前63个字符有意义(前63个字符相同的名称被认为是相同的,即使第64个字符不同). 2. 对类型名(int)使用si ...
- SQL笔记-第四章,数据的检索
一.select的简单用法 1.简单的数据检索 SELECT * FROM T_Employee; 2.检索出需要的列 SELECT FNumber,FName,FAge FROM T_Employe ...
- 《SQL CookBook 》笔记-第三章-多表查询-连接查询
目录 1 内连接(inner join) 1.1 隐式的内连接 1.2 显式的内连接 2 外连接(outer join) 2.1 左连接(left outer join) 2.2 右连接(right ...
- SQL笔记-第三章,数据的增删改
1.数据的插入 简单的INSERT语句 INSERT INTO T_Person(FName,FAge,FRemark) VALUES(‘Tom’,18,’USA’) 简化的INSERT语句(只对部分 ...
随机推荐
- Excel 数据验证:分类选择及输入限制
几个简单设置让你的数据不再出错 如何快速选择某一大类中的细分小类 多级菜单 注意:引用可以创建二级目录,但是引用前应先用公式定义名称,然后引用,引用只能在本sheet操作.
- 锁对象-条件对象-synchronized关键字
1 import java.util.concurrent.locks.Condition; 2 import java.util.concurrent.locks.Lock; 3 import ja ...
- 【Java 8】Stream.distinct() 列表去重示例
在这篇文章里,我们将提供Java8 Stream distinct()示例. distinct()返回由该流的不同元素组成的流.distinct()是Stream接口的方法. distinct()使用 ...
- Spring Cloud中,如何解决Feign整合Hystrix第一次请求失败的问题
Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题,要如何解决该问题呢? 造成该问题的原因 Hystrix默认的超时时间是1秒,如果超过这个时间 ...
- 注册页面html版本
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 利用Windbg分析Magicodes.IE一次错误编写导致内存剧增
由于这近一年时间一直忙于写书和工作,一直没有水文,但是近期有几位朋友使用我们的Magicodes.IE反馈在导出过程中内存暴涨...好吧,不管怎样,不能苦了我们朋友,接下来我们通过windbg来看一下 ...
- Java如何生成随机数 - Random、ThreadLocalRandom、SecureRandom
Java7 的Random伪随机数和线程安全的ThreadLocalRandom 一.Random伪随机数: Random 类专门用于生成一个伪随机数,它有两个构造器: 一个构造器使用默认的种子(以当 ...
- [IDEA] chapter_reader - idea看小说插件 idea阅读插件 idea摸鱼插件
目录 1. 简述: 2. 使用说明: 2.1 版本说明: 2.2 重要说明: 2.3 简单使用方法: 2.4 目前支持的网站有 (新↓): 2.5 菜单介绍: 2.6 快捷键设置及推荐: 2.7 在线 ...
- python基础 (三)
成员运算 判断某个个体在不在某个群体里,关键词:in(在),not in(不在)例如: 特殊的,如果是字典中,因为字典的V值是隐藏的,能查看的只有V,所以无法判断V值,只能判断K值. 身份运算 用于判 ...
- Markdown 语法粗学
Markdown 语法粗学 Typora下载 Typora官网 下拉点击右上角 选择下载即可 里面选择自己想要的系统下载即可 如果下载缓慢,推荐使用各自的下载工具或者使用软件管家等 亲测迅雷速度尚可 ...