Oracle
@子非鱼
心之所向,素履以往。
展开
-
Oracle 序列(增删改查,伪列NEXTVAL 和CURRVAL)
1.创建序列(SEQUENCE)Oracle的序列是一种数据库对象,其主要工作是用来为表产生唯一值。序列被创建后可以通过数据字典找到序列对象,因此序列可以被多个对象共享。序列的一个典型的用途是创建一个主键的值,它对于每一行必须是唯一的。基本语法CREATE SEQUENCE sequence[INCREMENT BY n][START WITH n][{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCY原创 2020-05-29 16:02:57 · 1372 阅读 · 0 评论 -
Oracle 伪列(ROWNUM,ROWID区别)
1.ROWNUM伪列查看伪列ROWNUM伪列是Oracle先查到结果集之后再加上去的一个伪列,这个伪列对符合条件的结果添加一个从1开始的序列号。-- ROWNUM从1开始的序列号SELECT ROWNUM, empno, ename, job, mgr, hiredate FROM emp WHERE deptno=20;通过ROWNUM分页ROWNUM与ROWID最大的不同在于,ROWID是物理存在的,而ROWNUM是动态的,先查到结果集后再加上去的一个列,因此先必须有结果集。--原创 2020-05-29 14:41:22 · 204 阅读 · 0 评论 -
Oracle 层次化查询(START WITH .. CONNECT BY)
Oracle 提供了对于ANSI SQL的扩展来简化对树状层次结构的遍历。START WITH … CONNECT BY子句。PRIOR操作符。LEVEL伪列。层次结构的数据查询START WITH condition1:指定层次结构中的根节点,所有满足condition1条件的都可以被考虑为根节点。如果没有指定STARTWITH子句,那么会使得所有的行都被考虑为根节点,这显然不符合树状查询的规律,也可以在condition1中包含子查询。CONNECT BY condition2..原创 2020-05-29 14:27:45 · 236 阅读 · 0 评论 -
Oracle 集合的运用(UNIOIN,UNION ALL,INTERSECT,MINUS)
1.集合使用SELECT语句进行查询时,查询的结果为一个结果集,通过使用集合运算,可以将查询的结果的一个或多个部分结合到一个结果中,包含集合运算的查询称为复合查询。联合运算:从两个查询返回的结果集去掉重复值后合并后的结果,使用UNION操作符。全联合运算:与联合运算相似,返回两个查询结果的并集,但是包括所有重复值。使用UNION ALL操作 符。相交运算:返回多个查询结果中的相同的行,使用INTERSECT操作符。相减运算:返回在第1个查询中存在而在第2个查询中不存在的行,使用MINUS操作原创 2020-05-29 14:17:42 · 318 阅读 · 0 评论 -
Oracle 视图传递参数
在Oracle里,视图不像存储过程和函数一样,可以定义输入参数,但我们可以变个方式,使用程序包来实现。oracle package:oracle package是oracle包,是一组相关过程、函数、变量、常量、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。Oracle的Package的作用:简化应用设计、提高应用性能、实现信息隐藏、子程序重载。package 和 package body 有什么区别?packag.转载 2020-05-29 13:17:55 · 1829 阅读 · 0 评论 -
Oracle 创建视图和增加额外列
1.创建oracle视图创建视图CREATE OR REPLACE VIEW VIEW_SEMI_FINISHED_PRODUCTS AS SELECT 0 pproductid, null pproductno, p.id cproductid, p.productno cproductno, null pproductdesc, null pproducttypedesc,TT.MEDIUM cproductdesc, TTT.medium cproducttypedesc, p.DEF原创 2020-05-29 11:25:32 · 3317 阅读 · 0 评论 -
Oracle WITH语句的使用
本文是看了DB2 SQL精粹有感写的Oracle版本,毕竟两个大公司的产品有不同嘛。说起WITH 语句,除了那些第一次听说WITH 语句的人,大部分人都觉得它是用来做递归查询的。其实那只是它的一个用途而已,它的本名正如我们标题写的那样,叫做:公共表表达式(Common Table Expression),从字面理解,大家觉得它是用来干嘛的呢?其实,它是用来定义临时集合的。WITH TEMP(ID,USER) AS(SELECT ‘01’,’SAM’ FROM DUALUNION ALLS转载 2020-05-27 18:22:48 · 1265 阅读 · 0 评论 -
Oracle 多表查询(外连接,左连接,右连接,any,all等)
多表查询创建表数据student(学生表)id name age sex class_id1 xiaoming 12 男 12 xiaozhang 13 (null) (null)3 zhangsan 14 男 2class(班级表)id name1 1班2 2班3 3班笛卡尔积,在多表查询的时候,如果不带任何条件,则会出现笛卡尔积,怎么避免:多表查询的条件至少不能少于表的个数减1通过select * from student,classdept表的每一条记录,都会原创 2020-05-26 18:40:29 · 997 阅读 · 0 评论 -
Oracle over(partition by)用法
1.row_number()添加行号表t_pi_part字段 id code namevalue 1 222 avalue 2 222 bvalue 3 333 c给code相同的part code 添加行标,根据id 排序select p.* ,row_number()over(partition by p.code order order by a.id desc) as row_index from t_pi_part p;执行结果val原创 2020-05-24 16:49:52 · 767 阅读 · 0 评论