【单表查询语句】---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

posted @ 2020-08-26 00:05  鄧萌  阅读(74)  评论(0)    收藏  举报