全部章节   >>>>


本章目录

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的事务传播机制(通俗易懂)

    概述 Spring的事务传播机制有7种,在枚举Propagation中有定义. 1.REQUIRED PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就 ...

  2. Linux lvm在线扩容

    1.查看磁盘空间 [root@bgd-mysql3 ~]# fdisk -l Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sector ...

  3. 【编程思想】【设计模式】【行为模式Behavioral】中介者模式Mediator

    Python版 https://github.com/faif/python-patterns/blob/master/behavioral/mediator.py #!/usr/bin/env py ...

  4. 【Linux】【Services】【Package】编译安装

    程序包编译安装:         testapp-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装:         ...

  5. 转:builder模式分析

    建造者模式 11.1 变化是永恒的 又是一个周三,快要下班了,老大突然拉住我,喜滋滋地告诉我:"牛叉公司很满意我们做的模型,又签订了一个合同,把奔驰.宝马的车辆模型都交给我们公司制 作了,不 ...

  6. 修复 Edge 浏览器 1Password 插件 Ctrl+Shift+X 弹出快捷键失效

    解决方式 在 Edge 浏览器右上角 1Password插件图标上右键,选择设置: 在打开的 1Password 设置页面中,找到快捷键设置环节,默认使用快捷键打开后面为空,点击"在扩展也上 ...

  7. Signature Pad 使用

    实现功能 能够在移动设备上实现电子签名,并保存为图片 git地址 https://github.com/szimek/signature_pad 参数说明 dotSize:点的大小(在屏幕上点击留下的 ...

  8. AcWing03. 完全背包问题

    有\(N\)种物品和一个容量是\(V\)的背包,每种物品都有无限件可用. 第\(i\)种物品的体积是\(v_i\),价值是\(w_i\). 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量, ...

  9. 更快的Maven来了

    Maven经常被拿来和Gradle做对比,最大的劣势之一就是Maven构建慢,Gradle比Maven构建速度快2到10倍,而如今Maven也可以更快了.Apache Maven团队从Gradle和T ...

  10. c++读取文件操作和写入文件

    在C++中与读取文件和写入文件简单操作有关的类分别有ifstream(文件读入).ofstream(文件写出).fstream (文件读入和写出). 名称 作用 ifstream 文件读入 ofstr ...