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;