在开始进行查询工具的学习之前我们需要做一些准备工作,也把我们之前的只是稳固下:
1,新建数据库day03
语法:CREATE DATABASE 数据库名;
2,展示数据库
语法:SHOW DATABASES;
3,展示当前新建数据库
语法:SHOW CREATE DATABASE 数据库名;
4,查询数据库
语法:SELECT DATABASE();
5,换库
语法:USE 数据库名;
CREATE DATABASE day03;
#展示数据库
SHOW DATABASES;
#展示当前数据库
SHOW CREATE DATABASE day03;
#删除数据库
DROP DATABASE day03;
#查询数据库
SELECT DATABASE();
#换库
USE day03;
6,新建数据表product(商品)
语法:CREATE TABLE product();
7,添加数据:
语法:INSERT INTO product(pid,pname,price,category_id)VALUES();
8,查询表结构
语法:DESC product;
#新建数据表product
CREATE TABLE product(
#商品序号
pid INT PRIMARY KEY,
#商品名称
pname VARCHAR(20),
#商品价格
price DOUBLE,
#商品分类
category_id VARCHAR(60)
);
#查询表结构
DESC product;
#添加数据
INSERT INTO product(pid,pname,price,category_id)VALUES(1,'劲霸男装',1314,'服装'),
(2,'红蜻蜓皮鞋',320,'服装'),
(3,'鳄鱼鞋业',2313,'服装'),
(4,'香奈儿',521,'化妆品'),
(5,'防晒喷剂',34,'化妆品'),
(6,'曼秀雷敦',220,'化妆品'),
(7,'干红',342,'饮品'),
(8,'五粮液',120,'饮品'),
(9,'醇啤酒',4,'饮品'),
(10,'叶麦片',45,'谷物'),
(11,'小米加面',4,'谷物'),
(12,'红豆',10,'谷物'),
(13,'黑厚学',20,'书籍'),
(14,'儿诗三百首',15,'书籍'),
(15,'童话大全',35,'书籍'),
(16,'华为P30',4999,'手机'),
(17,'苹果P8s',7800,'手机'),
(18,'三星A8s',3299,'手机'),
(19,'健身跑步机',12000,'健身'),
(20,'杠铃',45,NULL);
#如果我已经添加完数据,但是我又想添加
INSERT INTO product(pid,pname,price,category_id)VALUES(21,'泳镜',67,'健身');
#查询表数据
SELECT*FROM product;
到这一步的时候,我们现在基本上准备工作就做好了,下面我们开始查询
一:简单查询:
1,1查询多字段的表
语法:SELECT 字段名,字段名FROM 表名;
1,2查询所有商品的列表
语法:SELECT 字段名,字段名,字段名,字段名 FROM 表名; 此方法不推荐使用:效率低
SELECT *FROM product;
1,3查询商品价格并过滤重复 关键字:Distinct
语法:Select Distinct 字段名 From 表名;
Select Distinct 字段名,字段名。 From 表名;
1.4g给表起别名
语法:Select * From 表名 AS 名字;(AS可以省略不写)
1.5给字段起别名
语法:Select 字段名 新名字,字段名 新名字 From 表名;(如果新名字you空格记得要用单引号或者双引号引起来)
1.6进行数据运算
语法:Select(运算);
1.7查询进行运算之后的数据表
语法:Select 字段名,字段名+1000 From 表名;
#查询商品的价格和商品名
SELECT pname,price FROM product;
#查询商品表所有列的信息
SELECT pid,pname,price,category_id FROM product;
SELECT *FROM product;
#查询商品价格列,过滤重复的部分
SELECT price FROM product;
SELECT DISTINCT price FROM product;
SELECT DISTINCT pid,pname,price,category_id FROM product;
#给表起别名
SELECT *FROM product AS p;
SELECT *FROM product p;
#给字段起别名
SELECT pname 商品名称,price 商品价格 FROM product;
SELECT pname 商品名称,price '商品价格 涨价' FROM product;
#查询语句中可以直接进行数据运算
SELECT(2*23);
#查询商品名称和商品价格涨价后的价格
SELECT pname,price+1000 FROM product;
二:条件查询
2,1比较运算符
基本运算符 < > <= >= <>(不等于) !=
表示查询区间 between and >=&&<=
表示多个条件 in(。。。) 例子:in(10,20) 10||20
表示空的 is null
#查询数据库表
SELECT *FROM product;
#商品名称为香奈儿的商品信息
SELECT *FROM product WHERE pname='香奈儿';
#查询价格为12000的商品
SELECT *FROM product WHERE price=12000;
#查询商品价格不为12000的商品
SELECT *FROM product WHERE price<>12000;
SELECT * FROM product WHERE price !=12000;
#查询商品价格大于200的商品
SELECT *FROM product WHERE price>200;
#查询价格再10-500之间的商品
SELECT * FROM product WHERE price BETWEEN 10 AND 500;
SELECT *FROM product WHERE price>=10 AND price<=1000;
SELECT *FROM product WHERE price>5&&price<=50;
#查询价格是10或者45的商品
SELECT *FROM product WHERE price IN(10,45);
SELECT *FROM product WHERE price=10 OR price=45;
2,2模糊查询 使用关键字:like
多个任意字符%
一个任意字符_
#查询商品名称以鳄鱼开头的商品
SELECT *FROM product WHERE pname LIKE '%鱼%';
SELECT *FROM product WHERE pname LIKE'__';
SELECT *FROM product WHERE pname LIKE'____';
2,3逻辑运算符
与 and &&
或 or ||
非 ! not
#商品没有分类的商品
SELECT *FROM product WHERE category_id IS NULL;
SELECT *FROM product WHERE category_id IS NOT NULL;
SELECT *FROM product WHERE NOT(category_id IS NULL);
三:聚合查询:
3,1查询的结果是进行排序 ASC是升序 DESC是降序
语法:select *from 表名 order by 字段名 排序方法;
3,2显示价格 去掉重复的价格 降序
语法:SELECT DISTINCT 字段名FROM 表明ORDER BY 字段名 ASC;
SELECT DISTINCT 字段名FROM 表明ORDER BY 字段名 DESC;
3,3再分类的降序
语法:SELECT *FROM 表名ORDER BY 字段名 DESC;
3.4对某列的数据进行查询 结果是一个单一的直,会忽略null的直
3.5count统计指定列不为null行数
3.6sum指定列的数值和,如果指定的列不是数值类型,结果为0
3.7max指定列的最大直, 如果指定的列是字符串类型,那么结果为采用字符串运算
3.8min 小
3.9avg 平均值,如果指定的列不是数值类型, 那么计算结果为0
/*
查询的结果是进行排序 ASC是升序 DESC是降序
语法:select *from 表名 order by 字段名 排序方法;
*/
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 ASC;
SELECT DISTINCT price FROM product ORDER BY price DESC;
SELECT *FROM product;
#再分类的降序
SELECT *FROM product ORDER BY category_id DESC;
#查询商品总条数
SELECT COUNT(*)FROM product;
SELECT COUNT(pid)FROM product;
SELECT COUNT(pname)FROM product;
SELECT COUNT(price)FROM product;
SELECT COUNT(category_id)FROM product;
#查询价格大于50元的商品总数
SELECT COUNT(*)FROM product WHERE price>50;
#查询商品的总价格
SELECT SUM(price)FROM product;
#查询分类为服装的所有商品价格之和
SELECT SUM(price)FROM product WHERE category_id='服装';
#查询商品的平均值
SELECT AVG(price)FROM product;
SELECT AVG(price)FROM product WHERE category_id='化妆品';
#查询商品价格中最大的价格和最小的价格
SELECT MAX(price),MIN(price)FROM product;
SELECT MAX(price),MIN(price)FROM product WHERE category_id="饮品";
SELECT *FROM product;
#sum avg如果指定的类型不是数值类型那么计算结果为0
SELECT SUM(pname)FROM product;
SELECT AVG(pid)FROM product;
四:分组查询 重重之重 关键字:Group By Having
含义:select被分组的字段,求和,平均值,个数,最大,最小。from表名[where条件]grop by 被分组的字段
4,1按商品的类别进行分组,统计哥分类商品的个数
语法:SELECT 字段名,COUNT(*)FROM 表名GROUP BY 字段名;
4,2按商品的类别进行分组,统计各个分类商品的平均价格
语法:SELECT 字段名,AVG(字段名)FROM 表名GROUP BY 字段名;
4,3先按商品的类别分组,统计各个分组商品的个数,只查询每组商品大于200的商品
语法:SELECT 字段名,COUNT(字段名)FROM 表名WHERE 字段名>200 GROUP BY 字段名;
4,4先按商品的类别分组,统计各个分组商品的个数,只显示统计个数等于三的信息
语法:SELECT 字段名,COUNT(*)FROM 表名GROUP BY 字段名HAVING COUNT(*)=3;
#按商品的类别进行分组,统计哥分类商品的个数
SELECT category_id,COUNT(*)FROM product GROUP BY category_id;
#按商品的类别进行分组,统计各个分类商品的平均价格
SELECT category_id,AVG(price)FROM product GROUP BY category_id;
#where用于分组钱进行条件guolv
#having用于分组后,对分完组的数据进行过滤
#先按商品的类别分组,统计各个分组商品的个数,只查询每组商品大于200的商品
SELECT category_id,COUNT(price)FROM product WHERE price>200 GROUP BY category_id ;
#先按商品的类别分组,统计各个分组商品的个数,只显示统计个数等于三的信息
SELECT category_id,COUNT(*)FROM product GROUP BY category_id HAVING COUNT(*)=3;