国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle 應(yīng)用技巧

2024-08-29 13:42:58
字體:
供稿:網(wǎng)友
  1.Oracle中如何實(shí)現(xiàn)某一字段自動增加1?
   軟件環(huán)境:
   1、Windows NT4.0+ORACLE 8.0.4
   2、ORACLE安裝路徑為:C:ORANT
   實(shí)現(xiàn)方法:
   建立一個(gè)最小為1,最大為999999999的一個(gè)序列號會自動循環(huán)的序列
   create sequence 序列名
   increment by 1
   start with 1
   maxvalue 999999999
   cycle;
   當(dāng)向表中插入數(shù)據(jù)時(shí),SQL語句寫法如下:
   SQL> insert into 表名 values(序列名.nextval,列1值,列2值);
   2.如何改變表中列的名字?
   軟件環(huán)境:
   1、Windows NT4.0+ORACLE 8.0.4
   2、ORACLE安裝路徑為:C:ORANT
   實(shí)現(xiàn)方法:   SQL> create table t2(新列名) as select * from t1; --以新名字命名列名
   SQL> drop table t1; --刪除表1
   SQL> rename t2 to t1;   --把表2改名為表1
   3.如何刪除表中的列?
   軟件環(huán)境:
   1、Windows NT4.0+ORACLE 8.0.4
   2、ORACLE安裝路徑為:C:ORANT
   實(shí)現(xiàn)方法:   SQL> create table t2 as select from t1;  --以第一個(gè)表中的某列建立第二個(gè)新表
   SQL> drop table t1; --刪除表1
   SQL> rename t2 to t1;   --把表2改名為表1
   Oracle 8i及以上版本中,可以使用以下語句   SQL> alter table 表1 drop column 列1;
   4.如何查找、刪除表中重復(fù)的記錄
   軟件環(huán)境:
   1、Windows NT4.0+ORACLE 8.0.4
   2、ORACLE安裝路徑為:C:ORANT
   問題提出:
   1、當(dāng)我們想要為一個(gè)表創(chuàng)建唯一索引時(shí),假如該表有重復(fù)的記錄,則無法創(chuàng)建成功。
   方法原理:
   1、Oracle中,每一條記錄都有一個(gè)rowid,rowid在整個(gè)數(shù)據(jù)庫中是唯一的,
rowid確定了每條記錄是在ORACLE中的哪一個(gè)數(shù)據(jù)文件、塊、行上。
   2、在重復(fù)的記錄中,可能所有列的內(nèi)容都相同,但rowid不會相同,所以只要確定出重
那些具有最大rowid的就可以了,其余全部刪除。
   3、以下語句用到了3項(xiàng)技巧:rowid、子查詢、別名。
   實(shí)現(xiàn)方法:   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個(gè)記錄.
   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記錄.
   查出重復(fù)記錄   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
   刪除重復(fù)記錄   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個(gè)記錄.
   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表中沒有的記錄
   軟件環(huán)境:
   1、Windows NT4.0+ORACLE 8.0.4
   2、ORACLE安裝路徑為:C:ORANT
   實(shí)現(xiàn)方法:   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腳本
   軟件環(huán)境:
   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
   觸發(fā)器:
  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;
   數(shù)據(jù)庫鏈路:
  select * from user_db_links;
   約束限制:
  select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from
   本用戶讀取其他用戶對象的權(quán)限:
  select * from user_tab_PRivs;
   本用戶所擁有的系統(tǒng)權(quán)限:
  select * from user_sys_privs;
   用戶:
  select * from all_users order by user_id;  表空間剩余自由空間情況:
  select tablespace_name,sum(bytes) 總字節(jié)數(shù),max(bytes),count(*) from
