1.select語句應(yīng)用
1.1.select 的執(zhí)行邏輯
命令參數(shù) | 作用 |
---|---|
select | 列1离熏,列2 |
from | 表,指定從哪個表中取數(shù)據(jù) |
where | 條件颁糟,匹配條件遵馆,and/or是并且/或者,between是取區(qū)間,in表示取哪些值的屬性芍阎。 |
group by | 條件,分組字句+聚合函數(shù)應(yīng)用 |
having | 條件,把之前的結(jié)果再次進行過濾 |
order by | 條件矛渴,將之前的結(jié)果進行排序,默認由低到高desc由高到低 |
limit | 條件惫搏,取行數(shù)具温,顯示多少行 |
1.2.select單獨使用情況
(1) select @@參數(shù)名;
SELECT @@datadir; 查詢數(shù)據(jù)目錄路徑
SELECT @@port 查詢端口號
SELECT @@socket 查詢socket文件路徑
SELECT @@innodb_flush_log_at_trx_commit;
SHOW VARIABLES 查詢所有參數(shù)(513個)
SHOW VARIABLES LIKE '%trx%'; 模糊查詢
(2) select函數(shù)();
SELECT NOW() 查看當前時間
SELECT DATABASE(); 查看當前所在數(shù)據(jù)庫
SELECT USER() 查看當前用戶
SELECT 16*16 計算16*16
SELECT CONCAT("hello word") 顯示引號中的值
SELECT CONCAT(USER,"@",HOST) FROM mysql.user 查詢user和host使用'@'符合拼接顯示
2.FROM 子句應(yīng)用
SELECT * FROM city 查看citi表中所用數(shù)據(jù),全表掃描
SELECT NAME,countrycode FROM city; 查看citi表中的name列和countrycode列
from用于指定從哪個表中取數(shù)據(jù)
3. where字句應(yīng)用
>>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使用
---查詢?nèi)丝跀?shù)在100W-200W區(qū)間的城市信息(包含頭尾)
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是取區(qū)間,in表示取哪些值的屬性茴丰。
4. group by 分組字句+聚合函數(shù)應(yīng)用
4.1 什么是分組
按照某個列進行分組
4.2 常用的聚合函數(shù)
名稱 | 作用 |
---|---|
COUNT() | 計數(shù) |
MAX() | 最大值 |
MIN() | 最小值 |
AVG() | 平均值 |
SUM() | 求和 |
GROUP_CONCAT() | 列轉(zhuǎn)行 |
4.3 例子
>>統(tǒng)計每個國家的城市個數(shù)
SELECT CountryCode,COUNT(id) FROM city GROUP BY CountryCode
>> 統(tǒng)計中國,每個省的,城市個數(shù),省總?cè)丝跀?shù)
SELECT district, COUNT(NAME),SUM(population) FROM city WHERE countrycode='CHN' GROUP BY district ;
>>統(tǒng)計各個國家的城市名列表
SELECT countrycode ,GROUP_CONCAT(NAME) FROM city GROUP BY countrycode\G
5. having子句使用
>> 統(tǒng)計中國,每個省的,城市個數(shù),省總?cè)丝跀?shù)达皿,只顯示人口總數(shù)大于800w的省
SELECT district, COUNT(NAME),SUM(population)
FROM city
WHERE countrycode='CHN'
GROUP BY district
HAVING SUM(population)>8000000
having是把之前的結(jié)果再次進行過濾
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;
>>查詢中國所有城市信息,并以人口數(shù)降序排序輸出
SELECT * FROM city WHERE CountryCode='CHN' ORDER BY Population DESC;
order by是將之前的結(jié)果進行排序
7. limit 應(yīng)用
>>查詢中國所有城市信息贿肩,并以人口降序輸出峦椰,只顯示前五名
SELECT * FROM city WHERE CountryCode='CHN' ORDER BY Population DESC LIMIT 5;
>>跳過N行,顯示M行
LIMIT N OFFSET M
LIMIT N,M
limit是取行數(shù)汰规,顯示多少行汤功。
8. distinct應(yīng)用
>>查詢所有國家代號信息(去重)
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的區(qū)別
UNION自帶distinct的去重功能,UNION ALL沒有去重復(fù)