分享
 
 
 

Oracle应用技巧

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1.Oracle中如何实现某一字段自动增加1?

软件环境:

1、Windows NT4.0+ORACLE 8.0.4

2、ORACLE安装路径为:C:\ORANT

实现方法:

建立一个最小为1,最大为999999999的一个序列号会自动循环的序列

create sequence 序列名

increment by 1

start with 1

maxvalue 999999999

cycle;

当向表中插入数据时,SQL语句写法如下:

SQL insert into 表名 values(序列名.nextval,列1值,列2值);

2.如何改变表中列的名字?

软件环境:

1、Windows NT4.0+ORACLE 8.0.4

2、ORACLE安装路径为:C:\ORANT

实现方法:

SQL create table t2(新列名) as select * from t1;

--以新名字命名列名

SQL drop table t1;

--删除表1

SQL rename t2 to t1;

--把表2改名为表1

3.如何删除表中的列?

软件环境:

1、Windows NT4.0+ORACLE 8.0.4

2、ORACLE安装路径为:C:\ORANT

实现方法:

SQL create table t2 as select from t1;

--以第一个表中的某列建立第二个新表

SQL drop table t1;

--删除表1

SQL rename t2 to t1;

--把表2改名为表1

Oracle 8i及以上版本中,可以使用以下语句

SQL alter table 表1 drop column 列1;

4.如何查找、删除表中重复的记录

软件环境:

1、Windows NT4.0+ORACLE 8.0.4

2、ORACLE安装路径为:C:\ORANT

问题提出:

1、当我们想要为一个表创建唯一索引时,如果该表有重复的记录,则无法创建成功。

方法原理:

1、Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,

rowid确定了每条记录是在ORACLE中的哪一个数据文件、块、行上。

2、在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中

那些具有最大rowid的就可以了,其余全部删除。

3、以下语句用到了3项技巧:rowid、子查询、别名。

实现方法:

SQL create table a (

2 bm char(4), --编码

3 mc varchar2(20) --名称

4 )

5 /

表已建立.

SQL insert into a values('1111','1111');

SQL insert into a values('1112','1111');

SQL insert into a values('1113','1111');

SQL insert into a values('1114','1111');

SQL insert into a select * from a;

插入4个记录.

SQL commit;

完全提交.

SQL select rowid,bm,mc from a;

ROWID BM MC

------------------ ---- -------

000000D5.0000.0002 1111 1111

000000D5.0001.0002 1112 1111

000000D5.0002.0002 1113 1111

000000D5.0003.0002 1114 1111

000000D5.0004.0002 1111 1111

000000D5.0005.0002 1112 1111

000000D5.0006.0002 1113 1111

000000D5.0007.0002 1114 1111

查询到8记录.

查出重复记录

SQL select rowid,bm,mc from a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);

ROWID BM MC

------------------ ---- --------------------

000000D5.0000.0002 1111 1111

000000D5.0001.0002 1112 1111

000000D5.0002.0002 1113 1111

000000D5.0003.0002 1114 1111

删除重复记录

SQL delete from a a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);

删除4个记录.

SQL select rowid,bm,mc from a;

ROWID BM MC

------------------ ---- --------------------

000000D5.0004.0002 1111 1111

000000D5.0005.0002 1112 1111

000000D5.0006.0002 1113 1111

000000D5.0007.0002 1114 1111

5.查找a表中有,而在b表中没有的记录

软件环境:

1、Windows NT4.0+ORACLE 8.0.4

2、ORACLE安装路径为:C:\ORANT

实现方法:

SQL create table a (

2 bm char(4), --编码

3 mc varchar2(20) --名称

4 )

5 /

表已建立.

SQL insert into a values('1111','1111');

SQL insert into a values('1112','1111');

SQL insert into a values('1113','1111');

SQL insert into a values('1114','1111');

SQL insert into a values('1115','1111');

SQL create table b as select * from a where 1=2;

表已建立.

SQL insert into b values('1111','1111');

SQL insert into b values('1112','1111');

SQL insert into b values('1113','1111');

SQL insert into b values('1114','1111');

SQL commit;

完全提交.

SQL select * from a;

BM MC

---- --------------------

1111 1111

1112 1111

1113 1111

1114 1111

1115 1111

SQL select * from b;

BM MC

---- --------------------

1111 1111

1112 1111

1113 1111

1114 1111

SQL select bm from a where not exists (select bm from b where a.bm=b.bm);

BM MC

---- --------------------

1115 1111

6.查看本用户下的各种对象的SQL脚本

软件环境:

1、Windows NT4.0+ORACLE 8.0.4

2、ORACLE安装路径为:C:\ORANT

SQL语句:

表:

select * from cat;

select * from tab;

select table_name from user_tables;

视图:

select text from user_views where view_name=upper('&view_name');

索引:

select index_name,table_owner,table_name,tablespace_name,status from user_indexes order by table_name;

触发器:

select trigger_name,trigger_type,table_owner,table_name,status from user_triggers;

快照:

select owner,name,master,table_name,last_refresh,next from user_snapshots order by owner,next;

同义词:

select * from syn;

序列:

select * from seq;

数据库链路:

select * from user_db_links;

约束限制:

select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints;

本用户读取其他用户对象的权限:

select * from user_tab_privs;

本用户所拥有的系统权限:

select * from user_sys_privs;

用户:

select * from all_users order by user_id;

表空间剩余自由空间情况:

select tablespace_name,sum(bytes) 总字节数,max(bytes),count(*) from dba_free_space group by tablespace_name;

数据字典:

select table_name from dict order by table_name;

锁及资源信息:

select * from v$lock;不包括DDL锁

数据库字符集:

select name,value$ from props$ where name='NLS_CHARACTERSET';

inin.ora参数:

select name,value from v$parameter order by name;

SQL共享池:

select sql_text from v$sqlarea;

数据库:

select * from v$database

控制文件:

select * from V$controlfile;

重做日志文件信息:

select * from V$logfile;

来自控制文件中的日志文件信息:

select * from V$log;

来自控制文件中的数据文件信息:

select * from V$datafile;

NLS参数当前值:

select * from V$nls_parameters;

ORACLE版本信息:

select * from v$version;

描述后台进程:

select * from v$bgprocess;

查看版本信息:

select * from product_component_version;

17.如何在PL/SQL中读写文件?

软件环境:

1、服务器端:Windows NT4.0+ORACLE 8.0.4

2、ORACLE安装路径为:C:\ORANT

实现方法:

PL/SQL 3.3以上的版本中,UTL_FILE包允许用户通过PL/SQL读写操作系统文件。如下:

declare

file_handle UTL_FILE.FILE_TYPE;

begin

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有