##Mysql数据库DQL查询工具的使用

在开始进行查询工具的学习之前我们需要做一些准备工作,也把我们之前的只是稳固下:

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;

猜你喜欢

转载自www.cnblogs.com/liurui-bk517/p/10981819.html