【单表查询语句】---DQL
select:获取mysql中的数据行(MySQL独有的查询语句)
1,单独使用select
select @@port; (这个@@好像只能用于variables里面的东西,请参考https://blog.csdn.net/qq_30450439/article/details/80089892)

show variables like 'innodb%'; 【模糊查询】
2,配合函数查询
select now(); 【查询当前时间】
select database(); 【查询当前使用的那个库】

select version(); 【查看当前的数据库版本】

----------------------------------------------------------------------------------------------------------------------------------------------------------
SQL92标准使用语法
select 语法执行顺序 (单表)
select开始------>
select****(字段,需要查什么字段就写什么字段,所有字段可以用*代表)
from子句-------->
from***(表或者库,相对路劲直接填写表名,绝对路径 库.表)
where子句----->
---where 配合 等值(=)
SELECT * FROM 表 WHERE 字段='xxx'
---where 配合 不等值(> < >= <= != <> )
SELECT * FROM 表 WHERE 字段<100
---where 配合 模糊【不要出现%在前面,效率会很低,不走索引】
SELECT * from city where CountryCode like 'C%'; (匹配以C开头)
SELECT * from city where CountryCode like '%C'; (匹配以C结尾)
SELECT * from city where CountryCode like '%C%'; (匹配字段中带有C的数据行)
---where 配合 逻辑连接符 AND ,OR ,in,union all
---and查询城市人口1000到2000之间
(1)SELECT *FROM city WHERE Population >1000 and Population >2000;
(2)SELECT* FROM city WHERE Population BETWEEN 1000 and 2000
---OR,IN查询中国或者美国的城市信息
SELECT * FROM 表名 WHERE 字段name='CHN' OR 字段name='USA'
SELECT * FROM city WHERE CountryCode in ('CHN','USA')(效率高一些)
----UNION 将两条语句结合一起执行,显示两条语句和的结果
UNION ALL (相同的字段,不去重,显示所有)
UNION (相同的字段,去重)
SELECT *FROM city WHERE CountryCode= 'CHN'
union all (求出的结果是相同的字段,可以使用union将多个表整合为一张表)
SELECT *FROM city WHERE CountryCode= 'USA';
---DISTINCT(比较去重,数据量如果大的话就会很慢,可以选择上面的方法去重)
列如:去重统计某个字段的行数:SELECT count(DISTINCT(District)) FROM city WHERE CountryCode='CHN'
---GROUP BY 配合聚合函数应用
常用的聚合函数:

城市 国家 省份 人口数量
AVG()----------- 平均数
列如:统计 中国的省平均人口数【SELECT District,AVG(Population) FROM city WHERE CountryCode='CHN' GROUP BY District】
COUNT() ---------- 统计人数,数数,也就是行数,统计的是行的个数
列如:统计每个国家的城市数量【SELECT CountryCode,count(District) FROM city GROUP BY CountryCode;】
SUM() ----------------工资总和,总的值,总和,行数据里面的数字进行相加
列如:统计每个国家的人口数量【SELECT CountryCode,sum(Population) FROM city GROUP BY CountryCode;】
MAX()--------------最大的值
列如:统计中国省的最大人口数【SELECT District,max(Population) FROM city WHERE CountryCode='CHN'
GROUP BY District】
MIN()---------------最小的值
列如:统计中国省的市最小人口数量【SELECT District,min(Population) FROM city WHERE CountryCode='CHN' GROUP BY District】
GROUP_CONCAT() -------统计名,列转行
比如:统计并显示每个国家的省名称【SELECT CountryCode,GROUP_CONCAT(District) FROM city GROUP BY CountryCode】
---HAVING 过滤条件(HAVING后的条件不走索引)
SELECT District, sum(Population)
FROM city
WHERE CountryCode='CHN'
GROUP BY District
HAVING sum(Population)>10000000 (统计的每个省的总人口数大于1000万)
----ORDER BY (从小到大排序,从大到小排序后面加上DESC)
SELECT District, sum(Population)
FROM city
WHERE CountryCode='CHN'
GROUP BY District
ORDER BY sum(Population) desc;
----limit 分页,(M,N)跳过M,行显示N行----直接limit跟数字就是显示几行
SELECT `Name`,Population
FROM city
WHERE CountryCode='CHN'
ORDER BY 'Population'
desc limit 5,10

浙公网安备 33010602011771号