数据库学习——第二天

数据库学习

今日内容

数据库的查询语句[重点]
   基本查询(不带条件(where))
   条件查询(where)

在这里插入图片描述

在这里插入图片描述

SELECT * FROM goods;
SELECT * FROM goods WHERE price=22 AND company='dd';
SELECT * FROM goods WHERE remark LIKE '%一次性%';
SELECT * FROM goods WHERE price BETWEEN 30 AND 100;
SELECT * FROM goods WHERE remark IS NULL;
SELECT * FROM goods ORDER BY price DESC,count ASC;
SELECT COUNT(*) FROM goods;
SELECT MAX(price) FROM goods;
SELECT MIN(price) FROM goods;
SELECT AVG(price)  FROM goods;
SELECT SUM(count) FROM goods WHERE remark LIKE '%一次性%';
SELECT company,COUNT(count) FROM goods GROUP BY company;
SELECT * FROM goods LIMIT 4,6;

查询语句

基本查询
-- 需求1: 准备商品数据, 查询所有数据, 查询部分字段, 起字段别名, 去重
-- 查询所有数据 select * from 表名;
SELECT * from goods;
-- 查询部分字段 SELECT 字段名1,字段名2 from goods;
SELECT goodName,price from goods;
-- 字段起别名; 三种都可以 可以省略
SELECT goodName AS '商品名',price AS '价格' from goods;
SELECT goodName AS 商品名,price AS 价格 from goods;
SELECT goodName  商品名,price  价格 from goods;
-- 作用:1> 美化数据结果的显示效果 2> 可以起到隐藏真正字段名的作用
-- -- 另: 除了可以给字段起别名以外, 还可以给数据表起别名(连接查询时使用)
-- 去重: select distinct(字段名) from goods;
-- 效果: 将⽬标字段内重复出现的数据只保留⼀份显示
-- 需求: 显示所有的公司名称
SELECT * from goods;
SELECT company from goods;
SELECT DISTINCT(company) from goods;

条件查询

在这里插入图片描述

条件构成

where 后面支持多种运算符,进行1条件的处理

  • 比较运算
  • 逻辑运算
  • 模糊查询
  • 范围查询
  • 空判断
比较运算符
  • 等于:=
  • 大于:>
  • 大于等于:>=
  • 小于:<
  • 小于等于:<=
  • 不等于:!=或<>
⽐较运算符&逻辑运算符
-- 需求2: 查询价格等于22并且出自tb的所有商品信息
SELECT * FROM goods;
-- 查询价格等于30 : 比较运算符(特殊: (⼤于等于)>=/(⼩于等于)<=/(不等于)!=/<>)
SELECT * FROM goods WHERE price = 22 ;
-- 并且出自tb的所有商品信息 : 逻辑运算符(and(与)/or(或)/not(⾮))
-- 注意: 作为查询条件使⽤的字符串必须带引号!
SELECT * FROM goods WHERE price = 22 AND company='tb' ;
-- 补充需求: 查询价格等于22但不出⾃桃子的所有商品信息
SELECT * FROM goods WHERE NOT company ='桃子' AND price=22;
-- 注意: not 与 and 和 or (左右两边连接条件)不同之处在于, not 只对
-- 右侧的条件有作用(右边连接条件)
SELECT * FROM goods WHERE price =22 AND NOT company='桃子';
模糊查询
-- 需求3: 查询全部一次性口罩的商品信息
-- 模糊查询: like 和符号 %(任意多个字符)/_(任意一个字符)
-- 注意: 作为查询条件使⽤的字符串必须带引号!
-- 注意: 如果需要控制字符数量, 需要使用_, 并且有几个字符就使用几个_
-- %关键词% : 关键词在中间
SELECT * FROM goods WHERE remark LIKE '%一次性%';
-- %关键词 : 关键词在末尾
SELECT * FROM goods WHERE remark LIKE '%一次性';
-- 关键词%: 关键词在开头
SELECT * FROM goods WHERE remark LIKE '一次性%';
范围查询
-- 需求4: 查询所有价格在30-100的商品信息
-- 范围查询: 1> 连续范围: in 2> 连续范围: between ... and ...
SELECT * FROM goods WHERE price BETWEEN 30 AND 100;

判断空
-- 需求5: 查询没有描述信息的商品信息
-- 注意: 在 MySQL 中, 只有显示为 NULL 的才为空! 其余空白可能是空格/制
-- 表符(tab)/换行符(回车键)等空白符号
-- 判断空: 1> 为空: is null 2> 不为空(双重否定表肯定): is not null
SELECT * FROM goods WHERE remark is NULL;
-- 补充需求: 查询有描述信息的所有商品
SELECT * FROM goods WHERE remark IS NOT NULL;
其他复杂查询
-- 需求6: 查询所有商品信息, 按照价格从大到小排序, 价格相同时, 按照数量
-- 少到多排序
-- select * from 表名 order by 列1 asc|desc,列2 asc|desc,...
-- 说明: order by 排序, asc : 升序, desc : 降序
-- 注意: 排序过程中, 支持连续设置多条排序规则, 但离 order by 关键字越
-- 近, 排序数据的范围越大!
SELECT * FROM goods;
SELECT * FROM goods ORDER BY price;
SELECT * FROM goods ORDER BY price DESC;
SELECT * FROM goods ORDER BY price DESC,count ASC;
-- 注意: 默认排序为升序, asc 可以省略
SELECT * FROM goods ORDER BY price DESC,count;
SELECT * FROM goods ORDER BY price DESC,count DESC;
聚合函数
  • 使用聚合函数方便进行数据统计
  • 聚合函数不能在where子句中使用
  • 常用聚合函数
    • count():查询总记录数
    • max():查询最大值
    • min():查询最小值
    • sum():求和
    • avg():求平均值
