MySQL8.0入门:即学即用【第三章】查询操作

注:该学习笔记是根据莫振杰老师编写的《从0到1:MySQL即学即用》所学习整理的笔记。

第三章 查询操作

一、select语句简介

1、select语句

在MySQL中,使用select语句来对一个表进行查询操作。

  • 语法结构:
    • select 列名 from 表名
  • 参数说明:
    • select语句由“select子句”和“from子句”两个部分组成。

select语句包含的子句(查询子句)主要有7种:

子句说明
select查询哪些列
from从哪个表查询
where查询条件
group by分组
having分组条件
order by排序
limit限制行数
1)、查询一列
SELECT `name` FROM fruit;

请添加图片描述

2)、查询多列

查询多列数据,需要再select子句中把多个列名列举出来,其中列名之间使用英文半角逗号分隔。

SELECT `name`, type, price FROM fruit;

请添加图片描述

3)、查询所有列

查询所有列,可以使用“*”符号来表示所有列名。但是使用“*”将无法指定列的显示顺序以及查询数据将会变慢。

SELECT * FROM fruit;

请添加图片描述

2、特殊列名

对于包含特殊符号或者关键字的列名,需要使用反引号( ` )将其引起来。

3、换行说明

一般情况下,一个子句占据一行。需要注意的是,行与行之间不允许出现空行,否则就会报错。

如果SQL语句比较短,则只在一行写就可以了。如果SQL语句比较长,则可以使用以”子句“位单位进行换行的方式书写。

二、使用别名:as

1、as关键字

在使用SQL语句查询数据时,可使用as关键字给一个列起别名。起别名的作用:增强代码和查询结果的可读性。

注意:别名只在当前的查询结果中显示,真实表中的列名并不会改变。

  • 语法结构:
    • select 列名 as 别名
    • from 表名;
  • 使用场景:
    • 列名比较长或可读性较差。
    • 使用内置函数。
    • 用于多表查询。
    • 需要把两个或更多列放在一起。
1)、英文别名
-- 方式1
SELECT `name` as fruit_name
FROM fruit;

-- 方式2
SELECT `name` fruit_name
FROM fruit;

请添加图片描述

2)、中文别名
SELECT `name` as 名称
FROM fruit;

请添加图片描述

3)、为多个列指定别名

指定多列别名时,可写在一行,也可分行来写。

-- 方式1
SELECT `name` AS 名称, type AS 类型, price AS 售价
FROM fruit;

-- 方式2
SELECT
	`name` AS 名称,
	type AS 类型,
	price AS 售价 
FROM
	fruit;

请添加图片描述

2、特殊别名

在使用as关键字起别名时,如果别名中包含了保留字或者特殊字符,如空格、加号、减号等,则别名必须使用英文半角引号引起来。

建议:使用英文半角双引号,一般单引号是表示字符串的。

1)、包含空格
SELECT
	`name` AS "水果 名称"
FROM
	fruit;

请添加图片描述

2)、包含“-”
SELECT
	`name` AS "水果-名称" 
FROM
	fruit;

请添加图片描述

三、条件子句:where

在MySQL中,使用where子句来指定查询的条件。一般是配合select子句来使用。

  • 语法结构:
    • select 列名
    • from 表名
    • where 条件;
  • 使用场景:
    • 比较运算符
    • 逻辑运算符
    • 其他运算符

1、比较运算符

对于MySQL中的运算符,需要清楚一下3点:

  • 对于“等于”,MySQL使用的是“=”,而不是“==”,这一点与其他编程语言不同。
  • 对于“不等于,MySQL有两种表达方式:”!=“和”<>“。
  • 只有MySQL中才有“<=>”运算符,其他没有。
运算符说明
>大于
<小于
=等于
>=大于等于
<=小于等于
!>不大于(相当于<=)
!<不小于(相当于>=)
!=或<>不等于
<=>安全等于
1)、等于(数值)
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	price = 27.3;

请添加图片描述

2)、等于(字符串)
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	`name` = '柿子';

请添加图片描述

3)、大于
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	price > 10;

请添加图片描述

4)、日期时间

当比较运算符用于日期时间类型的数据时,应当知道以下3点:

  • 小于某个日期时间,指的是在该日期时间之前。
  • 大于某个日期时间,指的是在该日期时间之后。
  • 等于某个日期时间,指的是处于该日期时间。
SELECT
	`name`,
	date
FROM
	fruit 
WHERE
	date <= '2022-09-01'

请添加图片描述

2、逻辑运算符

在where子句中,如果需要同时指定多个查询条件,就需要使用逻辑运算符。MySQL的逻辑运算符有两种写法:一种是“关键字”、一种是“符号”。

关键字运算符说明
and&&
or||
not!
1)、与运算
SELECT
	`name`,
	price
FROM
	fruit 
WHERE
	price > 10 AND price < 20;

请添加图片描述

2)、或运算
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	price < 10 OR price > 20;

请添加图片描述

3)、非运算
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	NOT price > 10;

请添加图片描述

3、其他运算符

运算符说明
is null或isnull是否为null值
is not null是否部位null值
in是否为列表中的值
not in是否不为列表中的值
between A and B是否处于A和B之间
not between A and B是否不处于A和B之间
1)、is null和is not null

当某一个字段(某一列)没有数据(为空)时,该字段的值就是null。需要特别注意的是null代表该字段没有值,而不是代表该字段的值为0或者’'(空字符串)。

创建一个名为“fruit_miss”的表,用来测试is null和is not null运算符。

fruit_miss表的结构:
请添加图片描述

fruit_miss表的数据:
请添加图片描述

(1)is null的使用

判断某一列的值是否为null,不允许使用“=”或者“!=”这样的比较运算符,而必须使用is null或者is not null运算符。

SELECT
	* 
FROM
	`fruit_miss` 
WHERE
	price IS NULL;

请添加图片描述

(2)is not null的使用
SELECT
	* 
FROM
	`fruit_miss` 
WHERE
	price IS NOT NULL;

请添加图片描述

2)、in和not in

使用in运算符来判断列表中是否“存在”某个值,也可以使用not in运算符来判断列表中是否“不存在”某个值。对于多个值的判断,则需要使用“( )”将其扩起来,并且使用英文半角的逗号分隔。

(1)in的使用
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	`name` IN ( '葡萄', '柿子', '橘子' );

请添加图片描述

(2)not in的使用
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	`name` NOT IN ( '葡萄', '柿子', '橘子' );

请添加图片描述

3)、between…and…和not between…and…

判断某一列的值是否在某个范围之内,则可以使用between…and…运算符来实现。

(1)between…and…的运用
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	price BETWEEN 10 AND 20;

请添加图片描述

(2)not between…and…的运用
SELECT
	`name`,
	date
FROM
	fruit 
WHERE
	date NOT BETWEEN '2022-09-10' AND '2022-12-01';

请添加图片描述

4、运算符优先级

  • MySQL运算符优先级规则:
    • 优先级高的先运算,优先级低的后运算;优先级相同的,从左到右进行运算。
    • 在算术运算中,“乘、除”的优先级比“加、减”的优先级高。
    • 在逻辑运算中,优先级由高到低为:非(not)、与(and)、或(or)。
    • 使用“( )”进行框选的部分,视为一个整体,会先进行括号内的运算。
SELECT
	`name`,
	season,
	price
FROM
	fruit 
WHERE
	season = '夏' AND price < 10 OR price > 20;

请添加图片描述

四、排序子句:order by

注意:
在order by子句中,不管是使用原列名还是别名,得到的结果是一样的。
在order by子句中,中文别名一定不能加上引号,否则MySQL将无法正确识别。
如果存在null值,null值将会是最小值。
结合where子句使用时,order by子句必须放在where子句的后面。

1、order by子句

使用order by子句来对某一列进行排序。order by子句是作为select语句的一部分来使用的。

  • 语法结构:
    • select 列名
    • from 表名
    • order by 列名 asc或desc;
  • 参数说明:
    • asc:表示升序排列,默认值。
    • desc:表示降序。
1)、升序排列
SELECT
	`name`,
	price 
FROM
	fruit 
ORDER BY
	price ASC;

请添加图片描述

2)、降序排列
SELECT
	`name`,
	price 
FROM
	fruit 
ORDER BY
	price DESC;

请添加图片描述

3)、对多列排序
SELECT
	`name`,
	price,
	date
FROM
	fruit 
ORDER BY
	price DESC, date DESC;

请添加图片描述

4)、使用别名
SELECT
	`name` AS 名称,
	price AS 售价 
FROM
	fruit 
ORDER BY
	售价 DESC;

请添加图片描述

5)、对日期时间排序
SELECT
	`name`,
	date 
FROM
	fruit 
ORDER BY
	date DESC;

请添加图片描述

6)、结合where子句
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	price < 10 
ORDER BY
	price DESC;

请添加图片描述

2、中文排序

想要按照中文拼音顺序来进行排序,则需要借助convert( )函数来实现。

  • 语法结构:
    • order by convet(列名 using gbk);
  • 参数说明:
    • 表示强制该列使用gbk字符集。
SELECT
	`name`,
	price 
FROM
	fruit 
ORDER BY
	CONVERT ( `name` USING gbk );

请添加图片描述

五、限制行数:limit

1、limit子句

使用limit关键字来获取前n条记录。

  • 语法结构:
    • select 列名
    • from 表名
    • limit n;
  • 使用场景说明:
    • 如果select语句由where子句或order by子句时,则limit子句需放在最后。
1)、获取前n条记录
SELECT
	`name`,
	price 
FROM
	fruit 
	LIMIT 5;

请添加图片描述

2)、结合where子句
SELECT
	`name`,
	price 
FROM
	fruit 
WHERE
	price > 10 
	LIMIT 5;

请添加图片描述

3)、结合order by子句
SELECT
	`name`,
	price 
FROM
	fruit 
ORDER BY
	price DESC 
	LIMIT 5;

请添加图片描述

4)、获取前n~m条记录
SELECT
	`name`,
	price 
FROM
	fruit 
ORDER BY
	price DESC 
	LIMIT 1, 4;

请添加图片描述

六、去重处理:distinct

使用distinct关键字来实现数据的去重。所谓的数据去重,指的是去除多个重复行,只保留其中一行。
distinct关键字用于select子句中,它总是在select关键字知乎,并且位于第一个列名之前。此外distinct关键字作用于整个字段列表的所有列,而不是单独的某一列。
null值被视为一类数据。如果存在多个null值,则只会保留一个null值。

1、用于一列

SELECT DISTINCT
	type 
FROM
	fruit;

请添加图片描述

2、对于null值

SELECT DISTINCT
	type 
FROM
	fruit_miss;

请添加图片描述

3、用于多列

SELECT DISTINCT
	type,
	season
FROM
	fruit;

请添加图片描述

七、实践练习

下面有一张student表,请写出相关操作对应的SQL语句。

idnamesexgradebirthdaymajor
1张欣欣862000-03-02计算机科学
2李伟达922001-06-13网络工程
3杨璐璐722000-05-01软件工程
4王明刚802002-10-17电子商务
5张伟652001-11-09人工智能

1、查询成绩在80值100之间的学生基本信息

SELECT
	* 
FROM
	student 
WHERE
	grade >= 80 AND grade <= 100;

请添加图片描述

2、查询所有学生的基本信息,并按照成绩从高到低进行排序

SELECT
	* 
FROM
	student 
ORDER BY
	grade DESC;

请添加图片描述

3、查询成绩前3名的学生的基本信息

SELECT
	* 
FROM
	student 
ORDER BY
	grade DESC 
	LIMIT 3;

请添加图片描述

4、查询所有学生的name、grade、major这3列的信息

SELECT
	`name`,
	grade,
	major 
FROM
	student;

请添加图片描述

5、查询所有学生的name、grade这两列的信息,并且给name列起一个别名“姓名”,给grade列起一个别名“成绩”

SELECT
	`name` AS 姓名,
	grade AS 成绩 
FROM
	student;

请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
完整全套资源下载地址:https://download.csdn.net/download/qq_27595745/66208010 【完整课程列表】 完整版 MySQL8.0入门到精通 MySQL数据库教程 第01章 初始MySQL(共19页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第02章 MySQL的安装与配置(共14页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第03章 数据库的基本操作(共6页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第04章 数据表的基本操作(共28页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第05章 数据类型和运算符(共17页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第06章 MySQL函数(共76页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第07章 查询数据(共50页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第08章 插入、更新与删除数据(共12页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第09章 索引(共13页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第10章 存储过程和函数(共20页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第11章 视图(共20页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第12章 触发器(共11页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第13章 MySQL权限与安全管理(共30页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第14章 数据备份与还原(共21页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第15章 MySQL日志(共23页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第16章 性能优化(共23页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第17章 MySQL Replication(共27页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第18章 MySQL Workbench 的使用(共18页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第19章 MySQL管理利器-MySQL Utilities(共5页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第20章 读写分离的利器-MySQL Proxy(共8页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第21章 精通MySQL存储引擎(共31页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第22章 PHP操作MySQL数据库(共16页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第23章 PDO数据库抽象类库(共12页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第24章 开发网上商城(共6页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第25章 论坛管理系统数据库设计(共6页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第26章 新闻发布系统数据库设计(共9页).ppt
【完整课程列表】 完整版 MySQL8.0入门到精通 MySQL数据库教程 第01章 初始MySQL(共19页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第02章 MySQL的安装与配置(共14页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第03章 数据库的基本操作(共6页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第04章 数据表的基本操作(共28页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第05章 数据类型和运算符(共17页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第06章 MySQL函数(共76页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第07章 查询数据(共50页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第08章 插入、更新与删除数据(共12页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第09章 索引(共13页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第10章 存储过程和函数(共20页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第11章 视图(共20页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第12章 触发器(共11页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第13章 MySQL权限与安全管理(共30页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第14章 数据备份与还原(共21页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第15章 MySQL日志(共23页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第16章 性能优化(共23页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第17章 MySQL Replication(共27页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第18章 MySQL Workbench 的使用(共18页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第19章 MySQL管理利器-MySQL Utilities(共5页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第20章 读写分离的利器-MySQL Proxy(共8页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第21章 精通MySQL存储引擎(共31页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第22章 PHP操作MySQL数据库(共16页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第23章 PDO数据库抽象类库(共12页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第24章 开发网上商城(共6页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第25章 论坛管理系统数据库设计(共6页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第26章 新闻发布系统数据库设计(共9页).ppt
完整全套资源下载地址:https://download.csdn.net/download/qq_27595745/66208010 【完整课程列表】 完整版 MySQL8.0入门到精通 MySQL数据库教程 第01章 初始MySQL(共19页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第02章 MySQL的安装与配置(共14页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第03章 数据库的基本操作(共6页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第04章 数据表的基本操作(共28页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第05章 数据类型和运算符(共17页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第06章 MySQL函数(共76页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第07章 查询数据(共50页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第08章 插入、更新与删除数据(共12页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第09章 索引(共13页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第10章 存储过程和函数(共20页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第11章 视图(共20页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第12章 触发器(共11页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第13章 MySQL权限与安全管理(共30页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第14章 数据备份与还原(共21页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第15章 MySQL日志(共23页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第16章 性能优化(共23页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第17章 MySQL Replication(共27页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第18章 MySQL Workbench 的使用(共18页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第19章 MySQL管理利器-MySQL Utilities(共5页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第20章 读写分离的利器-MySQL Proxy(共8页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第21章 精通MySQL存储引擎(共31页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第22章 PHP操作MySQL数据库(共16页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第23章 PDO数据库抽象类库(共12页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第24章 开发网上商城(共6页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第25章 论坛管理系统数据库设计(共6页).ppt 完整版 MySQL8.0入门到精通 MySQL数据库教程 第26章 新闻发布系统数据库设计(共9页).ppt

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MeJonKing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值