单表查询

数据准备

查询语法

查询全部

条件查询 (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(单表查询)相关推荐

  1. 数据库DQL单表查询

    以下数据都出自该emp表,创建代码在下面. 复制如下代码到mysql中运行即可在empdb库中建立emp表,后面sql语句都基于此emp表数据操作 CREATE DATABASE /*!32312 I ...

  2. Mysql数据库的单表查询

    我们在使用Mysql数据库存储数据时,对数据的查询方法是至关重要的,此博客主要介绍Mysql数据库的查询数据方法. 单表查询 单表查询就是我们仅对一个表进行查询,我们可以首先创建一个名为table的表 ...

  3. mysql数据库之单表查询

    单标查询 单表查询语句 关键字执行的优先级 简单查询 where约束 group by 聚合函数 HAVING过滤 order by 查询排序 LIMIT限制查询的记录数 使用正则表达式查询 单表查询 ...

  4. MySQL数据库之单表查询--示例

    注释.*.条件查询.as取别名.比较-逻辑-算术运算符. and.or.模糊匹配(%._)--示例 1 /* 2 sql中有三种注释方式: 3 1.#:单行注释 4 2.--:代表单行注释,横杠后面要 ...

  5. mysql关键字使用顺序_MySQL数据库之单表查询中关键字的执行顺序

    MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...

  6. mysql数据库查询关键字级别_MySQL数据库之单表查询中关键字的执行顺序

    MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...

  7. mysql数据库实验3查询_MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录任务三 数据库的单表查询设计[实训目的与要求][实训原理][实训步骤]一.简单查询二.按条件查询1.比较大小查询2.带in关键字的查询(确定集合)3.带BETWE ...

  8. MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...

  9. mysql 性别以女生升序_MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...

  10. 7.数据库-查-单表查询

    7 .数据库-查-单表查询 因为查询有很多分支 所以分 单表查询 和 多表查询: 简单查询 1.1 SELECT语句 在MySQl中查询语句 最基本就是SELECT语句了,可以用不用的条件来查询表中的 ...

最新文章

  1. Acwing第 40 场周赛【完结】
  2. 利用函数wavread对语音信号进行采样_语音信号处理相关知识
  3. python :re模块基本用法
  4. C# Dispose模式
  5. leetcode-345-翻转字符串中的元音字母
  6. windows下node安装
  7. GDB调试程序(二)
  8. Depth-first Search深度优先搜索专题4
  9. 关系数据库——视图/存储过程/触发器
  10. Linux操作系统多线程信号总结(转)
  11. 【HDOJ】2809 God of War
  12. linux挂载iso5后如何安装,CentOS系统怎样挂载光盘镜像ISO文件
  13. linux温度监控软件,PSensor:Linux下硬件温度监控软件
  14. 大学生破译周鸿祎手机号 李开复放 橄榄枝
  15. 每日excel学习之分类汇总和数据有效性
  16. 混合现实VR Twitch视频
  17. OGRE加载天龙八部场景
  18. Dnspod域名设置
  19. 互联网项目,京东店群、淘宝店群和天猫无货源店群,创业者该如何选择?
  20. 名字中间一条线怎么弄_网名怎么加横线啊 网名中间加一条横线

热门文章

  1. 真香定律!2021最新Android开发者学习路线,年薪超过80万!
  2. 数字身份验证服务商ADVANCE.AI「星鉴」客户案例被钛媒体“创新场景50”收录报道
  3. 本地yum源搭建——ftp源
  4. Transformer之编码器
  5. tzoj 5785: 打击犯罪
  6. 波音公司2020财年第三季度收益电话会议
  7. web渗透之文件包含漏洞-学习笔记分享
  8. 微信小程序 蓝牙固件升级
  9. 贾跃亭终现身,这次带来了一个好消息
  10. foxmai过滤器无效的解决办法