SQL
今天的砖很烫手
不断进步~总有一天回望过去!发现自己已经成长了很多...
展开
-
SQL -ORACLE分组后连接字符串
SQL -ORACLE分组后连接字符串方法一:wmsys.wm_concat(column)介绍:其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型。括号里面的参数是列,而且可以是多个列的集合,也就是说在括号里面可以自由地用‘||’合并字符串。如下面的例子:Select u_id, wmsys.wm_concat(goods || ‘(’ || ...原创 2020-01-17 18:09:22 · 2205 阅读 · 0 评论 -
SQL - ORACLE的正则匹配regexp_like
SQL - ORACLE的正则匹配select * from 表名 where regexp_like(匹配字段,'^+?[1-9][0-9]*$'); --匹配全为数字的数据select * from 表名 where not regexp_like(匹配字段,'^+?[1-9][0-9]*$'); --匹配非全为数字的数据参考 :...原创 2020-01-15 10:41:10 · 778 阅读 · 0 评论 -
SQL - 查看ORACLE正在执行的SQL
查看ORACLE正在执行的SQLSELECT b.sid oracleID, b.username , b.serial#, spid, paddr, sql_text FROM v$process a, v$session b, v$sqlarea c ...原创 2020-01-09 17:11:59 · 148 阅读 · 0 评论 -
SQL - 索引操作(增删查)
@[TOC] 索引操作ORACLE创建索引create index 索引名称 on 表名(列名); --单一索引create index 索引名称 on 表名(列名1,列名2); --复合索引ORACLE查看索引select * from all_indexes where table_name = '表名称'; --查看表的索引select* from all_ind_col...原创 2020-01-01 18:09:52 · 288 阅读 · 0 评论 -
SQL - ORACLE创建临时表
SQL - ORACLE创建临时表GLOBAL TEMPORARY 临时表ON COMMIT DELETE ROWS ; – 默认选项,在commit的时候将数据删除ON COMMIT PRESERVE ROWS ; – 在commit的时候将数据保留,会话结束后自动删除。创建临时表两种方式 :直接创建,手动指定表名列名Create Global Temporary Table...原创 2019-12-27 15:42:36 · 2323 阅读 · 1 评论 -
SQL -查看一个表占用的空间大小
SQL -查看一个表占用的空间大小select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('表名');原创 2019-12-09 15:32:24 · 2517 阅读 · 0 评论 -
SQL - 生成日期维度表,生成日期配置表
SQL - 生成日期维度表,生成日期配置表建表CREATE TABLE DIM_DATETIME( calendar_id number NOT NULL, date_name varchar2(200), date_name_cn varchar2(200), calendar_date date, current_day number(10,0), mo...原创 2019-12-05 15:57:05 · 1903 阅读 · 0 评论 -
SQL -日期操作
SQL -日期操作注:建议使用时间维度表实现对日期的操作本季度所有月份上季度所有月份未完待补充注:建议使用时间维度表实现对日期的操作本季度所有月份 SELECT TO_CHAR(ADD_MONTHS(ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'),A * 3),-ROWNUM),'YYYYMM') LAST_Q FROM (SELECT TO_CHAR(SYSD...原创 2019-12-05 15:19:58 · 195 阅读 · 0 评论 -
SQL-查看执行计划(PL/SQL)
SQL-查看执行计划(PL/SQL)https://jingyan.baidu.com/article/ed2a5d1f77138b09f7be1766.htmlSQL-查看执行计划(expain命令 )https://blog.csdn.net/weixin_43125677/article/details/103355341原创 2019-12-04 11:24:47 · 172 阅读 · 0 评论 -
SQL -行转列( PIVOT )
select cno, [09] AS 计划投料时间, [02] AS 开料时间, [81] AS 终检过数时间, [23] AS 包装过数时间, [24] AS 成品仓接数时间 from ( 需要操作的表, 查询写里面,写外面可能会报错 ) AS A PIVOT( MIN(时间) FOR [行转列字段] IN([对应的值,不用加''],[02],[81],...原创 2019-12-03 17:25:34 · 137 阅读 · 0 评论 -
SQL - REGEXP_SUBSTR函数(一行分多行)
SQL - REGEXP_SUBSTR函数(一行分多行)SELECT REGEXP_SUBSTR (表名.字段, '[^,]+', 1,rownum), A.*from 表名 connect by rownum<=LENGTH (表名.字段) - LENGTH (regexp_replace(表名.字段, ',', ''))+1按照正则匹配参照博客 : ...原创 2019-12-03 10:13:00 · 2066 阅读 · 0 评论 -
SQL -优化
SQL -优化1.尽量避免在where 子句使用 or 连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:2.in 和 not in 也要慎用,否则会导致全表扫描,如:3.应尽量避免在 where 子句中对字段进行表达式操作,这将导致全表扫描,如:4.很多时候用 exists 代替 in 是一个好的选择,如:5.模糊查询like6.能使用where就不要用having7.尽量用union a...原创 2019-12-02 19:28:04 · 145 阅读 · 0 评论 -
expain 查看SQL的执行计划
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句...转载 2019-12-02 19:26:35 · 199 阅读 · 0 评论 -
SQL - ORACLE MERGE INTO 对比两张表,A,B 表B数据表A有则更新表A 无则插入
SQL - ORACLE MERGE INTO 对比两张表,A,B 表B数据表A有则更新表A 无则插入表B数据 , 通过对比字段关联 , A表有就更新A表数据 , 没有就插入到A表–注 : ID在ORACLE是通过序列生成的MERGE INTO 要更新或者插入数据的表 A USING (SELECT * FROM 对比的表) B ON(B.对比字段 = A.对比字段)WH...原创 2019-11-19 09:46:39 · 665 阅读 · 0 评论 -
ORACLE - SQL 分组后取最新的数据
ORACLE - SQL 分组后取最新的数据select * from ( select tmp.*, row_number() over(PARTITION BY 分组字段 order by 排序字段 desc) as rn from 表名 tmp ) where rn = 1原创 2019-11-18 20:07:46 · 1683 阅读 · 0 评论 -
PDM -将comment值显示在name值上
PDM -将comment值显示在name值上https://www.cnblogs.com/fengyun1853/p/9298370.html原创 2019-11-14 09:35:33 · 492 阅读 · 0 评论 -
PLSQL从ORACLE中逆向将表转为PDM文件
PLSQL从ORACLE中逆向将表转为PDM文件https://blog.csdn.net/shehun11/article/details/45038501原创 2019-11-12 18:49:54 · 2781 阅读 · 0 评论 -
ORACLE解决除数为0
ORACLE解决除数为0decode(除数,0,显示0,不为零的正常表达式)decode(B,0,0,A/B)原创 2019-11-05 08:37:59 · 1269 阅读 · 0 评论 -
SQL实现找出重复的数据 GROUP BY+ HAVING
SQL实现找出重复的数据 GROUP BY+ HAVINGSELECT 字段 FROM 表 GROUP BY 需要的重复字段 HAVING COUNT(1)>1原创 2019-10-24 18:26:56 · 1032 阅读 · 0 评论 -
PowerDesigner中,修改column的name和Code同步问题
PowerDesigner中,修改column的name和Code同步问题PowerDesigner中,但修改了某个字段的name,其code也跟着修改,这个问题很讨厌,因为一般来说,name是中文的,code是字段名。解决方法如下:1、选择Tools->GeneralOptions…菜单,出现General Options对话框。2、从Category中选择Dialog项。3、取...原创 2019-10-24 17:57:45 · 390 阅读 · 0 评论 -
power designer 导出没sql注释
power designer 导出sql注释点击跳转原创 2019-10-24 17:54:38 · 191 阅读 · 0 评论 -
ORACLE实现逐步累计数据,实现柏拉图
ORACLE实现逐步累计数据,实现柏拉图selectCC.AREA,sum(CC.AREA) over(order by CC.AREA DESC ) --逐步累积from CC使用 SUM() OVER() 开窗函数实现 , SUM是累计的字段,OVER是排序的字段...原创 2019-10-24 14:39:58 · 560 阅读 · 0 评论 -
ORACLE 序列
ORACLE 序列create sequence 序列名increment by 1start with 1maxvalue 999999999;drop sequence 序列名select 序列名.nextval from dual注意 : 每查询一次,序列按自定义增长;alter sequence 序列名 increment by -2 修改,值减2 ...原创 2019-10-15 17:39:09 · 94 阅读 · 0 评论 -
PLSQL注释中文乱码
PLSQL注释中文乱码进入 我的电脑,属性,高级,环境变量,添加2项:LANG=zh_CN.GBK 和 NLS_LANG=“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”重启PLSQL生效即可 . . . .原创 2019-10-15 14:18:03 · 1565 阅读 · 1 评论 -
SQL查询出每门课程的成绩都大于80的学生姓名
SQL查询出每门课程的成绩都大于80的学生姓名SELECT S.name FROM Student S GROUP BY S.name Having MIN(S.score)>=80原创 2019-09-21 14:17:29 · 998 阅读 · 0 评论 -
当前行取上一行或者下一行数据作为独立列
当前行取上一行或者下一行数据作为独立列Lead over 函数可以获取当前行的后第N行作为独立列Lag over 函数可以获取当前行的前第N行作为独立列注 : orcle才有上两个函数 , mysql中没有 , 需要mysql实现要自己写存储过程例子 :lag(exp_str,offset,defval) over(partion by …order by …)lead(exp_str...原创 2019-09-21 11:14:53 · 1422 阅读 · 0 评论 -
ROW_NUMBER() OVER
ROW_NUMBER() OVER使用语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)作用: 从1开始,为按组排序的每条记录添加一个序列号 函数只能用于select和order by子句中 不能用在where子句验证测试 不分组排序建表create table test ( num int comment '字段...原创 2019-08-06 17:03:18 · 210 阅读 · 0 评论 -
COALESCE
COALESCE 表达式是 CASE 表达式的语法快捷方式。 即查询优化器将代码COALESCE(expression1,…n) 重写为以下 CASE 表达式:SQL:CASE WHEN (expression1 IS NOT NULL) THEN expression1 WHEN (expression2 IS NOT NULL) THEN expression2 ... E...原创 2019-08-06 14:41:55 · 412 阅读 · 0 评论