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;
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 /etc/passwd
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;
-- 统计中国,每个省的,城市个数,省总人口数
-- 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 ;
-- 查询中国所有城市信息,并以人口数降序输出
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