SQL常用语句(陆续更新)


前言

这个一个平平无奇的sql笔记,持续更新,哪里不会查哪里!

一、目录

1、取出指定条数的sql语句——LIMIT

# 取出180条数据
# LIMIT 
SELECT * from res_comment_detail WHERE brand_name ~ '德克士' LIMIT 180

2、随机读取数据——random()

# ORDER BY random()
select * FROM res_comment_detail WHERE brand_name ~ '德克士' ORDER BY random() LIMIT 180

3、合并多个selecet语句的结果——union

# union操作符用于合并两个或者多个select语句的结果
# 需要注意的是,union内部的每个select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个select语句中的列的顺序必须相同。
SELECT * FROM table1
UNION
SELECT * FROM table2;

# 需要注意的是:如果还有许多限制条件,那么需要给table1整体加括号,并且必须记得要起一个别名,否则会报错。
select * FROM (select * FROM res_comment_detail WHERE brand_name ~ '康师傅' ORDER BY random() LIMIT 180) AS g
UNION
select * FROM (select * FROM res_comment_detail WHERE brand_name ~ '李先生' ORDER BY random() LIMIT 180) AS k

4、用于返回唯一不同的值——DISTINCT

# tips: 可以是 select DISTINCT brand_name......这种形式,也可以是下边这种形式。
select DISTINCT(brand_name) from public.res_comment_detail where general_label is null 

# notice:distinct关键字只能写在select子句的第一个字段前面,否则报错。

5、将查询结果插入到另一个表——INSERT

# 1、如果要插入的目标表不存在
# 
select * into 目标表 from 表 where ...
# 2、如果要插入的目标表已经存在
# 
insert into 目的表 select * from 表 where 条件
# 3、如果是跨数据库操作
#
select * into B.btable from A.atable where ...

6、分组查询——Group by

# 分组查询,通过一定的规则将一个数据集划分成若干个小的区域,然后针对每个小区域分别进行数据汇总处理,即根据某个字段进行分组。
SELECT brand_name, sum(word_counts)
from PUBLIC.res_words_day_sta_test_copy1 GROUP BY brand_name
# notice:如果查询语句中包含有Gruop bu子句,那么select子句中只可以包含 聚合函数和Group by子句的分组列,其余内容不可以出现。

7、聚合函数

Count(): 统计分组后的记录数: 每一组有多少记录
Max(): 统计每组中非空的最大值
Min(): 统计非空的最小值
Avg(): 统计平均值
Sum(): 统计和

# eg:
# 1、直接查询数量
select COUNT(name) FROM table WHERE batch_id ~ '2021-12'
# 2、与Group by组合使用(查询每个名字在表中出现多少次)
SELECT DISTINCT name,COUNT(name) FROM table  WHERE batch_id ~ '2021-12' GROUP BY name

8、条件语句——having

# 为什么有了where条件语句还要使用having?
# why?where关键字在使用集合函数时不能使用,而在having子句中可以使用聚合函数。一般与group by联合使用。
select name from table WHERE batch_id ~ '2021-12' group by name having count(name)>1 

9、在pycharm里怎么写sql语句

# 1、用字符串函数join()连接sql语句
# notic:因为变量target_job是字符串类型,所以需要加转义字符\'。
# a = ''
# sql = a.join(["select timeline from public.org_target_job_record where target_job = ", "\'", target_job, "\'",
#               " and target_type = ", "\'", target_type, "\'", " ORDER BY timeline DESC limit 1;"])
# 2、更简单的写法
# notic:在字符串前加f主要目的是使得格式化字符串的操作更加简便
# f-string:即被称之为格式化字符串常量,f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
# advantage: 这样写的好处是可以在字符串中以大括号{}标明被替换的字段
sql = f"select timeline from public.org_target_job_record where target_job = '{target_job}' and target_type = '{target_type}' ORDER BY timeline DESC limit 1 "

10、创建临时表——(create temporary table)

# why? 在临时表上操作速度飞快,适合创建包含大量数据的临时表并且进行多次查询的情况。
# method: create temp temp_table as (select语句)
create temp temp_table as select name, date from dish_table;
# notice: 创建临时表之后,临时表将在你连接MySQL期间存在,当你断开时,MySQL将会自动删除表并且释放所用的空间。
# 当然,为了防止创建了同名表,我们需要首先删除。
drop table if exists temp_table;

参考文章:
菜鸟编程——SQL教程.
数据库MySQL详解.


总结

平平无奇的一天,又是玩游戏玩到忘了午休的一天。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ㄣ知冷煖★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值