动态网站制作指南 [  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教程 ]的信息

本月文章推荐
.ActualTest Oracle 1Z0-131 v01..
.PB如何连接Oracle数据库.
.在UnixWare7.1.1上安装Oracle8i.
.前高管曝甲骨文内幕:走马换将渠.
.如何限制只有0组的用户可以su成r.
.oracle-触发redo写的几个条件.
.为什么Oracle中只能用sys和syste.
.将oracle的查询结果输出为文件.
.关于Java开发中使用Oracle数据库.
.如何在linux环境下启动时打开num.
.详细讲解Oracle数据库管理员的工.
.10G如何更改归档模式.
.如何让Oracle数据不丢失?.
.ORACLE 培训教程(1).
.在Oracle9i Release 2中使用PL/S.
.不产生UNDO的情况.
.Linux系统下的Oracle数据库编程详.
.创建交叉报表(oracle).
.Oracle数据库中如何改善表空间的.
.sendmail下如何限制邮件大小.

Oracle使用若干技术

发表日期:2008-2-9 |



  怎么样让我的用户名和密码不泄漏? 
  =====================
  在unix下,我用sqlplus sys/sys登陆,别的用户很轻易就能看到我的密码:怎么办? 
   
  $ ps -efgrep sqlplus 
  Oracle 3787 3781 1 22:05:34 pts/3 0:00 sqlplus sys/sys 
  oracle 3789 3772 0 22:05:44 pts/2 0:00 grep sqlplus 
  采用sqlplus /nolog 
   
  sql>connect sys/sys,这样别的用户就看不到你的密码啦。 
   
  怎样生成建表的完整的DDL语句? 
  ====================
  用eXP ,再Imp,show=y可以看到。 
   
  或者使用某些Oracle 的小工具,比如quest的toad和sql*navigator. 
   
  truncate table和delete table有些什么区别? 
  ================
  truncate: DDL ,no rollback possibility and no rollback segment usage, quick ,release space used by the table except the original one. 
   
  delete: dml, can rollback, use rollback space, not release space, slow, delete large table may cause ora-1555 error. 
   
  如何删除重复的记录: 
  =============
  第一个办法: 1。生成建表的完整DDL语句,并且生成tab_bak的表名。 
   
  2。insert into tab_bak select distinct * from tab_name; 
   
  3。drop table tab_name, rename tab_bak to tab_name; 
   
  第二个办法: 
   
  DELETE FROM table_name A WHERE ROWID > 
  ( SELECT min(rowid) FROM table_name B 
   
  WHERE A.key_values = B.key_values); 
   
  第三个办法: 
   
  Delete from my_table where rowid not in 
  ( SQL> select max(rowid) from my_table 
   
  group by my_column_name ); 
   
  第四个办法: 
   
  delete from my_table t1 
  where exists (select 'x' from my_table t2 
   
  where t2.key_value1 = t1.key_value1 
   
  and t2.key_value2 = t1.key_value2 
   
  and t2.rowid > t1.rowid); 
   
  如何快速为已有的表加上一个主键? 
  =====================
  加上一个非空的列,比如seqno,然后: 
   
  update table_name set seqno=rownum; 
   
  或者: 
   
  CREATE SEQUENCE testseq START WITH 1 INCREMENT BY 1; 
  update table_name set seqno=testseq.nextval; 
   
  SQL排序问题:我怎么才能选择出按照某个列排序后前N行来? 
  ======================
  在SQL*Server 里面,可以用这样的语句:select top 10 col1,col2 from table_name; 
   
  从Oracle8i开始,支持这样的语法(在子查询里面使用order by语句) 
   
  select * from (select col1,col2 from table_name order by col1,col2) 
   
  where rownum<11; 
   
  这样就能够起到同样的效果。 
   
  在Oracle8或者以下,可以这样: 
  SELECT col1,col2 FROM 
  (SELECT /*+ INDEX_DESC (table_name index_name) */ col1,col2 FROM table_name) 
  WHERE rownum < 6; 
   
  使用提示可以让Oracle在子查询返回结果之前先对他进行排序,一般可以使用hintINDEX_DESC(TABLE_NAME,INDEX_NAME)来起到这个作用。 
   
  我们可以分别查看两个SQL的执行计划: 
   
  scott@testdb> select * from sort_sample; 
   
  ID NAME 
  ---------- ------------
  1 aa 
  5 33 
  90 23s 
  23 fdisk 
  746 2343 
  24 format 
  3 low format 
  7 rows selected. 
   
  scott@testdb> create index sort_id_idx on sort_sample(id); 
   
  Index created. 
  scott@testdb> set autotrace on explain 
  scott@testdb> --way 1: 
  scott@testdb> select * from (select * from sort_sample order by id desc) where rownum<3; 
   
  ID NAME 
  ---------- -----------
  746 2343 
  90 23s 
   
  Execution Plan 
  ------------------------
  0 SELECT STATEMENT Optimizer=CHOOSE 
  1 0 COUNT (STOPKEY) 
  2 1 VIEW 
  3 2 SORT (ORDER BY STOPKEY) 
  4 3 TABLE Access (FULL) OF 'SORT_SAMPLE' 
   
  scott@testdb> --way 2 :wrong result 
  scott@testdb> select * from sort_sample where rownum<3; 
   
  ID NAME 
  ---------- ------------
  1 aa 
  5 33 
   
  Execution Plan 
  ---------------------------
  0 SELECT STATEMENT Optimizer=CHOOSE 
  1 0 COUNT (STOPKEY) 
  2 1 TABLE ACCESS (FULL) OF 'SORT_SAMPLE' 
   
  scott@testdb> ANALYZE TABLE SORT_SAMPLE COMPUTE STATISTICS; 
   
  Table analyzed. 
   
  scott@testdb> ANALYZE INDEX SORT_ID_IDX COMPUTE STATISTICS; 
   
  Index analyzed. 
   
  scott@testdb> --way 3: can work in oracle8 and oracle7 
  scott@testdb> select * from (select /*+index_desc(sort_sample sort_id_idx)*/ * from sort_sample) 
  2 where rownum<3; 
   
  ID NAME 
  ---------- ------------------
  1 aa 
  5 33 
   
  //原因:col sort_id_idx列为nullable,所以CBO不能确定,加上not null约束即可达到目的。
 
   
  用group by可以生成从小开始的排序: 
   
  scott@testdb> SELECT ID,NAME FROM 
  2 (SELECT ID,NAME,COUNT(*) FROM SORT_SAMPLE GROUP BY ID, NAME) 
  3 WHERE ROWNUM<3; 
   
  ID NAME 
  ---------- --------------
  1 aa 
  3 low format 
   
  Execution Plan 
  ------------------------------
  0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=7 Bytes=175) 
  1 0 COUNT (STOPKEY) 
  2 1 VIEW (Cost=3 Card=7 Bytes=175) 
  3 2 SORT (GROUP BY STOPKEY) (Cost=3 Card=7 Bytes=56) 
  4 3 TABLE ACCESS (FULL) OF 'SORT_SAMPLE' (Cost=1 Card=7 
   
  6。怎么每隔N条记录获得一条记录?比如第3,6,9等? 
  =================================
  CHAO@PING>select * from testseq; 
   
  ID NAME 
  ---------- ---------------------
  1 this is 1th record 
  2 this is 2th record 
  3 this is 3th record 
  4 this is 4th record 
  5 this is 5th record 
  6 this is 6th record 
  7 this is 7th record 
  8 this is 8th record 
  9 this is 9th record 
  10 this is 10th record 
   
  10 rows selected. 
   
  CHAO@PING>select id, name from 
  2 (select id, name, rownum rz from testseq) temp 
  3 where mod(rz,3)=0; 
   
  ID NAME 
  ---------- -------------------------
  3 this is 3th record 
  6 this is 6th record 
  9 this is 9th record 
   
  CHAO@PING> 
   
  如何删除一个列? 
  ===========
  从Oracle8i开始,Oracle支持一个列的删除,语法如下: 
   
  alter table tab_name drop column col1; 
   
  7。如何重命名一个列? 
  ==============
  CHAO@PING> create table testrename(id number, nama varchar2(30)); 
   
  Table created. 
   
  CHAO@PING> begin 
  2 for x in 1..10 loop 
  3 insert into testrename values(x,'this is 'to_char(x)'th record'); 
  4 end loop; 
  5 end; 
  6 / 
   
  PL/SQL procedure sUCcessfully completed. 
   
  CHAO@PING> commit; 
   
  Commit complete. 
   
  CHAO@PING> alter table testrename add name varchar2(30); 
   
  Table altered. 
   
  CHAO@PING> update testrename set name=nama; 
   
  10 rows updated. 
   
  CHAO@PING> alter table testrename drop column nama; 
   
  Table altered. 
   
  CHAO@PING> select * from testrename; 
   
  ID NAME 
  ---------- ---------------------------
  1 this is 1th record 
  2 this is 2th record 
  3 this is 3th record 
  4 this is 4th record 
  5 this is 5th record 
  6 this is 6th record 
  7 this is 7th record 
  8 this is 8th record 
  9 this is 9th record 
  10 this is 10th record
上一篇:block内部数据存储 人气:459
下一篇:Oracle Database 10g 中新特性 人气:425
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | 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対策 中国語教室 ホームページ作成