数据分析:极简SQL知识点
SQL中包含的知识点很多,不同职业可能使用的知识侧重点不同,比如数据挖掘,数据开发,ETL等因为需要构建和维护数据库,对于数据库的创建,插入和更新的操作比较多,但对于偏向于业务的数据分析师或者商业分析师来讲,查询是我们使用到SQL中最常用的操作。
SQL知识点有很多,但是二八法则告诉我们,你只用聚焦于那核心的20%的知识点就可以应对业务场景中80%的需求。本文重点归纳SQL操作中常用的20%知识点。
核心构成
对数据库和表进行操作
创建数据库
create database database_name
创建表
create table table_name (
column_name data_type [constrains],
)
删除表或者数据库
drop [table|datebase] name
添加,删除,更新表中的列或者index
alert table table_name
[add | drop | alert ] [column | index] column_name
对表中的记录进行操作
向表格中插入一条语句
insert into table_name values(x,x)
更新表中的记录
update table_name set column_name = x where condition
删除某一行记录
delete from table_name where condition
查询操作
select 子句:语法 select column 。选择用于输出的列。
from子句:语法 from table 。从指定的表中选择。
select * from table
where 子句:语法 where condition 。用于行级过滤。
select * from table where column>2ß
order by 子句:语法 order by [ASC|DESC] 。按照升序或者降序对查询结果集进行排序,默认升序。
select * from table order by desc
having 子句:语法having condition。对分组的数据进行筛选,往往配合着group by字句一起
select * from table order by desc
子句的一般顺序:select from where group by having limit ,这里除了select , from 是必须的,其他都是可选的,这要看实际的业务场景。
注意:SQL 不区分大小写
基础关键字
like: 用于where字句中的模糊匹配。
# 如查询姓名字段中以张开头的名字
where name like '张%'
As: 用于给字段,表等起一个别名,方便简化
NULL: 不包含值,多与is配合使用
Limit: 用于从结果集的基础上选择N条数据
基本用法:limit 2:选举两条记录输出
select * from table limit 2
高级用法 limit 2,1:从第2条数据之后,输出一条记录
select * from table limit 2,1
注:有些数据库支持Top关键字
Distinct : 去除重复数据
基本用法:
select distinct column from table
逻辑操作符
操作符 | and | or | in | not |
---|---|---|---|---|
例子 | A and B | A and B | A in (,) | A not in (,) |
说明 | 同时满足AB | AB有一个满足 | 判断A是在结果集中 | 判断A是不在结果集中 |
算术操作符
= 等于 | <> 不等于 | !=不等于 |
---|---|---|
<=小(等)于 | >=大(等)于 | between and 两者之间 |
单元格 | 单元格 | 表头 |
聚合函数
sum求和 | avg 求平均 | count 计算个数 |
---|---|---|
max求最大值 | min 求最小值 | 你想让这里放置哪个函数呢 |
事例:
select sum(column) from table
注:当聚合函数和普通列同时出现在select后面时,普通列必须在group by字句中指定。
extract 函数:主要用于提取时间戳中的单独部分如年,月等。如下orderData列对应的值是2020-12-12 16:25:46.635,则使用函数后的值为2020.
select extract(year from orderData) as order_year,
from table
where condition
高阶
case when
主要包括case函数和case搜索函数
# case函数
case gender
when 'm' THEN '男'
when 'f' THEN '女'
else '其他'
end
# case搜索函数
case
when gender = 'm' then '男'
when gender = 'f' then '女'
else '其他'
end
子查询
子查询返回的结果用于另一条 select 语句的 where 子句。
select customer_id
from table01
where order_num in (
select order_num
from table02
where prod_id = 'kk');
连接查询
连接类型 | 说明 | |
---|---|---|
内连接 join | A join B 返回AB的交集 | |
左连接 left join | A left join B 返回 A+AB的交集 | |
右连接 right join | A right join B 返回 B+AB的交集 | |
右连接 full join | A full join B 返回 AB的全集 |
注:并不是所有的数据库都支持四种连接,但大部分都会支持内连接和左连接。
SQL查询所涉及的知识点虽然简单,但是要完全掌握还需要大量的练习。以上就是主要内容了。关于本文如果有什么疑问,欢迎回复交流。
在线练习推荐
相关参考
知识点、SQL语句学习及详细总结
SQL教程