动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.Oracle10g数据库优化实用心得小结.
.Oracle数据库中的表连接方式及使.
.临时表在Oracle数据库与SQL Serv.
.在单机上创建物理的Oracle9i sta.
.Sqlplus中调试带cursor的存储过程.
.Oracle中的LOB类型处理.
.Oracle9i初始化参数中文说明(16).
.Oracle和SQL Server存储调试和出.
.Oracle基本数据类型存储格式浅析.
.数据库视图的使用.
.exp和imp用法和介绍.
.Oracle Database 10g:最佳新特性.
.本人编写的两个Oracle的帮助小工.
.甲骨文进行紧急升级 共发布33个补.
.如何杀掉带锁的oracle进程.
.SQL*PLUS命令的使用大全(1).
.ORACLE在HP-UX下的系列问题处理(.
.作Export或Import时,如何记录LO.
.ora-02085错误.
.用一个实例讲解Oracle的自定义聚.

Oracle 应用技巧

发表日期:2008-2-9 |


  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
   触发器:
  select trigger_name,trigger_type,table_owner,table_name,status from
   快照:
  select owner,name,master,table_name,last_refresh,next from user_snapshots
   同义词:
  select * from syn;
   序列:
  select * from seq;
   数据库链路:
  select * from user_db_links;
   约束限制:
  select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from
   本用户读取其他用户对象的权限:
  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
   file_handle := UTL_FILE.FOPEN('/tmp', '文件名', 'w');
   UTL_FILE.PUTF(file_handle, '写入的信息 ');
   UTL_FILE.FCLOSE(file_handle);
   exception
   WHEN utl_file.invalid_path THEN
   raise_application_error(-20000, 'ERROR: Invalid path for file or path not in
   end;
   PutF()过程用来以指定格式把文本写入一个文件
   Put_Line()过程把一个指定的字符串写入文件并在文件中开始新的一行
   18.怎样计算表中的记录数?
   系统环境:
   1、操作系统:windows 2000
   2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
   3、安装路径:C:ORACLE
   实现方法:
   查看当前用户下有什么对象(表、视图、同义词、快照)   SQL> select * from tab;
   查看表结构   SQL> desc 表名
   查看表中记录数   SQL> select count(*) from 表名;
  SQL> select count(rowid) from 表名;
   19.怎样查看表的结构?
   系统环境:
   1、操作系统:Windows 2000
   2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
   3、安装路径:C:ORACLE
   实现方法:
   查看当前用户下有什么对象(表、视图、同义词、快照)   SQL> select * from tab;
   查看表结构   SQL> describe 表名
   简写以上命令   SQL> desc 表名
   20.如何用SQL生成SQL批处理文件?
   软件环境:
   1、Windows NT4.0+ORACLE 8.0.4
   2、ORACLE安装路径为:C:ORANT
   问题提出:
   1、用户需要对数据库用户下的每一张表都执行一个相同的SQL操作,这时,一遍、一遍
   实现方法:   SQL> set heading off --禁止输出列标题
   SQL> set feedback off --禁止显示最后一行的计数反馈信息
   列出当前用户下所有同义词的定义,可用来测试同义词的真实存在性
   select 'desc 'tname from tab where taBType='SYNONYM';
   查询当前用户下所有表的记录数
   select 'select ''tname'',count(*) from 'tname';' from tab where
   把所有符合条件的表的select权限授予为public
   select 'grant select on 'table_name' to public;' from user_tables where 《
   删除用户下各种对象
   select 'drop 'tabtype' 'tname from tab;
   删除符合条件用户   select 'drop user 'username' cascade;' from all_users where user_id>25;
   快速编译所有视图
   ----当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍,
   ----因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性
,快速编译。   然后执行ON.SQL即可。   SQL> @ON.SQL
   当然,授权和创建同义词也可以快速进行,如:   SQL> SELECT 'GRANT SELECT ON 'TNAME' TO 用户名;' FROM TAB;
   SQL> SELECT 'CREATE SYNONYM 'TNAME' FOR 用户名.'TNAME';' FROM TAB;
上一篇:没有备份、只有归档日志,如何恢复数据文件? 人气:883
下一篇:Oracle基本数据类型存储格式浅析(四)——ROWID类型(一) 人气:695
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 HDWiki v4.0.1 bulid 081007 UTF
2008-10-7 迅易评选投票管理系统 v10.0
2008-10-7 HDWiki v4.0.1 bulid 081007 GBK
2008-10-7 Bitrac单用户博客 v1.14 bulid 0
2008-10-7 OpenX(广告管理系统) v2.6.2 多国
2008-10-7 乐铺网店系统免费普及版 v3.41
2008-9-29 酷狗音乐(原KuGoo)2008 v5.310 正
2008-9-29 QQTab 1.1
2008-9-29 网络传送带 Net Transport 2.64a
2008-9-29 谷歌金山词霸v1.8
2008-9-29 TweakVI 1.0 Build 1090
2008-9-29 ACDSee Pro 2.5 Build 333 汉化绿
2008-9-29 Winamp v5.541(2189) 周明波简体
2008-9-27 CCleaner 2.12.651
2008-9-27 Mozilla Thunderbird 2.0.0.17 英
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成