SQL
Nicky_1218
一只总想着吃肉的死胖子。
安安静静的做着肥宅。
(保持一颗不断学习的心)
展开
-
utf8 与 utf8mb4
而在各类符号文字逐步发展的过程中,像是包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等都需要进行编码,所以utf8mb4应运而生,这也是两者最本质的区别。原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。,Unicode 和 部分超出Unicode的相关文字,并对他们进行最大三字节可变长度的二进制编码。转载 2022-11-15 14:04:12 · 987 阅读 · 0 评论 -
information_schema.tables说明
表类型[system view|base table]使用的数据库引擎[MyISAM|CSV|InnoDB]行格式[Compact|Dynamic|Fixed]做自增主键的自动增量当前值。数据表所属的数据库名。原创 2022-11-15 13:55:52 · 684 阅读 · 0 评论 -
REPLACE(MYSQL)
语法REPLACEINTOT1SELECT***FROMT2;类似于ORACLE的merge。原创 2022-07-21 16:50:00 · 344 阅读 · 0 评论 -
instr函数(MYSQL)
MARK一下,内置函数。直接看例子。原创 2022-02-18 09:57:31 · 382 阅读 · 0 评论 -
关于 APPEND ON的mark(GP)
实际发生的问题。这边再记录一下 备忘。参考书里的内容吧。原创 2022-01-05 09:32:19 · 196 阅读 · 0 评论 -
拉链,切片加载
mark一下,GCK。# 拉链select *from table_namewhere start_date <= $date and end_date > $date# 切片select pa.*from ( select *,row_number() over(partition by col_name order by data_date desc) rn from table_name where data_date <= $date.原创 2022-01-04 16:42:35 · 183 阅读 · 0 评论 -
GP文本处理(GP)
拼接eg: select trm_date||' + ' as new_date from <table_name>截取固定长度eg: select dtbs::char(8)原创 2022-01-04 16:09:38 · 359 阅读 · 0 评论 -
GP日期(GP)
时间计算方式:interval'10 min/ year/ month/ day/ hour/ sec部分参考吧。 Select date_trunc('quarter',now() ) 本季度第一天 date_trunc('quarter',now() + interval'3 month' ) 下季度第一天 date_trunc('quarter',now() - interval'3 month原创 2022-01-04 16:07:04 · 1486 阅读 · 0 评论 -
Merge(ORACLE)
很实用的一个了。离职前mark一下,做一些备忘吧。建表插值t1. alias t1.valaa 10bb 20t2. alias t2.valaa 40cc 30# 常规理解很简单,满足条件做update ,新的那么做insert。merge into t2using t1on (t1.alias = t2.alias)when matched then update set t2.val = t2.val + t1.valwhen not ma原创 2022-01-04 16:01:04 · 775 阅读 · 0 评论 -
CUBE分组(ORACLE)
CUBE可以实现各个层级的分组统计。建测试表 t1:SELECT alias ,department ,sum(val) as valFROM t1GROUP BY CUBE(alias,department);结果如下:原创 2022-01-04 15:14:56 · 448 阅读 · 0 评论 -
intersect函数(ORACLE)
作用类似于inner join。# 作用等价# 1.inner joinSELECT a , b FROM test1innner join SELECT a , b FROM test2# 2.intersectSELECT a , b FROM test1intersectSELECT a , b FROM test2原创 2022-01-04 15:06:44 · 2733 阅读 · 0 评论 -
GROUPING SETS分组(ORACLE)
关于Grouping Sets 这种分组小计的用法,用于直白的读取一些统计信息。建一个test用表 ,字段值如上所示。代码所示如下:SELECT alais ,department ,SUM(val) as valFROM T1GROUP BY GROUPING SET(alias,department);结果如下:...原创 2022-01-04 15:00:44 · 384 阅读 · 0 评论 -
一个odbc + oledb驱动的问题
实际工作中遇到的,mark一下。以整数形式返回实际值时,ODBC 会截断,而 OLE DB 会舍入。原创 2022-01-04 11:08:41 · 166 阅读 · 0 评论 -
SQLPLUS导出表结构(Oracle)
select dbms_metadata.get_ddl('table','table_name') from dual原创 2021-12-29 15:45:40 · 1684 阅读 · 0 评论 -
GP——行列拼接
基本用法 : string_agg(columnname , ' ')第一列为a ,第二列为b写法:select a ,string_agg(b, ' ') as cfrom table结果:原创 2021-12-29 15:40:10 · 447 阅读 · 0 评论 -
GP——切片表的退链
Delete from schema.table_name where data_date = date'20211102';原创 2021-12-29 15:34:40 · 144 阅读 · 0 评论 -
GP——拉链表的退链
Delete from schema.table_nameWhere start_date >= date'20211102' ;Update schema.table_nameSet end_date = date'2999-12-31'Where end_date >= date'20211102' ;原创 2021-12-29 15:33:26 · 599 阅读 · 0 评论 -
GP——数据库常用命令
整理资料,备用。常用工具服务器交换密钥 : gpssh-exkey 批量登录服务器 : gpssh 批量复制 : gpscp基本命令启动数据库 : gpstart gpstart 正常起数据库 gpstart -R 维护模式,普通用户无法登陆,只有超级用户能登陆 gpstart -m 只起master,起了后,只能用utility模式去登录master。utility模式登录,只连某个实例。 停止数据库 : gpstop gpstop 正常停止数据,如果数据库还有连接原创 2021-12-29 15:30:32 · 4304 阅读 · 0 评论 -
count(*) 跟count(1)的笔记
笔记:有主键的话,count(主键)是最快的。 没有主键的话,count(1)比count(*)快。 表中只有一个字段,count(*)是最快的。 count(*)执行器会优化,自动指定到字段,所以没必要count(column)。 count(1)和count(*)都包含对于NULL的统计,但是count(column)是不包含NULL的统计。...原创 2021-10-19 20:19:51 · 91 阅读 · 0 评论 -
Oracle 实例(ORACLE)
接触Orcale了,概念性笔记。------------------------------------------------------------------------------------------------------------------------------------------------Oracle 实例由内存和一系列后台进程组成。实例是存储和控制数据库的软件机制。Oracle实例组成:内存结构,后台进程。 内存结构:SGA,UGA,PGA。 S...原创 2021-01-29 14:31:32 · 1090 阅读 · 0 评论 -
索引(GP)
知识点整理总结:在分布式数据库GP中,应尽量避免使用索引。于传统的不同,gp中的数据表是分布在多个节点上的,这意味着每个节点都扫描全部数据的一小部分来查找结果。如果使用了表分区,扫描的数据可能更少,通常这种情况下使用索引未必能提升性能。GP支持b-tree和位图索引(bitmap)。位图索引适用于很少进行数据更新,但是有大量的分析查询的应用场景,通常应用在数据仓库的高维度的数据分析场景中。索引特点:每个BTREE每个键值都对应一组数据表中的相同值行的ID记录。在位图索引中..原创 2020-11-07 16:14:03 · 1104 阅读 · 0 评论 -
表压缩(GP)
知识点总结:gp数据表分为 堆表 和 apend only表。堆表较常见。Apend only表可以进行表压缩。 压缩可以减少磁盘空间,但是数据压缩,解压过程会消耗cpu。压缩表会增加数据库对象数。数据表压缩的设计规范:频繁更新的表不可以使用。表的记录数/(集群节点数* 4)大于10万条,或者重要的表,必须建成压缩表。压缩表建议使用zlib压缩算法,压缩级别5。所有的不再更新的历史表,备份表,归档表 统一使用压缩存储。...原创 2020-11-07 16:08:03 · 709 阅读 · 0 评论 -
表分区 (GP)
知识点的总结:如何判断是否进行分区表是否足够大:例如表中有数亿条数据,才适合。 只有几万的数据表,进行分区,管理的成本,性能开销会损耗更大。对性能要求:作为一种调优方式,只有在查询性能低于预期时才考虑分区。查询条件是否能匹配分区条件:检查查询条件的where条件是否与考虑分区的字段一致。例如大部分where条件跟的是日期,那么采用日期作为分区条件会很有效。又例如大部分where跟的是地区,那么采用地区分区会更有效。数据仓库是否需要回滚历史数据:历史数据回...原创 2020-11-07 16:07:06 · 1327 阅读 · 0 评论 -
关于gp数据库的DK(GP)
对于gp数据库,DK(Distributed key)遵循以下原则:数据均匀分布原则:为达到最好性能,实例应当尽量存储等量的数据。如数据的分布不均匀,不平衡,倾斜,那些储存了较多数据的实例在处理自己的那部分数据时,会耗费更多的工作量。对于此,可以考虑选择具备唯一性的DK, 如主键。本地操作原则:在处理查询时,例如 关联,排序,聚合,可以先做的先做。 跨越系统级别的操作效率低。当不同的TABLE 的 DK相同时,在DK上的关联会 最高效的方式把大部分工作在本地完成。同时,总分父子表的DK.原创 2020-11-07 16:04:24 · 1152 阅读 · 0 评论 -
日期部分(Orcale)
用于Mark: 日期说明 语法 当月第一天 Select trunc(sysdate,'mm') from dual 当年第一天 Select trunc(sysdate,'yy') from dual 当前年月日 Select trunc(sysdate,'dd') from dual 当年第一天 Sele原创 2020-11-07 16:00:59 · 116 阅读 · 0 评论 -
rank function ( ms sql )
整理以自用对比 dense_rank , rank , row_number 三个排名函数先看一下样表score代码如下:select score,-- dense_rank 函数同分值按照一个排名,后面的排名也是连续的DENSE_RANK() over(order by score desc) as 'dense_rank', -- rank 函数同分值按照同一排名,后面的排名会空出前面同一排名的数量RANK() over(order by score desc) as '原创 2020-07-08 21:19:01 · 205 阅读 · 0 评论 -
Extract (MDX) 函数 MSSQL
官方参考链接:https://docs.microsoft.com/zh-cn/sql/mdx/extract-mdx?view=sql-server-ver15语法表达式Extract(Set_Expression, Hierarchy_Expression1 [,Hierarchy_Expression2, ...n] )参数Set_Expression返回集的有效多...原创 2019-10-23 14:42:38 · 299 阅读 · 0 评论 -
pivot(SQL)
MAIN:主要用于类似于数据透视。举例说明比较清晰:-- 创建表drop table seordercreate table seorder(orderYear datetime,category varchar(10),salesAmount money)-- 传值insert into seorder values('2004-01-01','ball'...原创 2019-06-04 16:42:02 · 816 阅读 · 0 评论 -
WITH TIES语句(SQL)
功能挺实在的。假设情景: 有个sales表,包含2个col:productId,Price。假设要返回前十个价格的产品,那么存在某些情况,第十名的价格可能会有多个productId的东西,这时候就需要把所有的productId 都输出出来。代码示例:select top 10 with ties productId,Pricefrom salesorder by Pr...原创 2019-04-24 10:03:38 · 562 阅读 · 0 评论 -
CAST(SQL)
CAST()函数是一个转换函数。CAST()函数的第一个参数是一个表达式,包括了AS关键字分隔的源值和目标数据的类型。举例说明就可以简单的了解一下:select cast('123' as int)result = 123select cast('1.23' as decimal) result = 1...原创 2019-04-26 15:01:38 · 310 阅读 · 0 评论 -
配置变量(SQL)
MAIN:配置变量配置变量不是函数,用法类似于系统函数。@@ERROR变量这个变量包含了当前连接发生的最后一次错误的代码。若是没有错误,@@ERROR变量返回0 。当出现标准错误时,错误由数据库引擎引发,并且错误代码和信息会保存再系统视图中,可以用如下脚本查询查看: SELECT * FROM sys.messages@@SERVICENAME变量这个变量...原创 2019-04-26 14:37:49 · 333 阅读 · 0 评论 -
sp_executesql介绍和使用(转)
学习了。原文:https://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.html正文:execute相信大家都用的用熟了,简写为exec,除了用来执行存储过程,一般都用来执行动态Sqlsp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的, 如:exec sp_exe...转载 2019-04-10 14:20:05 · 151 阅读 · 0 评论 -
sql server getdate函数(SQL)
直接上结果把,比较容易看,以方便以后工作中会遇到时选取所需。第一行为sql文,第二段为结果Select CONVERT(varchar(100), GETDATE(), 23)2019-03-19Select CONVERT(varchar(100), GETDATE(), 0)Mar 19 2019 5:32AMSelect CONVERT(varchar(100), G...原创 2019-03-19 13:42:25 · 1154 阅读 · 0 评论 -
部门工资最高的员工(SQL)
挺无聊的。基于 MS SQL题目是这样的:Employee表包含所有员工信息,每个员工有其对应的Id, salary 和 department Id。+----+-------+--------+--------------+| Id | Name | Salary | DepartmentId |+----+-------+--------+----------...原创 2019-03-05 16:11:53 · 782 阅读 · 0 评论 -
在SQL Server中实现 取前m到前n的问题。(SQL)
最近在刷力扣的题,碰到了这个问题,然后推荐答案是MYSQL写的,用到了LIMIT,但是MSSQL 并没有。MSSQL不支持,取个巧,这里我们可以间接使用TOP 函数。举例取第m条到第n条记录:select top (n - m + 1) id from tablewhere id not in (select top m - 1 id from table)...原创 2019-03-01 16:42:44 · 125 阅读 · 0 评论 -
变量的一些概念总结(SQL)
可分为 局部变量 ,全局变量 局部变量1.局部变量必须要以 @ 为前缀,例如: @name2.在使用局部变量的时候需要先声明,再赋值。3.声明局部变量DECLARE @变量名 数据类型4.赋值SET @变量名 = 值SELECT @变量名 = 值 全局变量1.全局变量是以 @@ 为前缀,例如:@@ERROR2.全局变量是...原创 2019-01-08 11:06:39 · 230 阅读 · 0 评论 -
控制流(SQL)
总结吧。题外:还是第一次用这个代码插入框,EMMA,确实比起直接输入看起来顺眼多了。 1.IF 条件语句IF(条件) BEGIN 语句 ENDELSE ... ... 2.WHILE 循环语句WHILE (条件) BEGIN 语句 ... ... (BR...原创 2019-01-08 10:52:23 · 347 阅读 · 0 评论 -
SQL中的全局变量和局部变量(转)
原文:https://www.cnblogs.com/accumulater/p/7233626.html >>>>局部变量 声明:DECLARE @local_variable data_type @local_variable 是变量的名称。变量名必须以 at 符 (@) 开头。data_type 是任何由系统提供的或用户定义的数据类型。变量不能是 text...转载 2019-01-07 14:23:54 · 957 阅读 · 0 评论 -
sql中update,alter,modify,delete,drop的区别和使用(转)
原文:http://www.cnblogs.com/lamian/p/3972562.html 关于update和alter:百度知道上关于update和alter有一个很形象的总结:一个表有很多字段,一个字段里有很多数据。一个家有很多房间,一个房间里有很多家具。update是用来将衣柜改成书架的。alter是用来将厨房改成厕所的。 把卧室改成厕所:alt...转载 2019-01-02 10:41:06 · 360 阅读 · 0 评论 -
PERCENT(SQL)
返回的是百分比的总体量结果。很简单,举个例子就知道了。例如,有1000行数据,那么我们需要前百分之10。表:sales ,列名:name , price那么就可以写如下:select top 10 percent name, pricefrom salesorder by price desc如果是非整数百分比的返回行数,会返回行数圆整到最近的整数。...原创 2019-04-24 10:30:55 · 2697 阅读 · 0 评论