sql

sql

SQL(Structured Query Language,结构化查询语言)是一种专门用来与数据库沟通的编程语言。它的核心作用是存取、查询和管理关系型数据库中的数据。通过简单的命令,比如 SELECT(查)、INSERT(增)、UPDATE(改)、DELETE(删),用户可以高效地获取或修改大量数据,是数据分析、后端开发和数据库管理中最基础也是最重要的工具之一。

前置

sql的语法顺序:

1
2
3
4
5
6
select 最后要展示的字段 from 源数据表名
[where 满足的条件 ]
[group by 要聚合的依据字段]
[having 筛选条件]
[order by 排序依据字段 asc|desc]
[limit [位置偏移量,]行数]

sql的运行数据:from–where–group by–having–order by–limit–select

基础语句

select&from

1
select 最后要展示的字段 from 要查询的表

别名语法

1
select 最后要展示的字段 as 别名 from 要查询的表  #as可以省略用空格代替

数据去重

1
select distinct 最后要展示的字段  from 要查询的表  #as可以省略用空格代替

where

1
2
select 最后要展示的字段 from 源数据表名
[where 满足的条件 ]

模糊查询语法

1
select 最后要展示的字段 from 要查询的表 where like"通配符+字符"  #(%任意字符任意出现次数,_单个任意字符)

多条件查询

1
select 最后要展示的字段 from 要查询的表where 条件代码1 and|or 条件代码2

运算符

运算符 描述
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
<>或!= 不等于
between…and… 在指定的两个值之间(包含这两个值)
in 条件范围筛选
not in 不在该条件范围
is null 为空值
is not null 不为空值
and 逻辑运算符:与
or 逻辑运算符:或
not 逻辑运算符:非(一般与其他连用)

order by

1
2
3
select 最后要展示的字段 from 源数据表名
[where 满足的条件 ]
[order by 排序依据字段 asc|desc]

limit

1
2
3
4
select 最后要展示的字段 from 源数据表名
[where 满足的条件 ]
[order by 排序依据字段 asc|desc]
[limit [位置偏移量,]行数]

聚合函数&group by

聚合函数

函数 说明
AVG() 返回某列的均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列的和
1
2
3
4
5
select 最后要展示的字段 from 源数据表名
[where 满足的条件 ]
[group by 要聚合的依据字段]
[order by 排序依据字段 asc|desc]
[limit [位置偏移量,]行数]
  • group by字段名规定依据哪个字段分组聚合
  • group by核心子句是可选项,使用该子句是为了依据相同字段值分组后进行聚合运算,常和聚合函数联用

having

1
2
3
4
5
6
select 最后要展示的字段 from 源数据表名
[where 满足的条件 ]
[group by 要聚合的依据字段]
[having 筛选条件]
[order by 排序依据字段 asc|desc]
[limit [位置偏移量,]行数]

例题:查询总人口数至少为3亿的大洲和其平均gdp,其中只有gdp高于200亿且人口数大于6000万或者gdp低于80亿且首都中含有三个a的国家的计入计算,最后按国家数从大到小排序,只显示第一行

数据world:

name continent area population gdp capital
Afghanistan Asia 652230 25500100 20364000000 Kabul
Albania Europe 28748 2821977 12044000000 Tirana
Algeria Africa 2381741 38700000 207021000000 Algiers
Andorra Europe 468 76098 3222000000 Andorra la Vella
Angola Africa 1246700 19183590 116308000000 Luanda
。。。。。

答案:

1
2
3
4
5
6
7
select continent,avg(gdp) from world #展示聚合后筛选条件后 排序后 显示的表格
where (gdp>=20000000000 and population >60000000) #聚合前筛选条件
or (gdp<=8000000000 and capital like "%a%a%a%")
group by continent #聚合
having sum(population)>=300000000 #聚合后筛选条件
order by count(name) desc
limit 1

答案