DQL基础应用(select,from,where,group

2019-08-08  本文已影响0人  新_WX

1.select语句应用

1.1.select 的执行逻辑
命令参数 作用
select 列1,列2
from 表,指定从哪个表中取数据
where 条件,匹配条件,and/or是并且/或者,between是取区间,in表示取哪些值的属性。
group by 条件,分组字句+聚合函数应用
having 条件,把之前的结果再次进行过滤
order by 条件,将之前的结果进行排序,默认由低到高desc由高到低
limit 条件,取行数,显示多少行
1.2.select单独使用情况

(1) select @@参数名;

SELECT @@datadir;                             查询数据目录路径
SELECT @@port                                 查询端口号
SELECT @@socket                               查询socket文件路径
SELECT @@innodb_flush_log_at_trx_commit;
SHOW VARIABLES                                查询所有参数(513个)
SHOW VARIABLES LIKE '%trx%';                  模糊查询

(2) select函数();

SELECT NOW()                                  查看当前时间
SELECT DATABASE();                            查看当前所在数据库
SELECT USER()                                 查看当前用户
SELECT 16*16                                  计算16*16
SELECT CONCAT("hello word")                   显示引号中的值
SELECT CONCAT(USER,"@",HOST) FROM mysql.user        查询user和host使用'@'符合拼接显示

2.FROM 子句应用

SELECT * FROM city                            查看citi表中所用数据,全表扫描
SELECT NAME,countrycode FROM city;            查看citi表中的name列和countrycode列

from用于指定从哪个表中取数据

3. where字句应用

>>3.1 等值查询
--- 查询中国城市的信息.
SELECT * FROM city WHERE countrycode='CHN'

>>3.2 不等值查询
--- 查询ID小于10的城市信息
SELECT * FROM city WHERE population<100;
--- 查询不是中国的城市信息(尽量不使用不等于,可能不走索引)
SELECT * FROM city WHERE countrycode!='CHN';

>>3.3 模糊查询
---查询国家代号为CH打头的城市信息.
SELECT * FROM city WHERE countrycode LIKE 'CH%'
《注意:避免使用LIKE中前面带%的模糊查询》

>>3.4 逻辑连接符(and,or)
---查询中国城市人口超过500W的城市信息
SELECT * FROM city WHERE CountryCode='CHN' AND Population>5000000
---查看山东省或河北省的城市信息
SELECT * FROM city WHERE district='shangdong' OR district='hebei' 

>>3.5 where 配合between and使用
---查询人口数在100W-200W区间的城市信息(包含头尾)
SELECT * FROM city WHERE Population BETWEEN 1000000 AND 2000000

>>3.6 where配合in使用
---查看山东省或河北省的城市信息
SELECT * FROM city WHERE District IN('shangdong','hebei')
《  排除:SELECT * FROM city WHERE District NOT IN('shangdong','hebei')  》

where用于匹配条件,and/or是并且/或者,between是取区间,in表示取哪些值的属性。

4. group by 分组字句+聚合函数应用

4.1 什么是分组

按照某个列进行分组

4.2 常用的聚合函数
名称 作用
COUNT() 计数
MAX() 最大值
MIN() 最小值
AVG() 平均值
SUM() 求和
GROUP_CONCAT() 列转行
4.3 例子
>>统计每个国家的城市个数
SELECT CountryCode,COUNT(id) FROM city GROUP BY CountryCode
>> 统计中国,每个省的,城市个数,省总人口数
SELECT district, COUNT(NAME),SUM(population)  FROM  city   WHERE countrycode='CHN'  GROUP BY district ;
>>统计各个国家的城市名列表
SELECT countrycode ,GROUP_CONCAT(NAME) FROM city GROUP BY countrycode\G

5. having子句使用

>> 统计中国,每个省的,城市个数,省总人口数,只显示人口总数大于800w的省
SELECT district, COUNT(NAME),SUM(population) 
FROM  city  
WHERE countrycode='CHN' 
GROUP BY district 
HAVING  SUM(population)>8000000

having是把之前的结果再次进行过滤

6. order by子句使用

>> 将以上例子在进行排序
SELECT district, COUNT(NAME),SUM(population) 
FROM  city  
WHERE countrycode='CHN' 
GROUP BY district 
HAVING  SUM(population)>8000000
ORDER BY SUM(population) DESC;
>>查询中国所有城市信息,并以人口数降序排序输出
SELECT * FROM city WHERE CountryCode='CHN' ORDER BY Population DESC;

order by是将之前的结果进行排序

7. limit 应用

>>查询中国所有城市信息,并以人口降序输出,只显示前五名
SELECT * FROM city WHERE CountryCode='CHN' ORDER BY Population DESC LIMIT 5;
>>跳过N行,显示M行
LIMIT N OFFSET M
LIMIT N,M

limit是取行数,显示多少行。

8. distinct应用

>>查询所有国家代号信息(去重)
SELECT DISTINCT CountryCode FROM city;

9. union与union all(相当于and)

>>查看山东省或者河北省的
SELECT * FROM city WHERE District='shangdong' UNION ALL SELECT * FROM city WHERE district='hebei'

面试题:union和union的区别
UNION自带distinct的去重功能,UNION ALL没有去重复

上一篇下一篇

猜你喜欢

热点阅读