全部章节   >>>>


本章目录

4.1 select 选择列表

4.1.1 select 基本结构

4.1.2 选择列表

4.2 MySQL 运算符

4.2.1 MySQL 算术运算符

4.2.2 MySQL 比较运算符

4.2.3 MySQL 逻辑运算符

4.2.4 条件查询中的运算符

4.3 定制显示查询结果

4.3.1 查询结果排序

4.3.2 使用 LIMIT 限制查询结果数量

4.4 模糊查询

4.4.1 LIKE 运算符

4.4.2 IN 运算符

4.4.3 between...and 运算符

总结:


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 数据查询】的更多相关文章

  1. 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 ...

  2. Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)

    Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ...

  3. 《SQL CookBook 》笔记-第三章-多表查询

    目录 3.1 叠加两个行集 3.2 合并相关行 3.3 查找两个表中相同的行 3.4 查找只存在于一个表中的数据 3.5 从一个表检索与另一个表不相关的行 3.6 新增连接查询而不影响其他连接查询 3 ...

  4. Mysql高手系列 - 第7篇:玩转select条件查询,避免踩坑

    这是Mysql系列第7篇. 环境:mysql5.7.25,cmd命令中进行演示. 电商中:我们想查看某个用户所有的订单,或者想查看某个用户在某个时间段内所有的订单,此时我们需要对订单表数据进行筛选,按 ...

  5. WPF中ListBox ListView数据翻页浏览笔记(强调:是数据翻页,非翻页动画)

    ListBox和ListView在应用中,常常有需求关于每页显示固定数量的数据,然后通过Timer自动或者手动翻页操作,本文介绍到的就是该动作的实现. 一.重点 对于ListBox和ListView来 ...

  6. C++ primer plus读书笔记——第3章 处理数据

    第3章 处理数据 1. C++对于变量名称的长度没有限制,ANSI C只保证名称中的前63个字符有意义(前63个字符相同的名称被认为是相同的,即使第64个字符不同). 2. 对类型名(int)使用si ...

  7. SQL笔记-第四章,数据的检索

    一.select的简单用法 1.简单的数据检索 SELECT * FROM T_Employee; 2.检索出需要的列 SELECT FNumber,FName,FAge FROM T_Employe ...

  8. 《SQL CookBook 》笔记-第三章-多表查询-连接查询

    目录 1 内连接(inner join) 1.1 隐式的内连接 1.2 显式的内连接 2 外连接(outer join) 2.1 左连接(left outer join) 2.2 右连接(right ...

  9. SQL笔记-第三章,数据的增删改

    1.数据的插入 简单的INSERT语句 INSERT INTO T_Person(FName,FAge,FRemark) VALUES(‘Tom’,18,’USA’) 简化的INSERT语句(只对部分 ...

随机推荐

  1. Spring Cloud Feign原理详解

    目录 1.什么是Feign? 2.Open Feign vs Spring Cloud Feign 2.1.OpenFeign 2.2.Spring Cloud Open Feign 3.Spring ...

  2. SQL count和sum

    count(1).count(*)与count(列名)的执行区别 count(1) and count(字段) 两者的主要区别是 (1) count(1) 会统计表中的所有的记录数,包含字段为null ...

  3. 修改页面.JSP

    <%@ page contentType="text/html;charset=UTF-8" language="java" %><%@tag ...

  4. 【C/C++】例题3-5 生成元/算法竞赛入门经典/数组与字符串

    [题目] x+x的各位数之和为y,x为y的生成元. 求10万以内的n的最小生成元,无解输出0. [解答] 这是我根据自己的想法最初写的代码: #include<cstdio> #inclu ...

  5. ASP.NET Core中使用滑动窗口限流

    滑动窗口算法用于应对请求在时间周期中分布不均匀的情况,能够更精确的应对流量变化,比较著名的应用场景就是TCP协议的流量控制,不过今天要说的是服务限流场景中的应用. 算法原理 这里假设业务需要每秒钟限流 ...

  6. typescript接口---interface

    假如我现在需要批量生产一批对象,这些对象有相同的属性,并且对应属性值的数据类型一致.该怎么去做? 在ts中,因为要检验数据类型,所以必须对每个变量进行规范,自然也提供了一种批量规范的功能.这个功能就是 ...

  7. Windows下mongodb的安装和配置

    1----->下载地址:https://www.mongodb.com/dr/fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl ...

  8. HUST-计算机网络实验-socket编程

    随笔---HUST计网实验:socket编程 博主大三在读,第一次写随笔,水平有限,就当记录一下学习的过程,顺便面试前复习项目的时候看看. 实验要求: 编写一个 Web 服务器软件,要求如下: 基本要 ...

  9. 0RAYS元旦招新赛

    一共有4道pwn题,题目不算难,但是挺考验调试能力的. pie 一个main函数就四次溢出... 第一次leak canary,第二次leak libc,第三次直接覆盖返回地址为one_gadgets ...

  10. Table.RowCount行列计数…Count(Power Query 之 M 语言)

    数据源: 任意五行两列 目标: 计算行数(包括空行) 操作过程: [转换]>[对行进行计数] M公式:  = Table.RowCount( 表 ) 扩展: 对表中列进行计数:= Table.C ...