1、oracle append有什么作用?
insert /*+append*/ into table1 select * from table2
在使用了append选项以后,insert数据会直接加到表的最后面,而不会在表的空闲块中插入数据。
使用append会增加数据插入的速度。
/*+APPEND*/的作用是在表的高水位上分配空间,不再使用表的extent中的空余空间
append 属于direct insert,归档模式下append+table nologging会大量减少日志,非归档模式append会大量减少日志,append方式插入只会产生很少的undo
不去寻找 freelist 中的free block , 直接在table HWM 上面加入数据。
2、不等连接的查询
外连接的限制
2.1:只能在连接的一端使用外连接操作符
error:
select p.name,pt.name from product p,product_type pt where p.product_type_id(+) = pt.product_type_id(+);
right:
select p.name,pt.name from product p,product_type pt where p.product_type_id(+) = pt.product_type_id;
right:
select p.name,pt.name from product p,product_type pt where p.product_type_id = pt.product_type_id(+);
2.2:不能同时使用外连接条件和IN操作符
error:
select p.name,pt.name from product p,product_type pt where p.product_type_id(+) in (1,2,3,4);
2.3:不能同时使用外连接条件和另一个使用OR操作符连接条件
error:
select p.name,pt.name from product p,product_type pt where p.product_type_id(+) = pt.product_type_id or p.product_type_id = 1;
3、使用USING关键字简化连接
3.1:使用USING必须满足
1、查义必须是等连接的。
2、等连接中的列名必须相同。
eg:用USING代替ON
select p.name,pt.name from product p INNER JOIN product_type pt USING(product_type_id);
此时如果想查看product_type_id的值,则
select p.name,pt.name, product_type_id from product p INNER JOIN product_type pt USING(product_type_id);
如果试图在列前面加表别名,则会出错。
另外,在USING子句中也只能单独使用列名
eg:
select p.name,pt.name from product p INNER JOIN product_type pt USING(product_type_id);
如果像这样
select p.name,pt.name from product p INNER JOIN product_type pt USING(p.product_type_id);
或
select p.name,pt.name from product p INNER JOIN product_type pt USING(pt.product_type_id);
都会报错。
4、GROUP BY,HAVING,聚合函数的使用
4.1:如果查询中包含一个聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY子句中,否则会出错。
error:
select product_type_id,avg(price) from product;
right:
select product_type_id,avg(price) from product group by product_type_id ;
4.2:不能在WHERE 子句中使用聚合函数来限制。
error:
select product_type_id,avg(price) from product where avg(price)>20 group by product_type_id;
right:
select product_type_id,avg(price) from product group by product_type_id having avg(price)>20;
/** GROUP BY可以不与HAVING子句一起使用,但是HAVING必须与GROUP BY子句一起使用 */
4.3:组合使用WHERE和GROUP BY子句
select product_type_id,avg(price) from product where price > 15 group by product_type_id order by product_type_id;
4.4:组合使用WHERE,GROUP BY和HAVING子句
select product_type_id,avg(price) from product where price > 15 group by product_type_id having avg(price)>13 order by product_type_id;
5、日期函数
这里主要讲一下平时用得少的,用得多的大家都非常熟悉了,不用讲了
5.1:LAST_DAY函数用于计算包含x的月的最后一天,样子如:LAST_DAY(DATE)
eg:
select last_day(sysdate) from dual;
or
select last_day(to_date('2011-11-15','yyyy-MM-dd')) from dual;
5.2:NEXT_DAY(x,day)用于计算从x开始,下一个day的日期,参数day是一个文本字符串,样子如:NEXT_DAY(DATE,VARCHAR2)
eg:
select next_day(sysdate,'星期二') from dual;
也可以这样,因为星期是从星期日到星期一,这样就是从1---7
select next_day(sysdate,2) from dual;
or
select next_day(sysdate,7) from dual;
5.3:ROUND函数,ROUND(x[,unit])用于对x取整,默认情况下,x取整为最近的一天,unit为可选,如yyyy,mm
eg:
select round(to_date('2011-11-15'),'yyyy') from dual;-----2012-01-01
select round(to_date('2011-11-15'),'mm') from dual;-----2011-12-01
select to_char(round(to_date('2011-11-15 21:26:32','yyyy-mm-dd hh24:mi:ss'),'hh24'),'yyyy-mm-dd hh24:mi:ss') from dual;---2011-11-15 21:00:00
5.4:TRUNC函数,TRUNC(x[,unit])用于对x截断,默认情况下,x被截断为当天的开始时间.unit为可选,它指明要截断的单元,如yyyy,mm
eg:
select trunc(to_date('2011-11-15'),'yyyy') from dual;------2011-01-01
select trunc(to_date('2011-11-15'),'mm') from dual;------2011-11-01
select to_char(round(to_date('2011-11-15 21:33:32','yyyy-mm-dd hh24:mi:ss'),'hh24'),'yyyy-mm-dd hh24:mi:ss') from dual;---2011-11-15 21:00:00
分享到:
相关推荐
### Oracle服务器端日期时间格式设置详解 #### 一、问题背景及解决方法 在使用Oracle数据库的过程中,可能会遇到日期时间格式不符合预期的情况。比如,默认情况下,Oracle数据库中的日期格式可能是`'DD-M-YYYY'`...
在Oracle数据库中,时间区间段的合并是...总结来说,Oracle时间区间段合并的算法利用了窗口函数和分组来识别和合并连续的时间段,能够有效地处理和分析时间序列数据,对于优化数据处理流程和提高查询效率具有重要意义。
总之,计算Oracle中的连续天数涉及多种技术,包括基础日期函数、自连接查询、窗口函数以及集合操作。选择哪种方法取决于具体需求和数据结构。在实际应用中,理解这些技术并结合业务场景灵活运用,才能有效地解决此类...
在Oracle SQL中,根据年份和周数获取特定日期是一个常见的需求,特别是在处理时间序列数据或进行周期性分析时。本文将深入探讨如何利用Oracle SQL的功能来实现这一目标,包括理解Oracle中的日期函数、如何计算特定...
- **日期时间获取与格式化**:通过`date /t`命令获取当前日期,然后利用`for /f`循环对日期进行处理,最终生成带有年月日时分格式的文件名。 - **备份文件生成**:使用Oracle提供的`exp`命令执行备份操作,并指定...
在Oracle数据库管理中,链接查询(也称为连接查询或JOIN查询)是数据库操作的一个核心概念,它用于合并来自两个或更多表的数据。本篇将详细探讨Oracle中的链接查询及其优化,特别是基于索引的SQL语句优化策略。 一...
Oracle数据库支持多种数据类型,如数值型、字符串型、日期时间型以及复杂的对象类型,能处理大量数据并提供高度的数据安全性和稳定性。 PL/SQL(Procedural Language/Structured Query Language)是Oracle专为...
它包含了日期、时间、数字格式化以及字符串比较等功能,确保了在跨文化环境下操作数据库的兼容性和准确性。 为了在DBeaver中使用这些JAR文件,你需要将它们添加到DBeaver的类路径中。通常,这可以通过以下步骤完成...
本篇文章将详细阐述标题和描述中提到的Oracle连接所需的关键JAR包,以及它们在Java应用程序中的作用。 首先,我们关注`classes12.jar`。这个文件是Oracle JDBC驱动程序的一部分,它包含了Oracle JDBC Thin驱动的...
- **解决方案**:可以通过调整Oracle客户端的时间区域设置或使用特定的日期格式来避免此类问题。 ###### 2.6.6 清除资源 - **代码示例**:`dbDisconnect(con)` - **解释**:使用`dbDisconnect`函数断开数据库连接,...
Oracle数据库中的多表连接是数据库...通过这些练习,我们能够掌握Oracle中的多表连接、子查询、聚合函数如`COUNT()`和`AVG()`,以及时间比较和条件过滤等高级查询技术。这些技能对于理解和处理复杂数据库查询至关重要。
1. 按时间查询:用户可以输入特定的日期和时间,系统将根据时刻表数据,返回在此时间范围内运行的公交线路和对应站点。 2. 按站点查询:用户输入站点名称,系统会列出经过该站点的所有公交线路及其到达和离开的时间...
### 在Oracle中插入当前时间 #### 背景与需求 在进行数据库操作时,经常需要记录事件发生的时间,例如创建或更新记录的时间戳。在Oracle数据库中,可以通过多种方式来实现这一目标。本文将详细介绍如何在Oracle...
- **日期时间类型**:Oracle使用`DATE`类型来存储日期时间值。可以使用标准的日期函数来进行日期计算。 #### 三、表的基本操作 - **查看表结构**:使用`DESCRIBE`或简写为`DESC`命令可以查看表的结构信息,例如`...
11. **数据类型**:PL/SQL拥有丰富的数据类型,包括数值型、字符串型、日期时间型以及复合类型,如记录和表类型,满足各种数据存储需求。 12. **PL/SQL块**:包括声明部分、执行部分和异常处理部分,是PL/SQL编程的...
在Oracle数据库中,日期类型是一个非常关键的数据结构,它用于存储日期和时间数据,包括年、月、日、小时、分钟和秒。掌握Oracle中的日期类型的用法对于进行高效的数据管理和查询至关重要。以下将详细介绍Oracle日期...