DQL基础应用
0. 介绍
select 语句应用
select(单表)的执行逻辑 *****
select 列1 , 列2
from 表
where 条件
group by 条件
having 条件
order by 条件
limit 条件
1. SELECT 单独使
-- 1.1 SELECT @@参数名;
例子 :
SELECT @@datadir; ##数据目录
SELECT @@port; ##端口
SELECT @@socket; ##socket文件
SELECT @@innodb_flush_log_at_trx_commit; ##
SHOW VARIABLES LIKE '%trx%'; ##模糊查找
SHOW VARIABLES; ##查询所有参数
-- 1.2 SELECT 函数();
SELECT NOW(); ##查询当前时间
USE mysql; ##使用数据库
SELECT DATABASE(); ##当前数据库
SELECT USER(); ##登录的用户
SELECT 16*16; ##计算
SELECT CONCAT("hello world"); ##打印字符串
SELECT CONCAT(USER,"@",HOST) FROM mysql.user;
SELECT GROUP_CONCAT(USER,"@",HOST) FROM mysql.user;
2. FROM 子句应用
表结构介绍:
USE world;
SHOW TABLES;
city 城市
country 国家
countrylanguage 国家语言
DESC city;
id 主键
NAME 城市名
countrycode 国家代码(USA,CHN,JPN)
district 省,洲
population 城市人口
SELECT * FROM city; ##相当于cat 一个文件
SELECT NAME,countrycode FROM city; 相当于 awk 3
3. where子句应用
3.1 等值查询
查询中国城市的信息.
SELECT * FROM city WHERE countrycode='CHN' ;
3.2 不等值查询
查询人口数量少于100人城市.
SELECT * FROM city WHERE population<100;
查询ID小于10的城市信息
SELECT * FROM city WHERE id<10;
查询不是中国的城市信息(尽量不使用不等于,可能不走索引)
SELECT * FROM city WHERE countrycode!='CHN';
3.3 模糊查询
查询国家代号为CH打头的城市信息.
SELECT * FROM city WHERE countrycode LIKE 'CH%';
SELECT * FROM city WHERE countrycode LIKE '%CH%';
注意: 避免使用 like 中前面带%的模糊查询
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 countrycode,SUM(population) FROM city
GROUP BY countrycode;
统计中国,每个省的,城市个数,省总人口数
SELECT district,COUNT(NAME),SUM(Population) FROM city
WHERE CountryCode='CHN'
GROUP BY district;
5. having 子句使用
统计中国,每个省的,城市个数,省总人口数
只显示人口总数大于800w的省
SELECT district, COUNT(NAME),SUM(population)
FROM city
WHERE countrycode='CHN'
GROUP BY district
HAVING SUM(population)>8000000;
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 ;
使用desc是倒序,不是用默认正序
查询中国所有城市信息,并以人口数降序输出
SELECT * FROM city WHERE countrycode='CHN'
ORDER BY population DESC ;
7. limit 应用
-- 查询中国所有城市信息,并以人口数降序输出,只显示前五名
SELECT * FROM city WHERE countrycode='CHN'
ORDER BY population DESC
LIMIT 5 ;
SELECT * FROM city WHERE countrycode='CHN'
ORDER BY population DESC
LIMIT 10 OFFSET 0;
SELECT * FROM city WHERE countrycode='CHN'
ORDER BY population DESC
LIMIT 5 OFFSET 5
SELECT * FROM city WHERE countrycode='CHN'
ORDER BY population DESC
LIMIT 3,5;
跳过前N行,显示M行(N和M代表的是数字)
LIMIT M offet N
LIMIT N,M