-- 需求7: 查询以下信息: 商品信息总条数; 最⾼商品价格; 最低商品价格;
-- 商品平均价格; ⼀次性⼝罩的总数量
-- 聚合函数: 系统提供的⼀些可以直接⽤来获取统计数据的函数
-- 商品信息总条数: count(字段): 查询总记录数
SELECT COUNT(*) FROM goods;
-- 注意: 统计数据总数, 建议使⽤*, 如果使⽤某⼀特定字段, 可能会造成数据
-- 总数错误!
SELECT COUNT(remark)from goods;
-- 最⾼商品价格: max(字段): 查询最⼤值
SELECT MAX(price) FROM goods;
-- 最低商品价格: min(字段): 查询最⼩值
SELECT MIN(price) FROM goods;
-- 商品平均价格: avg(字段): 求平均值
SELECT AVG(price) FROM goods;
-- ⼀次性⼝罩的总数量: sum(): 求和
-- 注意: 此处的 count 是数据表中字段名!
SELECT SUM(count) FROM goods WHERE remark LIKE '%一次性%';
-- 扩展: 在需求允许的情况下, 可以⼀次性在⼀条 SQL语句中, 使⽤所有的聚
-- 合函数
SELECT COUNT(*),MAX(price),MIN(price),AVG(price),SUM(price) FROM goods;
分组
-- 需求8: 查询每家公司的商品信息数量
-- 分组: select 字段1,字段2,聚合... from 表名 group by 字段1,字段
-- 2...
-- 说明: group by : 分组
-- 注意:
-- 1> ⼀般情况, 使⽤哪个字段进⾏分组, 那么只有该字段可以在 * 的位置处
-- 使⽤, 其他字段没有实际意义(只要⼀组数据中的⼀条)
-- 2> 分组操作多和聚合函数配合使⽤
SELECT * FROM goods;
SELECT * FROM goods GROUP BY company;
SELECT COUNT(*) FROM goods GROUP BY company;
SELECT  company,COUNT(*) FROM goods GROUP BY company;
-- 扩充: 分组后条件过滤
-- 说明: group by 后增加过滤条件时, 需要使⽤ having 关键字
-- 注意:
-- 1. group by 和 having ⼀般情况下需要配合使⽤
-- 2. group by 后边不推荐使⽤ where 进⾏条件过滤
-- 3. having 关键字后侧可以使⽤的内容与 where 完全⼀致(⽐较运算符/逻
-- 辑运算符/模糊查询/判断空)
-- 3. having 关键字后侧允许使⽤聚合函数
-- where 和 having 的区别:
-- where 是对 from 后⾯指定的表进⾏数据筛选,属于对原始数据的筛选
-- having 是对 group by 的结果进⾏筛选
-- having 后⾯的条件中可以⽤聚合函数,where 后⾯不可以
SELECT company,COUNT(*) FROM goods WHERE company ='pxx';
SELECT company,COUNT(*) FROM goods GROUP BY company HAVING company ='pxx';
分⻚查询
-- 需求9: 查询当前表当中第5-10⾏的所有数据
-- 分⻚查询: select * from 表名 limit start,count
-- 说明: limit 分⻚; start : 起始⾏号; count : 数据⾏数
-- 注意: 计算机的计数从 0 开始, 因此 start 默认的第⼀条数据应该为 0,
-- 后续数据依次减1
-- 过渡需求: 获取前 5 条数据
SELECT * FROM goods LIMIT 0 ,5;
-- 注意: 如果默认从第⼀条数据开始获取, 则 0 可以省略!
SELECT * FROM goods LIMIT 5;
-- 需求:
SELECT * FROM goods LIMIT 4,6;

-- 扩展 1: 根据公式计算显示某⻚的数据
-- 已知:每⻚显示m条数据,求:显示第n⻚的数据
-- select * from 表名 limit (n-1)*m, m
-- 示例: 每⻚显示 4 条数据, 求展示第 3 ⻚的数据内容

SELECT * FROM goods LIMIT 8,4;
-- 扩展 2: 分⻚的其他应⽤
-- 需求: 要求查询商品价格最贵的数据信息

SELECT * FROM goods ORDER BY price DESC LIMIT 1;
-- 进阶需求: 要求查询商品价格最贵的前三条数据信息
SELECT * FROM goods ORDER BY price DESC LIMIT 3;

声明:是学习黑马测试教程的,有兴趣可以点击链接学习学习入口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值