
SQL
文章平均质量分 56
SQL
EstherLty
这个作者很懒,什么都没留下…
展开
-
MySQL CAST()函数用法
当根据id排序,id为varchar类型时,可以cast()函数。原创 2023-02-15 15:22:44 · 2793 阅读 · 0 评论 -
PLSQL导入导出表数据、表结构
PLSQL导入导出表数据、表结构原创 2022-09-19 10:42:37 · 11045 阅读 · 2 评论 -
Oracle根据逗号拆分字段内容转成多行
connect by [prior] id=parentid :这部分是用来指明oracle在查找数据时以怎样的一种关系去查找,比如说查找第二层的数据时用第一层数据的id去跟表里面记录的parentid字段进行匹配,如果这个条件成立那么查找出来的数据就是第二层数据,同理查找第三层第四层…,这种用法就表示从下往上查找数据,可以理解为从叶子节点往上查找父级几点,用第一层数据的parentid去跟表记录里面的id进行匹配,匹配成功那么查找出来的就是第二层数据;:针对的是正则表达式里字符大小写的匹配。.......原创 2022-08-10 12:56:44 · 16948 阅读 · 4 评论 -
Oracle相同ID有多条记录取时间最近的一条
--其中policyno为可能有多条重复的id字段,date是时间字段 select * from (select t.*, row_number() over(partition by t.policyno order by t.date desc) rn from tmp_lst_fcbf t) c where rn = 1;原创 2022-05-09 11:16:15 · 5312 阅读 · 0 评论 -
oracle中xmlagg、listagg、wm_concat用法
xmlagg、listagg、wm_concat三个函数在oracle中都可以用于列转换行。查询例子:将fileorgname字段用,分隔的数据,实现列转行sql select t.fileorgname, t.typepath3 from t_imgfileindex t一、xmlagg效果和wm_concat一样,但是性能不一样,xmlagg排序一下,性能会快一些。--语法:1. xmlagg(xmlparse(content 合并字段 ||’,’ wellformed) order原创 2022-03-23 17:10:32 · 8190 阅读 · 0 评论 -
SQL查询两个表不同的数据
select * from B where (select count(1) from A where A.ID = B.ID) = 0如果是查询相同的数据可以用union allselect * from a union all select * from b原创 2022-01-21 10:29:10 · 16631 阅读 · 0 评论 -
ORA-06502: PL/SQL: 数字或值错误:character string buffer too small(DBMS_LOB.SUBSTR(CLOB) 报错:超过缓存区长度)
DBMS_LOB.SUBSTR() 会将clob转为 varchar2,而varchar2是有长度限制的 为4000(存储过程里Oracle 10g最大为4000, Oracle 12 可达32767)。当大字段超过4000时就会报错。解决方法:对CLOB字段进行截取然后在进行拼接,截取的长度根据存储的是汉字和数据决定长度。--第二位表示要截取的字符串的长度--第三位表示截取字符串的开始位置(注:等于0或1时,都是从第一位开始截取)SELECT dbms_lob.substr('xxxxx',原创 2022-01-05 17:34:08 · 13002 阅读 · 0 评论 -
Oracle中EXECUTE IMMEDIATE用法
一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DDL语句及系统控制语句,可以通过使用动态SQL来实现。 在Oracle数据库开发PL/SQL块中我们使用的SQL分为:静态SQL语句和动态SQL语句。所谓静态SQL 指在PL/SQL块中使用的SQL语句在编译时是明确的,执行的是确定对象。而动态SQL是指在PL/SQL块编译时SQL语句是不确定的,如根据用户输入的参数的不同而执行不同的操作。原创 2022-01-05 16:26:51 · 9608 阅读 · 0 评论 -
Oracle时间与时间戳相互转换
时间转换为时间戳2021-12-28 15:43:57 格式的转换为时间戳select (to_date('2021-12-28 15:43:57', 'yyyy-mm-dd hh24:mi:ss') - to_date('1970-01-01 08:00:00', 'yyyy-mm-dd hh24:mi:ss')) * 86400000 from dual; --16406774370002021年12月28日 格式的转换为时间戳select (to_date('20原创 2021-12-28 15:47:47 · 18997 阅读 · 1 评论 -
SQL中的in与not in、exists与not exists的区别以及性能分析
in和existsin是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in。例如:表A(小表),表B(大表)select * from A where cc in(select cc from B) --效率低,用到了A表上cc列的索引。select *原创 2021-07-22 17:26:00 · 177 阅读 · 0 评论 -
SQL语句中 left join 后用 on 还是 where
SQL语句中 left join 后用 on 还是 whereA left B join on and 不会过滤结果记录条数,只会根据and后的条件是否显示 B表的记录,A表的记录一定会显示。不管and 后面的是A.id=1还是B.id=1,都显示出A表中所有的记录,并关联显示B中对应A表中id为1的记录或者B表中id为1的记录。运行sql :select * from student s left join class c on s.classId=c.id order by s.id;运行原创 2021-06-24 16:59:15 · 377 阅读 · 0 评论 -
Sql语句分类
Sql语句分类数据查询语言DQL(data query language)负责进行数据查询而不会对数据本身进行修改的语句,最基本的SQL语句。数据操作语言DML(data manage language)负责对数据库对象运行数据访问工作的指令集。需要提交(conn.commit())在其他客户端才会生效,由INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。数据定义语言DDL(data definition language)负责数据结构定义与数据库对象定义的语言原创 2020-10-10 11:47:24 · 181 阅读 · 0 评论 -
oracle中的INTERVAL函数用法
oracle中的INTERVAL函数用法一、interval year to month 类型格式:该数据类型常用来表示一段时间差, 注意时间差只精确到年和月, precision为年或月的精确域, 有效范围是0到9, 默认值为2INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]案例1:表示123年2个月。“YEAR(3)” 表示年的精度为3, 如果YEAR(n), n<3就会报错原创 2021-03-09 15:04:20 · 13281 阅读 · 1 评论 -
MySQL进阶
MySQL进阶一、多表查询为了减少数据的冗余度1.迪卡尔积SELECT 要查询的列名 FROM 表名1,表名2,…;会返回表之间数据组合的结果,比如集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}2.内连接查询1)隐式内连接SELECT 要查询的列名 FROM 表名1,表名2,…...原创 2019-12-11 22:57:08 · 198 阅读 · 0 评论 -
MySQL基础
MySQL基础一、数据库(一)数据库概念1.数据库(Database,简称DB):存数据的仓库2.数据库管理系统(Database Management System,简称DBMS):MySQL3.数据库应用系统(Database Application System,简称DAS):类似网站,不限制于网站(二)数据库的由来和发展人工管理阶段文件系统阶段关系数据库技术阶...原创 2019-12-11 22:56:34 · 601 阅读 · 0 评论 -
关系型数据库优化(单机)
关系型数据库优化一、关系型数据库瓶颈1.高并发读写需求 网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。例如:双十一购物 双十一购物节,号称优惠比较多。所以很多人都在那天购物,特别是11.11凌晨的时候,成千上万或上亿,一起查询、浏览商品,下单购物。实质上,商品订单等信息是保存到数据库中的,那是不是很多人同时获取数据库连接,同时操作数据(读写),操作完成后关闭连接。要同时支持很多连接并且读写。但是现状我们一台数据库最大连接数是有限的。原创 2021-05-10 14:46:46 · 893 阅读 · 0 评论 -
Oracle - 备份数据库表
Oracle - 备份数据库表1.备份employees表到employees_bckcreate table employees_bckas --必须写select * from employees;2.创建employees_bck2表,复制employees表结构(不要数据)create table employees_bck2asselect * from employees where 1=2;3.使用employees表中的某几列创建employees_test表cre原创 2020-10-16 16:14:22 · 1525 阅读 · 0 评论 -
Oracle - 子查询
Oracle - 子查询原创 2020-10-16 15:21:16 · 324 阅读 · 0 评论 -
Oracle - 关联查询
Oracle - 关联查询1.非等值连接:没有外键关联,范围内的查询select first_name||last_name,salary,j.* from employees,job_grades j where salary >= j.lowest_sal and salary <= j.highest_sal;2.等值连接连接n个表,至少需要n-1个连接条件select e.*,d.* from employees e,departments d where e.d原创 2020-10-13 14:29:39 · 4037 阅读 · 0 评论 -
Oracle - 多行函数
Oracle - 多行函数一、多行函数原创 2020-10-13 12:07:09 · 412 阅读 · 0 评论 -
Oracle - SQL函数
Oracle - SQL函数原创 2020-10-13 10:12:34 · 587 阅读 · 0 评论 -
Oracle - Select语句
Oracle - Select语句一、单引号和双引号、||双引号:处理别名单引号:处理字符串拼接||:连结操作符select first_name||last_name||'的工资是'||salary "full name" from employees;二、空值的使用 null包括空值的任何算术表达式都等于空select salary,commission_pct,salary*(1+commission_pct) from employees;错误结果:没有提成比例的原创 2020-10-10 16:41:49 · 786 阅读 · 0 评论