随笔分类 -  SQL

case....when ...多重判断
摘要:CASE...WHEN 进行多重判断 CASE WHEN A IS NOT NULL THEN B WHEN C IS NULL THEN CASE WHEN D IS NOT NULL THEN E ELSE 0 END END contract_amount_total, 阅读全文

posted @ 2019-03-12 20:32 辉仔一刀 阅读(1856) 评论(0) 推荐(0)

exist not exist 分析
摘要:结果集1 结果集2: 最后连接条件 执行过程: 一行一行遍历结果集1的数据,然后结果集1中的连接条件执行子查询,如果有值返回那么在看是exist 还是not exist 在决定最后的结果集是否要要不要过滤这条记录。 阅读全文

posted @ 2018-12-21 10:54 辉仔一刀 阅读(190) 评论(0) 推荐(0)

SQL中IS NOT NULL与!=NULL的区别
摘要:平时经常会遇到这两种写法:IS NOT NULL与!=NULL。也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合。实际上,是由于对二者使用区别理解不透彻。 默认情况下,推荐使用 IS NOT NULL去做条件判断,因为SQL默认情况下对WHERE XX!= Null的判断会永远返回0 阅读全文

posted @ 2018-12-04 23:39 辉仔一刀 阅读(17030) 评论(0) 推荐(2)

case...when...then if 用法
摘要:select case when if 的一些用法 概述:sql语句中的case语句与高级语言中的switch语句,是标准sql的语法,适用于一个条件判断有多种值的情况下分别执行不同的操作。 首先,让我们看一下CASE的语法。在一般的SELECT中,其语法格式如下: CASE <单值表达式> WHE 阅读全文

posted @ 2018-11-27 22:09 辉仔一刀 阅读(4489) 评论(0) 推荐(0)

oracle sql 函数
摘要:select * from emp;CREATE TABLE emp3 as select * from emp where DEPNO = '30';select * from emp3;-- 两个表求并集 去除重复的select * FROM emp;union select * FROM em 阅读全文

posted @ 2018-11-26 10:12 辉仔一刀 阅读(309) 评论(0) 推荐(0)

详解一条sql语句的执行过程
摘要:SQL是一套标准,全称结构化查询语言,是用来完成和数据库之间的通信的编程语言,SQL语言是脚本语言,直接运行在数据库上。同时,SQL语句与数据在数据库上的存储方式无关,只是不同的数据库对于同一条SQL语句的底层实现不同罢了,但结果相同。这有点类似于java中接口的作用,一个接口可以有不同的实现类,不 阅读全文

posted @ 2018-11-21 11:43 辉仔一刀 阅读(473) 评论(0) 推荐(0)

要提高SQL查询效率where语句条件的先后次序应如何写
摘要:我们要做到不但会写SQL,还要做到写出性能优良的SQL语句。(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下, 阅读全文

posted @ 2018-11-15 17:37 辉仔一刀 阅读(3952) 评论(0) 推荐(1)

MySQL高级 之 explain执行计划详解
摘要:使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。 explain执行计划包含的信息 其中最重要的字段为:id、type、key、rows、Extra 各字段详解 id select查询的序列号,包含一组数字 阅读全文

posted @ 2018-11-09 17:09 辉仔一刀 阅读(219) 评论(0) 推荐(0)

数据库SQL优化大总结之 百万级数据库优化方案
摘要:网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。 这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。 1.对查询进行优化,要尽量避免全表扫描,首先应 阅读全文

posted @ 2018-11-09 16:59 辉仔一刀 阅读(218) 评论(0) 推荐(0)

存储过程
摘要:--定义一个存储过程:获取给定部门的工资总和(通过out参数) 要求:部门号和工资总额定义为参数select * from DEPT;select * from SALGRADE; create or REPLACE PROCEDURE addSal(dept_id NUMBER,sumsal ou 阅读全文

posted @ 2018-10-31 18:11 辉仔一刀 阅读(329) 评论(0) 推荐(1)

SQL中的条件判断语句(case when zhen if,ifnull)用法
摘要:简介: case具有两种格式。简单case函数和case搜索函数。这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。 --简 阅读全文

posted @ 2018-10-31 11:05 辉仔一刀 阅读(115190) 评论(0) 推荐(2)

sql查询原理
摘要:1.单表查询:根据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的);然后根据SELECT的选择列选择相应的列进行返回最终结果。 1)简单的单表查询 SELECT 字段 FROM 表名 WHERE 条件表达式 那它们是按什么顺序执行呢?分析器会先看语句的第一个词,当它发现第一个词 阅读全文

posted @ 2018-10-31 10:50 辉仔一刀 阅读(2653) 评论(0) 推荐(0)

sql积累
摘要:mysql 修改一列自增长 set @rownum=0; update a SET id = ( select @rownum := @rownum +1 as nid) WHERE id < 10; l mysql 查询重复数据及其条数 select login_name,count(*) as 阅读全文

posted @ 2018-10-31 10:43 辉仔一刀 阅读(240) 评论(0) 推荐(0)

mysql中group by 的用法解析
摘要:1. group by的常规用法 group by的常规用法是配合聚合函数,利用分组信息进行统计,常见的是配合max等聚合函数筛选数据后分析,以及配合having进行筛选后过滤。 聚合函数max select max(user_id),grade from user_info group by gr 阅读全文

posted @ 2018-10-27 15:58 辉仔一刀

SQL中IN和EXISTS用法的区别
摘要:结论 1. in()适合B表比A表数据小的情况 2. exists()适合B表比A表数据大的情况 当A表数据与B表数据一样大时,in与exists效率差不多,可任选一个使用. 分析: select * from Awhere id in(select id from B) 以上查询使用了in语句,i 阅读全文

posted @ 2018-10-26 16:10 辉仔一刀