DQL 数据查询语言

Posted yangxiaoni

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DQL 数据查询语言相关的知识,希望对你有一定的参考价值。

1.select

1.select 单独使用
(1) 查询数据库的参数
查看端口:
select @@port;

查看数据路径
select @@datadir;

(2)调用内置函数
查看当前库
select database();

CONCAT 将内容拼接
select concat(user,host) from mysql.user;
select concat(user,'@',host) from mysql.user;

列转行
select group_concat(xid) from student;

求和
SELECT SUM(xid) FROM student;

(3) 简易计算器
select 4*5;


2.select 配合其他子句使用
select 查询表的内容
(1) 子句列表介绍
from    查询对象是谁(表,视图)
where    过滤字句
group by    分组子句(类似于数组,统计分析类)
having    后过滤子句
order by    排序子句
limit    限制子句(分页子句)

select 配合 from 使用
1.查询表中所有的数据(cat)
select * from city;

2.查询name和population列信息
select name,population from city;


select 配合 from where 使用

-- 1.查询中国所有的城市信息
SELECT * FROM city
WHERE CountryCode='CHN';

-- 2. 查询ID为100的城市信息
SELECT * FROM city
WHERE ID=100;

-- 3. 查询 中国河北省的城市信息
SELECT * FROM city
WHERE CountryCode='CHN' AND district='hebei';

-- 4. 查询 中国或美国的城市信息
SELECT * FROM city
WHERE CountryCode='CHN' OR CountryCode='USA';

或者
SELECT * FROM city
WHERE CountryCode IN ('CHN','USA');

或者
SELECT * FROM city
WHERE CountryCode='CHN'
UNION ALL
SELECT * FROM city
WHERE CountryCode='USA';
-- where 配合范围查询

-- 例子 :
-- 1. 查询人口数量小于100人的城市
SELECT * FROM city
WHERE Population<100;

-- 2. 查询人口数量在100w-200w之间的城市
SELECT * FROM city
WHERE Population>=1000000 AND Population<=2000000;

或者

SELECT * FROM city
WHERE Population BETWEEN 1000000 AND 2000000;

-- 3.查询国家代号是CH开头的城市
SELECT * FROM city
WHERE CountryCode LIKE 'CH%';

-- 注意 % 放在字符前,匹配时不走索引,比较慢,所以,我们通常都放在字符后面
-- where 配合范围查询

-- 例子 :
-- 1. 查询人口数量小于100人的城市
SELECT * FROM city
WHERE Population<100;

-- 2. 查询人口数量在100w-200w之间的城市
SELECT * FROM city
WHERE Population>=1000000 AND Population<=2000000;

或者

SELECT * FROM city
WHERE Population BETWEEN 1000000 AND 2000000;

-- 3.查询国家代号是CH开头的城市
SELECT * FROM city
WHERE CountryCode LIKE 'CH%';

-- 注意 % 放在字符前,匹配时不走索引,比较慢,所以,我们通常都放在字符后面
 


-- 1.2.4 group by 分组子句 配合  聚合函数应用
-- 什么是聚合函数?
COUNT() -- 计数
SUM()   -- 求和
AVG()   -- 平均值
MAX()   -- 最大值
MIN()   -- 最小值
GROUP_CONCAT  -- 聚合列值

-- MySQL结果集现实的特点:
在结果集显示时,必须是 一对一的方式,不能是一对多的形式。

-- 例子 :
-- 1. 统计一下每个国家的人口总数
SELECT CountryCode,SUM(Population)
FROM city
GROUP BY (CountryCode);

-- 2. 统计中国每个省的人口总数
SELECT District,SUM(Population) 
FROM city
WHERE CountryCode='CHN'
GROUP BY (District);

-- 3. 统计一下中国每个省的城市个数,及城市名
SELECT District,COUNT(NAME),GROUP_CONCAT(NAME) FROM city
WHERE CountryCode='CHN'
GROUP BY (District);

-- 4. 统计每个国家的城市个数

SELECT CountryCode,COUNT(District)
FROM city
GROUP BY (CountryCode);

-- 1.2.6 having 后判断 

-- 1. 统计中国每个省的人口总数,只显示总人口数大于500w的省信息.
SELECT  district,SUM(population)  FROM  city
WHERE countrycode='CHN'
GROUP BY district
HAVING SUM(population)  >=5000000;


-- 1.2.7  order by 排序子句

-- 例子:
-- 1. 查询中国所有城市信息,人口数从大到小排序输出.
SELECT * FROM city
WHERE countrycode='CHN'
ORDER BY population DESC ;

-- 2. 查询中国所有城市信息,按城市名排序.
SELECT * FROM city
WHERE countrycode='CHN'
ORDER BY NAME;

-- 3. 查询中国所有省的总人口,并按总人口数从大到小排序输出.

SELECT  district,SUM(population)  FROM  city
WHERE countrycode='CHN'
GROUP BY district
ORDER BY SUM(population) DESC;

2.show

查看数据库所有参数
show variables;

以上是关于DQL 数据查询语言的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的DQL语言(查)

第6讲:SQL语句之DQL类型的数据查询语言

SQL语言分类DQL,DML,DDL,DCL

MySQL2.DQL语言-查询

BI 前端实践 8:关联查询语言──DQL

DQL