Sql总结

工作中总会遇到需要查询数据的情况,虽说咱不会写那么复杂漂亮的sql代码,但是基本的一些sql查询语句总该是需要会的吧。
这里总结一些经常用到的sql语句,希望将来自己也能写出一手好看的sql代码。
再推荐一个好用的数据库查询软件:DBeaver

Dbeaver

DBeaver是一个集成的数据库客户端工具,需要java语言支持,所以安装之前需要配置JDK环境。
DBeaver支持hive、mysql等多种数据库的sql操作。
支持多种数据库连接的DBeaver

Sql常用语句

1.建表&删表语句

create table xx(
'id' bigint comment ''
'name' string comment '')
partitioned by ('p_day' date)  ##按照p_day字段分区

drop table xx   ## 删除表格
truncate table xx ##只删除表格中的数据,不删除表格本身
alter table xx drop index index_name ##删除表格中的索引

2.选择语句

select * from table
where 条件 and 条件
group by a    ##按照a分组
order by b desc ##按照b排序 降序
limit 100 ## 选择前100条记录

3.拼接语句

横向拼接

left join ## 依据左边的表格拼接,右表不匹配时返回null
right join ## 依据右边的表格拼接,左表不匹配时返回null
inner join/join ## 取两表共同的部分
full outer join/full join  ## 返回两表所有内容

纵向拼接

union all ## 合并两表的数据(两表的列需要相等)
union  ## 合并两表不重复的数据

4.匹配语句

select * from table where a like 'N%'   ##选择table中a字段以N开头的数据
select * from table where a like '%N'  ##选择table中a字段以N结尾的数据
select * from table where a like '%N%'  ##选择table中a字段包含N的数据
select * from table where a like '[ABC]%' ## 以A或B或C开头的数据
select * from table where a like '[!ABC]%' ##不以A或B或C开头的数据
in ('A', 'B')  ## 为A或B的数据
between 'A' and 'B'  ##在A和B之间的数据

select * from table where a like '_N'  ##第一个字符之后是N的数据

5.SQL函数

标记行号

## 同一个name下的数据按照时间排序 并标记行号
select * from
(select row_number() over(partitioned by name order by created_at) as number) t1
where number = 1

count 统计个数

count(1)  / count(*)  ## 全部行数
count(distinct(xx))  ## 某列不同值的个数

case条件语句

case when 条件 then a else b end

拼接语句

## 连接一个或者多个字符串
concat('11', '22', '33')
Output: 112233

## 有分隔符的连接
concat_ws(',', collect_set(name))

暂时总结到这里,如果后续有更多内容将会进行更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值