DQL查询操作主要包括有:
一:简单查询:
最基本的查询操作,基础语句:
关键词:select ... from [表名];
查询操作:
-- 一:查询所有商品 -- select 后面可以跟想要显示的列的名称, -- 也可以直接用 * 来直接显示所有的列,展现出来整个的表 select * from product -- 二:查询商品名称以及商品的价格 select name,price from product; -- 三:别名查找:对于表或者是某一列重新设置一个新的名称 -- 关键字是as -- 3.1表别名: select from product as p; -- 3.2列别名 select price as'价格',name '商品名称' from product; -- 设置别名是为了在比较多的表或者是一个表当中的许多列中 -- 更容易的找到所需要查询的数据 -- 四:去掉重复值 select DISTINCT price from product -- 如果只查询一列,比如说价格这一列,使用关键字distinct -- 能够去掉所有的相同的价格,重复值 -- 但是如果对于多个列,除非是完全相同,否则是不会除去的 -- 五:让所有商品的价格都在原来的基础之上增加10元 select name,price+10 from product; -- 此查询并不改变原来表格当中的商品价格
二:运算符操作
1.运算符操作'主要'包括有:算数运算符(+ , - ,* ,/ ,%)
比较运算符(> ,< ,>= ,<= ,!=)
逻辑运算符(||或者 ,&&并且)
2.查询有关操作:
-- 基本查询操作当中的运算符操作----算数运算符号 -- 主要包括的是+ - * / % -- 操作: select name,price+10 as new_price from product; select name ,price*1.1 new_price from product; -- 基本查询操作--逻辑查询操作 -- 一:查询商品名称为海尔洗衣机的商品的所有信息 select * from product where name='海尔洗衣机'; -- 二:查询价格为800的商品 select * from product where price=800; -- 三:查新商品价格不是800的产品 select * from product where price!=800; -- 四:查询商品价格大于60的所有产品 select * from product WHERE price>60; -- 五:查询商品价格在200-1000之间的产品的所有信息; SELECT * FROM product WHERE price>=100 && price<=1000; -- 六:查询价格是200或者是800的所有产品; SELECT * FROM product WHERE price=200 ||price=800; -- 七:查询含有'裤'字的所有产品 select * from product WHERE name like '%裤%'; -- %的作用是能够忽略前面是否含有字,或者是后面是否含有字 -- %能够匹配任何的字符 -- 八:查询以海字开头的所有商品 select * from product where name like '海%'; -- 九:查询第二个字是'蔻'的所有商品 SELECT * FROM product WHERE name like '_蔻'; -- 一个下划线能够匹配单个的字符 -- 九:查新kind为null的所有商品 -- 错误写法:SELECT * FROM product WHERE kind=null; -- 因为对于null来说它跟任何的值都是不一样的都是不相等的 -- 因此并不能够用简单的逻辑运算符号来表示为null -- 正确写法: SELECT * from product WHERE kind is null; -- 十:查询kind不是null分类的所有商品 SELECT * from product where kind is not null; -- 十一:求最大值:相当于使用了一个函数 select LEAST(11,13,46) as '最小值' ; -- 同时的,如果在函数当中的值有null值 -- 十二:求最大值:也是一个函数 select GREATEST(100,null,456); -- 如果函数当中有null那么在最大值的函数当中也是会显示出来null值的
三:排序查询
关键字:order by ... desc || asc
其中desc代表的是降序排,而asc为默认的排序,是升序排序,一般情况下后者可以直接省略,而desc不能
查询操作:
-- 选择排序方法 -- 关键字:order by -- 操作: select * from product order by price; -- 在默认的情况下,如果进行排序的时候都会进行升序排序 -- 也可以加上asc表示升序排序 SELECT * FROM product ORDER BY price desc; -- 排序查询: -- 一:按照使用价格进行排序(降序) SELECT * FROM product ORDER BY price desc; -- 二:在价格降序排序的基础之上,以分类排序作为一个标准 -- 依然是降序的 SELECT * from product order by price desc,kind desc; -- 如果有多重的排序标准的情况下,只有满足最左边的排序,才会继续进行右边的排序方式! -- 三:显示商品的价格,降序,并且去掉重复值 select distinct price from product order by price desc;
四:聚合查询(函数)
关键字:count(), max(), sum(),min(),avg()[求平均值]
介绍:
1.之前的所有查询都是横向的查询,聚合查询可以做到行查询的操作
2.聚合查询会自动的忽略这一列当中的NULL值!不进行计算
查询操作:
-- 操作以及用法: -- 一:求这个表格当中一共有多少行 -- keyword:count(); select count(id) from product; -- 二:计算种类为c001的商品的所有的价格的和 select sum(price) as total from product where kind='c001'; -- 三:计算商品名称当中有'裤'字的所有商品的最大||最小值: select max(price),min(price) from product where name like '%裤%'; -- 四:计算商品价格在300元以上的裤子的平均价格 select avg(price) from product where name like '%裤%' && price>300; -- 聚合查询需要注意的--NULL点: -- 对于所有的聚合函数来讲,如果要查询的某一个列当中含有 -- NULL值,那么都会视而不见,不计入计算当中的,max,min,avg,等等都不会将NULL值计入进去
五:分组查询
关键词:group by
介绍:使用分组查询的方法能够把相同的放在一起查找,分类,便于查找
基本操作:
-- DQL--基本查询--分组查询 -- 关键字:group by update product set kind='c004' where id=18; -- 一:统计各个分类商品的个数 select kind,count(kind) from product group by kind; -- 分组查询之后再进行相应的选择 -- 关键字:having 仅仅使用在分组之后再次的进行选择,而不是使用where -- 查询各个不同类的商品当中个数大于4的产品 按照降序排序 select kind,count(kind) from product group by kind HAVING count(kind) >4 order by count(kind) desc; -- 由此可以看出来,执行的顺序首先是从from开始的,之后向右进行一步一步的排查,查询,在进行group by-->select --> -- count(kind)-->having -->order by最终的结果进行排序
六:分页查询
关键词:limit
介绍:有些数据库当中的表中行数比较多,而显示屏的大小有限,所以应当采取分页进行的操作,这样就能够有效的分开显示这些数据
基本操作:
-- tips:分页查询的操作一般都是放在末端进行的 -- 关键词:LIMIT -- 表达方式一: select * from product limit 0; -- 后面的数字代表从头开始,一共显示多少行 -- 表达方式二: select * from product limit 3,4; -- 后面两个数字,第一个代表的是从索引为多少的数开始进行查询操作,是索引数(index) -- 后面的一个也是代表显示多少行 -- 表跟表之间的复制粘贴操作 -- 目的,将一个已经创建过有数据的表当中数据先进行 -- 查询,之后将其复制到另外一个'提前'已经创建过的表当中 -- 一:重新创建一个表,在里面填充之前的商品的种类以及数量 create table product2( kind VARCHAR(20), count int ); -- 关键字:insert into 表(1,2,3,....) select .... -- 需要注意的是,select后面的列名称,必须跟新表当中的种类相同! insert into product2(kind,count) select kind,count(kind) a from product group by kind ;