SQL笔记

记录下最近用到的几个SQL函数。

使用环境:达梦数据库

达梦数据库有个特点,他有一个叫模式的说法,在图形化工具里直接点击创建查询窗口,不用像sqlserver一样,需要选择所属表的库,但是执行查询的时候,要在查询表的前面加上模式名,模式名.table ,在使用的时候倒是没啥影响,就是需要多打几个字。可以理解成Oracle中的实例。

  1. concat(' ',' ',' ')------拼接文字和数据字段用,放在select后。

select concat(' 测试',id,'z3') from table

id=1的情况,输出数据为

测试1z3

  1. limit 10 取表里的前10条数据,放在sql语句最后使用。
  2. datepart(mm, 字段)------ 提取日期中的年、月、日、小时、分钟等,yy/mm/dd代表提取年/月/日,可用在select后生成新的一列,或者在where后面当做查询条件。

select datepart(mm,date) from table

查询此表中date字段的月份数据。

  1. round(字段名,2) ------保留字段值指定小数位数,四舍五入。示例为保留两位。

select round(shuzi,2) from table

设定shuzi列为2.145674,查询结果为 2.14

  1. trunc('要截断的值',截断的位数),截断函数,截断非四舍五入,可截取数字和日期。

SQL中TRUNC函数的用法

https://blog.csdn.net/Schaffer_W/article/details/109046478

  1. convert(nvarchar,convert(decimal,字段)) ------转换字符串类型,基础命令为convent(数值类型,字段名),示例为将字段转换成decimal(精度更高的数值类型创建时需定义总数),然后再转换成varchar,这么写的原因是,如果直接转换成varchar类型,在concat()拼接函数里显示的科学计数法,而非准确的数值。
  2. +,-,*,/ 四则运算,直接在两个字段间用就可以。
  3. DateAdd(year,-1,date)------将日期字段减去一年显示。目前是在where后使用。

select * from a left join b on a.id=b.id where a. DateAdd(year,-1,a.date)=b.date

a和b是同一个表。这么写的目的是对比今年和去年在同一时期的数据。

  1. add_months('日期字段',要加的月份,可负数) 日期月增加函数。

add_months函数

https://blog.csdn.net/HANHUABAO1122/article/details/99974823

  1. 这个函数分为两部分。
    month()、year()、day() 返回指定日期字段的月,日,年。
    getdate(),获取当前系统日期。
    month(date)=month(getdate()) ------当月数据
    year(date)=year(getdate()) ------当年数据
    day(date)=day(getdate()) ------当天数据

select * from table where year(date)=year(getdate())-1 and month(date)=month(getdate())

此条sql为查询本月去年的数据。


SQL Server 数据库之日期和时间函数

https://blog.csdn.net/weixin_43960383/article/details/124596591

  1. left join 1=1 将要查询的两个表结果拼接。

这个地方理解的不是很透彻,但是拼接效果是达到我的预期了,后面理解下cross join

https://qa.1r1g.com/sf/ask/2476240231/

  1. having 用在group by 后面,对group by 分组后数据进行筛选。

力扣做题参考别人的答案看到的,实际应用较少,仍需进一步理解

having对组,where对行。

https://blog.csdn.net/qq_37634156/article/details/120055284

  1. pivot 行转列函数。

PLSQL - 经典行列转换 4种方法全教程

https://zhuanlan.zhihu.com/p/144259810

  1. sum( l_value ) over ( PARTITION BY l_year, l_month, c_zbdm ORDER BY l_day)
    通过PARTITION BY把数据根据l_year,l_month,zbdm进行分组,再计算这个月截至day天的value累计值。------分组累计值

https://blog.csdn.net/bingbangx/article/details/107776474

相关推荐
坤坤子吖11 分钟前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
星恒随风2 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
无奈笑天下3 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
YLCHUP4 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
xiaoye-duck4 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
AllData公司负责人5 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
2601_967987376 小时前
Sqlite参考手册
数据库·python·sqlite·api·教程
隔窗听雨眠6 小时前
Oracle日志体系分层结构与故障定位路径
数据库·oracle·故障排查
为思念酝酿的痛6 小时前
C语言操作MySQL
数据库·mysql
旖旎夜光6 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习