MySQL数据库-DQL(单表查询)
单表查询
数据准备
查询语法
查询全部
条件查询 (where)
查询条件分类
条件查询的语法
聚合函数查询
聚合函数介绍
聚合函数分类
聚合函数语法
案例学习
排序查询 (order by)
注意
排序语法
案例学习
分组查询 (group by)
语法
分页查询 (limit)
语法
数据准备
-- 创建db1数据库
CREATE DATABASE db1;-- 使用db1数据库
USE db1;-- 创建数据表
CREATE TABLE product(id INT, -- 商品编号NAME VARCHAR(20), -- 商品名称price DOUBLE, -- 商品价格brand VARCHAR(10), -- 商品品牌stock INT, -- 商品库存insert_time DATE -- 添加时间
);-- 添加数据
INSERT INTO product VALUES (1,'华为手机',3999,'华为',23,'2088-03-10'),
(2,'小米手机',2999,'小米',30,'2088-05-15'),
(3,'苹果手机',5999,'苹果',18,'2088-08-20'),
(4,'华为电脑',6999,'华为',14,'2088-06-16'),
(5,'小米电脑',4999,'小米',26,'2088-07-08'),
(6,'苹果电脑',8999,'苹果',15,'2088-10-25'),
(7,'联想电脑',7999,'联想',NULL,'2088-11-11');
创建了一个db1的数据库,其中含有product表如下所示:
查询语法
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件 (分组之后不能使用where,只能使用having)
order by
排序
limit
分页限定
查询全部
(1)查询全部表的数据
SELECT * FROM 表名;
SELECT * FROM product;
(2)查询指定字段的表数据
SELECT 列名1,列名2... FROM 表名;
例如:查询name,price,brand这三列的数据
SELECT name,price,brand FROM product;
(3)去除重复查询
SELECT DISTINCT 列名,列名... FROM 表名;
例如:查询品牌,去除重复
SELECT DISTINCT brand FROM product;
(4)计算列的值(四则运算)
SELECT 列名1[ 运算符 ], 列名2[ 运算符 ] FROM 表名;
例如:价格都上涨1000,库存增加10部。
SELECT price+1000, stock+10 FROM product;
观察上面的数据,显然最右下角的数据有问题!是NULL!
需要处理
SELECT price+1000,IFNULL(stock,0)+10 FROM product;
(5)起别名查询
上述的案例,这样子查询出来的结果明显不美观,而且有问题,所以这里可以在显示出来的时候给它取一个别名。
SELECT 列名1 AS 别名1, 列名2 AS 别名2 FROM 表名;
SELECT price+1000 AS price_new,IFNULL(stock,0)+10 AS stock_new FROM product;
条件查询 (where)
查询条件分类
符号 | 功能 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN ... AND ... | 在某个范围之内(都包含) |
IN(...) | 多选一 |
LIKE 占位符 | 模糊查询 _单个任意字符 %多个任意字符 |
IS NULL | 是NULL |
IS NOT NULL | 不是NULL |
AND 或 && | 并且 |
OR 或 || | 或者 |
NOT 或 ! | 非,不是 |
条件查询的语法
SELECT 列名列表 FROM 表名 WHERE 条件;
如下述案例:
(1)查询库存大于20的商品信息
SELECT * FROM product WHERE stock > 20;
(2)查询品牌为华为的商品信息
SELECT * FROM product WHERE brand='华为';
(3)查询金额在4000 ~ 6000之间的商品信息
SELECT * FROM product WHERE price >= 4000 AND price <= 6000;
SELECT * FROM product WHERE price BETWEEN 4000 AND 6000;
between..and 也是可以实现的!(数值在...与...之间)
(4)查询库存为14、30、23的商品信息
SELECT * FROM product WHERE stock=14 OR stock=30 OR stock=23;
SELECT * FROM product WHERE stock IN(14,30,23);
IN(...) 也可以实现
(5)查询库存为null的商品信息
SELECT * FROM product WHERE stock IS NULL;
(6)查询库存不为null的商品信息
SELECT * FROM product WHERE stock IS NOT NULL;
(7)查询名称以小米为开头的商品信息
SELECT * FROM product WHERE NAME LIKE '小米%';
(8)查询名称第二个字是为的商品信息
SELECT * FROM product WHERE NAME LIKE '_为%';
(9)查询名称为四个字符的商品信息
SELECT * FROM product WHERE NAME LIKE '____';
注:上述代码是有四个“_” ,表示有四个字符。
(10)查询名称中包含电脑的商品信息
SELECT * FROM product WHERE NAME LIKE '%电脑%';
聚合函数查询
聚合函数介绍
将一列数据作为一个整体,进行纵向的计算
聚合函数分类
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
聚合函数语法
SELECT 函数名(列名) FROM 表名 [WHERE 条件];
案例学习
(1)计算product表中总记录条数
SELECT COUNT(*) FROM product;
(2)获取最高价格
SELECT MAX(price) FROM product;
(3)获取最高价格的商品名称 (有难度)
SELECT NAME,price FROM product WHERE price = (SELECT MAX(price) FROM product);
(4)获取最低库存
SELECT MIN(stock) FROM product;
(5)获取最低库存的商品名称 (有难度)
SELECT NAME,stock FROM product WHERE stock = (SELECT MIN(stock) FROM product);
(6)获取总库存数量
SELECT SUM(stock) FROM product;
(7)获取品牌为苹果的总库存数量
SELECT SUM(stock) FROM product WHERE brand='苹果';
(8)获取品牌为小米的平均商品价格
SELECT AVG(price) FROM product WHERE brand='小米';
排序查询 (order by)
注意
多个排序条件,当前边的条件值一样时,才会判断第二条件
关键词 | 功能 |
---|---|
ORDER BY 列名1 排序方式1,列名2 排序方式2 | 对指定列排序,ASC升序(默认的) DESC降序 |
排序语法
注意:不一定要使用 where
SELECT 列名 FROM 表名 [WHERE 条件] ORDER BY 列名1 排序方式1,列名2 排序方式2...;
案例学习
(1)按照库存升序排序
SELECT * FROM product ORDER BY stock ASC;
(2)查询名称中包含手机的商品信息。按照金额降序排序
SELECT * FROM product WHERE NAME LIKE '%手机%' ORDER BY price DESC;
(3)按照金额升序排序,如果金额相同,按照库存降序排列
SELECT * FROM product ORDER BY price ASC,stock DESC;-- 注意没有 where 之前写的时候一不小心用了
分组查询 (group by)
对数据进行分组 ,数据-group by - 后面的东西。
不论是分组,还是排序,有条件一定要先过滤,虽然最后的结果是一样的,但是效率不同!
语法
SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式];
(1)按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product GROUP BY brand;
(2)对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额
SELECT brand,SUM(price) FROM product WHERE price > 4000 GROUP BY brand;
与上述的案例类似,加了一个where price > 4000 的条件。
(3)对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,只显示总金额大于7000元的
SELECT brand,SUM(price) AS getSum FROM product WHERE price > 4000 GROUP BY brand HAVING getSum > 7000;
注意:
这里分组完之后,还需要条件过滤,(只显示金额大于7000的)就不能使用 WHERE 了!只能使用HAVING!
(4)对金额大于4000元的商品,按照品牌分组,获取每组商品的总金额,只显示总金额大于7000元的、并按照总金额的升序排列
SELECT brand,SUM(price) AS getSum FROM product WHERE price > 4000 GROUP BY brand HAVING getSum > 7000 ORDER BY getSum ASC;
分页查询 (limit)
语法
-- 标准语法
SELECT 列名 FROM 表名[WHERE 条件]
[GROUP BY 分组列名]
[HAVING 分组后条件过滤]
[ORDER BY 排序列名 排序方式]
LIMIT 开始索引,查询条数;
公式:开始索引 = (当前页码-1) * 每页显示的条数
(1)每页显示3条数据
SELECT * FROM product LIMIT 0,3; -- 第一页 开始索引=(1-1) * 3
SELECT * FROM product LIMIT 3,3; -- 第二页 开始索引=(2-1) * 3
SELECT * FROM product LIMIT 6,3; -- 第三页 开始索引=(3-1) * 3
MySQL数据库-DQL(单表查询)相关推荐
- 数据库DQL单表查询
以下数据都出自该emp表,创建代码在下面. 复制如下代码到mysql中运行即可在empdb库中建立emp表,后面sql语句都基于此emp表数据操作 CREATE DATABASE /*!32312 I ...
- Mysql数据库的单表查询
我们在使用Mysql数据库存储数据时,对数据的查询方法是至关重要的,此博客主要介绍Mysql数据库的查询数据方法. 单表查询 单表查询就是我们仅对一个表进行查询,我们可以首先创建一个名为table的表 ...
- mysql数据库之单表查询
单标查询 单表查询语句 关键字执行的优先级 简单查询 where约束 group by 聚合函数 HAVING过滤 order by 查询排序 LIMIT限制查询的记录数 使用正则表达式查询 单表查询 ...
- MySQL数据库之单表查询--示例
注释.*.条件查询.as取别名.比较-逻辑-算术运算符. and.or.模糊匹配(%._)--示例 1 /* 2 sql中有三种注释方式: 3 1.#:单行注释 4 2.--:代表单行注释,横杠后面要 ...
- mysql关键字使用顺序_MySQL数据库之单表查询中关键字的执行顺序
MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...
- mysql数据库查询关键字级别_MySQL数据库之单表查询中关键字的执行顺序
MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...
- mysql数据库实验3查询_MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录任务三 数据库的单表查询设计[实训目的与要求][实训原理][实训步骤]一.简单查询二.按条件查询1.比较大小查询2.带in关键字的查询(确定集合)3.带BETWE ...
- MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...
- mysql 性别以女生升序_MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...
- 7.数据库-查-单表查询
7 .数据库-查-单表查询 因为查询有很多分支 所以分 单表查询 和 多表查询: 简单查询 1.1 SELECT语句 在MySQl中查询语句 最基本就是SELECT语句了,可以用不用的条件来查询表中的 ...
最新文章
- Acwing第 40 场周赛【完结】
- 利用函数wavread对语音信号进行采样_语音信号处理相关知识
- python :re模块基本用法
- C# Dispose模式
- leetcode-345-翻转字符串中的元音字母
- windows下node安装
- GDB调试程序(二)
- Depth-first Search深度优先搜索专题4
- 关系数据库——视图/存储过程/触发器
- Linux操作系统多线程信号总结(转)
- 【HDOJ】2809 God of War
- linux挂载iso5后如何安装,CentOS系统怎样挂载光盘镜像ISO文件
- linux温度监控软件,PSensor:Linux下硬件温度监控软件
- 大学生破译周鸿祎手机号 李开复放 橄榄枝
- 每日excel学习之分类汇总和数据有效性
- 混合现实VR Twitch视频
- OGRE加载天龙八部场景
- Dnspod域名设置
- 互联网项目,京东店群、淘宝店群和天猫无货源店群,创业者该如何选择?
- 名字中间一条线怎么弄_网名怎么加横线啊 网名中间加一条横线