dba_free_space group by tablespace_name;
   數(shù)據(jù)字典:
  select table_name from dict order by table_name;
   鎖及資源信息:
  select * from v$lock;不包括DDL鎖
   數(shù)據(jù)庫字符集:
  select name,value$ from props$ where name='NLS_CHARACTERSET';
   inin.ora參數(shù):
  select name,value from v$parameter order by name;
   SQL共享池:
  select sql_text from v$sqlarea;
   數(shù)據(jù)庫:
  select * from v$database
   控制文件:
  select * from V$controlfile;
   重做日志文件信息:
  select * from V$logfile;
   來自控制文件中的日志文件信息:
  select * from V$log;
   來自控制文件中的數(shù)據(jù)文件信息:
  select * from V$datafile;
   NLS參數(shù)當(dāng)前值:
  select * from V$nls_parameters;
   ORACLE版本信息:
  select * from v$version;
   描述后臺進(jìn)程:
  select * from v$bgprocess;
   查看版本信息:
  select * from prodUCt_component_version;
   17.如何在PL/SQL中讀寫文件?
   軟件環(huán)境:
   1、服務(wù)器端:Windows NT4.0+ORACLE 8.0.4
   2、ORACLE安裝路徑為:C:ORANT
   實(shí)現(xiàn)方法:
   PL/SQL 3.3以上的版本中,UTL_FILE包答應(yīng)用戶通過PL/SQL讀寫操作系統(tǒng)文件。如下:
   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()過程用來以指定格式把文本寫入一個(gè)文件
   Put_Line()過程把一個(gè)指定的字符串寫入文件并在文件中開始新的一行
   18.怎樣計(jì)算表中的記錄數(shù)?
   系統(tǒng)環(huán)境:
   1、操作系統(tǒng):windows 2000
   2、數(shù)據(jù)庫: Oracle 8i R2 (8.1.6) for NT 企業(yè)版
   3、安裝路徑:C:ORACLE
   實(shí)現(xiàn)方法:
   查看當(dāng)前用戶下有什么對象(表、視圖、同義詞、快照)   SQL> select * from tab;
   查看表結(jié)構(gòu)   SQL> desc 表名
   查看表中記錄數(shù)   SQL> select count(*) from 表名;
  SQL> select count(rowid) from 表名;
   19.怎樣查看表的結(jié)構(gòu)?
   系統(tǒng)環(huán)境:
   1、操作系統(tǒng):Windows 2000
   2、數(shù)據(jù)庫: Oracle 8i R2 (8.1.6) for NT 企業(yè)版
   3、安裝路徑:C:ORACLE
   實(shí)現(xiàn)方法:
   查看當(dāng)前用戶下有什么對象(表、視圖、同義詞、快照)   SQL> select * from tab;
   查看表結(jié)構(gòu)   SQL> describe 表名
   簡寫以上命令   SQL> desc 表名
   20.如何用SQL生成SQL批處理文件?
   軟件環(huán)境:
   1、Windows NT4.0+ORACLE 8.0.4
   2、ORACLE安裝路徑為:C:ORANT
   問題提出:
   1、用戶需要對數(shù)據(jù)庫用戶下的每一張表都執(zhí)行一個(gè)相同的SQL操作,這時(shí),一遍、一遍
   實(shí)現(xiàn)方法:   SQL> set heading off --禁止輸出列標(biāo)題
   SQL> set feedback off --禁止顯示最后一行的計(jì)數(shù)反饋信息
   列出當(dāng)前用戶下所有同義詞的定義,可用來測試同義詞的真實(shí)存在性
   select 'desc 'tname from tab where taBType='SYNONYM';
   查詢當(dāng)前用戶下所有表的記錄數(shù)
   select 'select ''tname'',count(*) from 'tname';' from tab where
   把所有符合條件的表的select權(quán)限授予為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;
   快速編譯所有視圖
   ----當(dāng)在把數(shù)據(jù)庫倒入到新的服務(wù)器上后(數(shù)據(jù)庫重建),需要將視圖重新編譯一遍,
   ----因?yàn)樵摫砜臻g視圖到其它表空間的表的連接會出現(xiàn)問題,可以利用PL/SQL的語言特性
,快速編譯。   然后執(zhí)行ON.SQL即可。   SQL> @ON.SQL
   當(dāng)然,授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行,如:   SQL> SELECT 'GRANT SELECT ON 'TNAME' TO 用戶名;' FROM TAB;
   SQL> SELECT 'CREATE SYNONYM 'TNAME' FOR 用戶名.'TNAME';' FROM TAB;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 公主岭市| 佛冈县| 东乡县| 鲁山县| 营山县| 唐河县| 丹凤县| 新泰市| 麟游县| 闽侯县| 茶陵县| 太谷县| 宜阳县| 剑川县| 琼海市| 当雄县| 临桂县| 大埔县| 天门市| 勃利县| 桓仁| 湖南省| 永善县| 胶州市| 曲麻莱县| 闸北区| 岱山县| 襄城县| 揭西县| 延津县| 淄博市| 龙泉市| 唐山市| 黄骅市| 昌都县| 容城县| 永州市| 甘肃省| 博客| 政和县| 邹城市|