MySQL 查询sql 简单查询 条件查询 排序查询 模糊查询 聚和查询 分组查询

MySQL 查询sql

1.准备库和表
2.简单查询
3.条件查询
4.排序查询
5.聚和查询
6.分组查询

创建数据库 准备工作

#创建库
CREATE DATABASE day002;
使用库
USE day002;

#创建表
CREATE TABLE product(
pid INT PRIMARY KEY,
pname VARCHAR(60),
price DOUBLE,
category_id VARCHAR(32)

);
#添加数据
INSERT INTO product(pid,pname,price,category_id) VALUES(1,‘华为’,5000,‘c001’);
INSERT INTO product(pid,pname,price,category_id) VALUES(2,‘小米’,1999,‘c001’);
INSERT INTO product(pid,pname,price,category_id) VALUES(3,‘格力’,2999,‘c001’);
INSERT INTO product(pid,pname,price,category_id) VALUES(4,‘秋裤’,15,‘c002’);
INSERT INTO product(pid,pname,price,category_id) VALUES(5,‘阿玛尼’,19990,‘c002’);
INSERT INTO product(pid,pname,price,category_id) VALUES(6,‘海澜之家’,46,‘c002’);
INSERT INTO product(pid,pname,price,category_id) VALUES(7,‘劲霸’,46,‘c002’);
INSERT INTO product(pid,pname,price,category_id) VALUES(8,‘香奈儿’,800,‘c003’);
INSERT INTO product(pid,pname,price,category_id) VALUES(9,‘小护士’,19,‘c003’);
INSERT INTO product(pid,pname,price,category_id) VALUES(10,‘南街村’,3,‘c004’);
INSERT INTO product(pid,pname,price,category_id) VALUES(11,‘好想你大枣’,19,‘c004’);
INSERT INTO product(pid,pname,price,category_id) VALUES(12,‘杜康’,200,‘c005’);
INSERT INTO product(pid,pname,price,category_id) VALUES(13,‘狗粮’,1,NULL);

1.简单查询

简单的查询语句 使用关键字 select(查询) from(从) where(条件)

语法:select 列名,列明1…from 表名

#查询商品名称和价格
SELECT pname,price FROM product;
#查询商品表所有的信息
SELECT *FROM product;

过滤重复的数据 select distinct 字段1,字段2,…from 表名

SELECT price FROM product;
SELECT DISTINCT price FROM product;
SELECT DISTINCT pname,price FROM product;

给表起别名

SELECT * FROM product AS p;
SELECT * FROM product p;

给表中的字段起别名
SELECT pname AS 商品名称,price AS 商品价格 FROM product;
SELECT pname 商品名称1,price ‘商品 价格1’ FROM product;

#查询语句可直接进行运算
SELECT(1+1);
#查询所有商品价格加1000
SELECT pname,price+1000 FROM product;

2.条件查询

**运算符
1 比较运算符
基本比较运算符 > < >= <= = <> !=
表示查询期间 between…and >= && <=
表示多个条件 in(…) in(10,20) 10||20
表示空的 is null
模糊 使用关键字 like
多个任意字符 %
1个任意字符 _

2 逻辑运算符
与 and &&
或 or ||
非 not ! ****

查询商品名为海澜之家的商品
SELECT * FROM product WHERE pname=‘海澜之家’;

#查询价格在10-100之间的商品
#方法1
SELECT * FROM product WHERE price>=10&&price<=100;
#方法2
SELECT * FROM product WHERE price BETWEEN 10 AND 100;

#查询价格是10 或者46的数据
#方法1
SELECT FROM product WHERE price IN(10,46);
#方法2
SELECT
FROM product WHERE price=10 OR price=46;
#方法3
SELECT* FROM product WHERE price=10 || price=5000;

3.模糊查询

模糊 使用关键字 like
多个任意字符 %
1个任意字符 _

#查询商品信息以海澜开头的信息
SELECT *FROM product WHERE pname LIKE’海澜%’;

#查询商品信息有五个字符的
SELECT *FROM product WHERE pname LIKE’_____’;
#查询商品没有分类信息的
SELECT * FROM product WHERE category_id IS NULL;

#查询商品分类信息非空的
#方法1
SELECT * FROM product WHERE category_id IS NOT NULL;/非空
#方法2
SELECT *FROM product WHERE NOT(category_id IS NULL);/非空

4.排序

#对查询结果进行排序 默认是升序
#关键字 ASC 升序 DESC降序

*语法: select |字段 from 表名[where条件] order by 被排序的字段 [ASC]|[DESC]

SELECT * FROM product ORDER BY price ASC;
SELECT * FROM product ORDER BY price;
#降序
SELECT * FROM product ORDER BY price DESC;

#显示价格 去掉重复的 按降序查询
SELECT DISTINCT price FROM product ORDER BY price DESC;

5.聚合查询

对某列的数据进行查询 结果是一个单一的值 会忽略null值
count 统计指定列不为null 行数
sum 指定列的数值和 如果指定的列不是数值类型 结果为0
max指定列的最大值 如果指定的列是字符串类型 使用字符串排序运算
min 指定列的最小值 如果指定的列是字符串类型 使用字符串排序运算
avg 平均值 如果指定的列不是数值类型 那么计算结果为零

select count(字段|*),sum(字段),max(字段),min(字段),avg(字段)from 表名;

#查询商品总条数
SELECT COUNT(pid) FROM product;
SELECT COUNT(pname) FROM product;

#查询价格大于50元的商品的总条数
SELECT COUNT(*) FROM product WHERE price>50;

#查询商品总价格
SELECT SUM(price) FROM product;
#查询分类为c001的商品的总价格
SELECT SUM(price)FROM product WHERE category_id=‘c001’;

#查询商品的平均价格
SELECT AVG(price)FROM product;
#查询分类为c002的商品的平均价格
SELECT AVG(price) FROM product WHERE category_id=‘c002’;

#查询商品中的最高价格和最低价格
SELECT MAX(price), MIN(price) FROM product;

#sum avg 如果指定类型不是数值类型 那么计算结果为0
SELECT AVG(pname),SUM(pname) FROM product;

6.分组查询

#格式 select 被分组的字段 (求和,平均值,个数,最大最小值…)from 表名 [where 条件]group by 被分组字段[having条件];

#按商品类分组 统计各个分类商品的个数
SELECT category_id,COUNT(*) FROM product GROUP BY category_id;

#按照商品类分组 统计各个商品类的平均价格
SELECT category_id,AVG(price) FROM product GROUP BY category_id;

where 用于分组前进行条件过滤
#having 用于分组后 对分完组的数据进行过滤

#先按商品的类别分组 统计各个分组商品的个数 只查询每组商品大于200的商品
SELECT category_id,COUNT(*) FROM product WHERE price>200 GROUP BY category_id;

#先按商品的类别分组 统计各个分组商品的个数 只显示统计个数等于三的信息
SELECT category_id,COUNT() FROM product GROUP BY category_id HAVING COUNT()=3;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值