oracle的复杂查询,Oracle复杂查询

Oracle复杂查询

1、查询两个日期之间的数据。

假设有表Table1,其创建表的sql语句为:

create table Table1(

StationID    NUMBER(10) Primary key,

Year           NUMBER(4)  not null,

Month        NUMBER(2)  not null,

Day            NUMBER(2)  not null);

现在我需要查在'2005-01-01'至'2006-01-01'之间的所有数据,遇到的主要问题是:表Table1中的日期信息分别存放在三个字段(Year,Month,Day)中,怎样实现这一查询呢?

答案如下:

SQL>select * from Table1 where to_date(concat(concat(concat(concat(year,'-'),lpad(month,2,0)),'-'),lpad(DAY,2,0)),'yyyy-mm-dd')

between to_date('2005-01-01','yyyy-mm-dd') and to_date('2006-01-01','yyyy-mm-dd');

答案解释:

(1)使用concat函数连接Year,Month,Day三个字段,从而构造一个新的字符串(包含年、月、日信息),使其格式为:'年-月-日';

(2)使用lpad函数补足月份及天数,使之都是二位,这是因为to_date函数的第一个参数是必须为'yyyy-mm-dd'类型;

(3)使用between and来确定范围。

相关文档:

对于UNDO

表空间大小的定义需要考虑UNDO_RETNETION

参数、产生的UNDO BLOCKS/

秒、UNDO BLOCK

的大小。undo_retention

:对于UNDO

表空间的数据文件属性为autoextensible,

则undo_retenion

参数必须设置,UNDO

信息将至少保留至undo_retention

参数设定的值内,但UNDO

表空间将会自动扩展。对于固定UNDO

表空间 ......

1,查看当前的保护模式

select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;

2,查看日志的传送方式;

select dest_name,archiver from v$archive_dest;

3,停止standby的自动恢复状态

alter database recover manager standby database finish;

4,添加standby logfile

&nb ......

如何手工创建Oracle数据库

http://www.cnhacker.com/Security/System/200808/t20080818_6325.html

今天,我在测试机器上来了个误操作rm * backup/*,把正在运行的数据库中的数据文件全部删除了,真是郁闷!还好这个是给我们新人们测试玩的,要不然就死定了!在此也做一个提醒,身为DBA,要永远记住什么慎用或者禁止使用rm命� ......

我们可以通过下面的语句来查询数据库的默认临时表空间:

SQL> select * from database_properties where property_name = 'DEFAULT_TEMP_TABLESPACE';

默认临时表空间的限制:

1. 默认临时表空间必须是TEMPORARY的:

SQL> alter database default temporary t ......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值