国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

我的oracle筆記一(sql語(yǔ)句方面)

瀏覽:28日期:2023-11-19 16:05:48
一.sql語(yǔ)句1.增加主鍵 alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN); 指定表空間 alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN) using index; tablespace TABLE_SPACE_NAME;2.增加外鍵 alter table TABLE_NAME add constraint FK_NAME; foreign key (TABLE_COLUMN) references KEY_TABLE_NAME;3.使主鍵或外鍵失效、生效 alter table TABLE_NAME; disable(enable) constraint KEY_NAME;4、查看各種約束 select constraint_name,table_name,constraint_type,status from user_constraints; select constraint_name, constraint_type,search_condition, r_constraint_name; from user_constraints where table_name = upper('&table_name'); select c.constraint_name,c.constraint_type,cc.column_name; from user_constraints c,user_cons_columns cc where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position; 5、刪除主鍵或外鍵 alter table TABLE_NAME; drop constraint KEY_NAME;6、建外鍵 單字段時(shí):create table 表名 (col1; char(8), cnochar(4); REFERENCE course); 多個(gè)字段時(shí),在最后加上 Foreign Key (字段名) REFERENCE 表名(字段) 連帶刪除選項(xiàng) (on delete cascade 當(dāng)指定時(shí),假如父表中的記錄被刪除,則依靠于父表的記錄也被刪除 REFERENCE 表名() on delete cascade;7、刪除帶約束的表 Drop table 表名 cascade; constraints;8:索引治理<1>.creating function-based indexes sql> create index summit.item_quantity on summit.item(quantity-quantity_shipped); <2>.create a B-tree index sql> create [unique] index index_name on table_name(column,.. asc/desc) tablespace sql> tablespace_name [pctfree integer] [initrans integer] [maxtrans integer] sql> [logging nologging] [nosort] storage(initial 200k next 200k pctincrease 0 sql> maxextents 50); <3>.pctfree(index)=(maximum number of rows-initial number of rows)*100/maximum number of rows <4>.creating reverse key indexes sql> create unique index xay_id on xay(a) reverse pctfree 30 storage(initial 200k sql> next 200k pctincrease 0 maxextents 50) tablespace indx; <5>.create bitmap index sql> create bitmap index xay_id on xay(a) pctfree 30 storage( initial 200k next 200k sql> pctincrease 0 maxextents 50) tablespace indx; <6>.change storage parameter of index sql> alter index xay_id storage (next 400k maxextents 100); 7.allocating index space sql> alter index xay_id allocate extent(size 200k datafile 'c:/Oracle/index.dbf'); <8>.alter index xay_id deallocate unused; <9>、查看索引 ;SQL>select index_name,index_type,table_name from user_indexes order by table_name;<10>、查看索引被索引的字段 ;SQL>select * from user_ind_columns where index_name=upper('&index_name');11、創(chuàng)建序列 select * from user_sequences; create; sequence SEQ_NAME; start with 1000 maxvalue; 1000 increment by 1; alter sequence; SEQ_NAME minvalue 50 maxvalue 100;12、刪除重復(fù)行 update a set aa=null where aa is not null; delete from a where rowid!= (select max(rowid) from a; b where; a.aa=b.aa);13、刪除同其他表相同的行 delete from a; where exits (select 'X' from b where b.no=a.no); 或 delete from a; where no in (select no from b);14、查詢從多少行到多少行的記錄(可以用在web開發(fā)中的分頁(yè)顯示);select * from ( select rownum row_id,b.* from (select a.* from sys_oper a) b )where row_id between 15 and 2015、對(duì)公共授予訪問權(quán) grant select on 表名 to public; create public synonym 同義詞名; for 表名;16、填加注釋 comment on table 表名 is; '注釋'; comment on column 表名.列名 is '注釋';17、分布式數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)庫(kù)鏈路 create [public] database link LINKNAME [connect to USERNAME identified by PASSWord] [using 'CONNECT_STRING'] 可以在服務(wù)器端,也可以在客戶端建立,但必須注重,兩臺(tái)服務(wù)器之間 數(shù)據(jù)庫(kù)必須可以互訪,必須各有各自的別名數(shù)據(jù)庫(kù)18、查看數(shù)據(jù)庫(kù)鏈路 select * from; all_db_links; select * from user_db_links; 查詢; select * from TABLENAME@DBLNKNAME 創(chuàng)建遠(yuǎn)程數(shù)據(jù)庫(kù)同義詞 create synonym; for TABLENAME@DBLNKNAME 操縱遠(yuǎn)程數(shù)據(jù)庫(kù)記錄 insert into TABLENAME@DBLNKNAME (a,b); values (va,vb); update;TABLENAME@DBLNKNAME set a='this'; delete from TABLENAME@DBLNKNAME 怎樣執(zhí)行遠(yuǎn)程的內(nèi)嵌過程 begin otherdbpro@to_html(參數(shù)); end;19、數(shù)據(jù)庫(kù)鏈路用戶密碼有非凡字符的時(shí)候,可以用雙引號(hào)把密碼引起來create public database link dblink1 connect to db1 identified by '123*456' using 'db11'20.oracle8中擴(kuò)充了group by rollup和cube的操作。有時(shí)候省了你好多功夫的。<1>下面的語(yǔ)句可以進(jìn)行總計(jì)select region_code,count(*) from aicbs.acc_woff_notifygroup by rollup(region_code);<2> 對(duì)第1個(gè)字段小計(jì),最后合計(jì)select region_code,write_status,count(*) from aicbs.acc_woff_notifygroup by rollup(region_code,write_status);----------------------570;;0;;;;3570;;1;;;;2570;;5--此處小計(jì)了570的記錄571;;0;;;;10571;;1;;;;2571;;12; --此處小計(jì)了571的記錄.....100 --此處有總計(jì)<3> 復(fù)合rollup表達(dá)式,只做總計(jì)select region_code,write_status,count(*) from aicbs.acc_woff_notifygroup by rollup(region_code,write_status);<4> 對(duì)第1個(gè)字段小計(jì),再對(duì)第2個(gè)字段小計(jì),最后合計(jì)select region_code,write_status,count(*) from aicbs.acc_woff_notifygroup by cube(region_code,write_status);----------------------100 ;--此處有總計(jì)0;;60;;--對(duì)write_status=0的小計(jì)1;;39;;--對(duì)write_status=1的小計(jì)3;;1;;--對(duì)write_status=3的小計(jì)570;;;;5;;--此處小計(jì)了570的記錄570;;0;;3570;;1;;2571;;;;12;;--此處小計(jì)了571的記錄571;;0;;10571;;1;;2....<3> 復(fù)合cube表達(dá)式,只做總計(jì)select region_code,write_status,count(*) from aicbs.acc_woff_notifygroup by cube(region_code,write_status);<4>下面的語(yǔ)句可以按照rollup不同的字段進(jìn)行小計(jì)select region_code,write_status,count(*) from aicbs.acc_woff_notifygroup by region_code,rollup(write_status);21.查詢view的創(chuàng)建語(yǔ)句 sql>set long 1000 sql>select * from user_views where view_name='MY_VIEW_NAME'; orsql>select * from all_views where view_name='MY_VIEW_NAME';22、去除數(shù)據(jù)庫(kù)中非凡字符 ;<1>.字符串字段中含有''',假如用來組合sql語(yǔ)句,會(huì)造成語(yǔ)句不準(zhǔn)確。 比如:replace(f1,'''','')<2>.字符串字段中含有't n',假如用來在c或者c++程序中輸出到文件,格式無法保證。比如:replace(f2,'t','')<3>.清除換行和回車比如: replace(f2,chr(13)chr(10),'')23、如何在字符串里加回車或者tab鍵 在sqlplus中執(zhí)行 sql>select 'UserId=1233111'chr(10)'AccId=13431'chr(9)'AccId2=11111' from dual;24、樹形查詢create table zj(bm;;number(8),bmmcvarchar2(20),sjbmnumber(8))insert into zj values(1,'aaa',0)insert into zj values(11,'aaa1',1)insert into zj values(12,'aaa2',1)insert into zj values(111,'aaa11',11)insert into zj values(112,'aaa12',11)insert into zj values(113,'aaa13',11)insert into zj values(121,'aaa21',12)insert into zj values(122,'aaa22',12)insert into zj values(123,'aaa23',12)--select bm,bmmc,sjbm,levelfrom zjstart with sjbm=0connect by prior; bm = sjbm或者select bm,bmmc,sjbm,levelfrom zjstart with sjbm=0connect by; sjbm = prior; bm 25、快照 create snapshot SNAPSHOT_NAME [storage (storage parameter)] [tablespace; TABLESPACE_NAME] [refresh; [fastcompleteforce] [start with; START_DATE next NEXT_DATE] as QUERY; create snapshot snapshot_to_study as select * from TABLE_NAME@to_study 創(chuàng)建角色 create role aa identified by aaa; 授權(quán); grant create snapshot,alter snapshot to aaa; grant; aaa to emp; create snapshot SNAPSHOT_TO_Html refresh; complete start with sysdate next sysdate+5/(24*60*60) as; select * from a@to_html 刪除; drop snapshot snap_to_html 手工刷新快照,(調(diào)用DBMS_SNAPSHOT包中的refresh過程)DBMS_SNAPSHOT.refresh(snapshot_name,refresh_type); begin DBMS_SNAPSHOT.REFRESH('snap_to_html','c'); end; 對(duì)所有快照進(jìn)行刷新 begin DBMS_SNAPSHOT.REFRESH_ALL; end; 怎樣執(zhí)行遠(yuǎn)程的內(nèi)嵌過程 begin otherdbpro@to_html(參數(shù)); ;;;;end;26、用戶治理create a user: database authentication sql> create user juncky identified by oracle default tablespace users sql> temporary tablespace temp quota 10m on data password eXPire sql> [account lockunlock] [profile profilenamedefault]; ;<1>.查看當(dāng)前用戶的缺省表空間SQL>select username,default_tablespace from user_users;<2>生成用戶時(shí)指定缺省表空間create user 用戶名 identified by 口令; default;;;tablespace 表空間名;<3>重新指定用戶的缺省表空間 ;;alter user 用戶名 default tablespace 表空間名<4>查看當(dāng)前用戶的角色SQL>select * from user_role_privs;<5>查看當(dāng)前用戶的系統(tǒng)權(quán)限和表級(jí)權(quán)限SQL>select * from user_sys_privs;SQL>select * from user_tab_privs;<6>查看用戶下所有的表 ;;SQL>select * from user_tables;<7> alter user語(yǔ)句的quota子句限制用戶的磁盤空間 ;;如:alter user jf; quota 10M; on system;27、查看放在ORACLE的內(nèi)存區(qū)里的表;; ;SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;28、約束條件 create table employee (empno; number(10); primary key, namevarchar2(40) not null, deptno; number(2); default 10, salary; number(7,2); check; salary<10000, birth_date date, soc_see_num; char(9); unique, foreign key(deptno) references dept.deptno) tablespace users; 要害字(primary key)必須是非空,表中記錄的唯一性 not null; 非空約束 default缺省值約束 check;;檢查約束,使列的值符合一定的標(biāo)準(zhǔn)范圍 unqiue; 唯一性約束 foreign key 外部鍵約束29、查看創(chuàng)建視圖的select語(yǔ)句 ;SQL>set view_name,text_length from user_views; ;SQL>set long 2000;;;說明:可以根據(jù)視圖的text_length值設(shè)定set long 的大小 ;SQL>select text from user_views where view_name=upper('&view_name');30、查看同義詞的名稱 ;SQL>select * from user_synonyms;31、用Sql語(yǔ)句實(shí)現(xiàn)查找一列中第N大值 select * from (select t.*,dense_rank() over (order by sal) rank from employee) where rank = N;32 虛擬自段 <1>. CURRVAL 和 nextval 為表創(chuàng)建序列 CREATE SEQUENCE EMPSEQ ... ; SELECT empseq.currval FROM DUAL ; 自動(dòng)插入序列的數(shù)值 INSERT INTO emp VALUES (empseq.nextval, 'LEWIS', 'CLERK', 7902, SYSDATE, 1200, NULL, 20) ;<2>. ROWNUM ;按設(shè)定排序的行的序號(hào) ;SELECT * FROM emp WHERE ROWNUM < 10 ;<3>. ROWID ;返回行的物理地址 ;SELECT ROWID, ename FROM emp; WHERE deptno = 20 ;33、對(duì)CLOB字段進(jìn)行全文檢索SELECT * FROM A WHERE dbms_lob.instr(a.a,'K',1,1)>0;34. 非凡字符的插入,比如'&' insert into a values (translate ('at{&}t','at{}','at')); 35.表治理<1>.create a table sql> create table table_name (column datatype,column datatype]....) sql> tablespace tablespace_name [pctfree integer] [pctused integer] sql> [initrans integer] [maxtrans integer] sql> storage(initial 200k next 200k pctincrease 0 maxextents 50) sql> [loggingnologging] [cachenocache] ;<2>.copy an existing table sql> create table table_name [loggingnologging] as subquery <3> create table ... as 方式建表的時(shí)候,指定表參數(shù) create table a storage( initial 1M/*第一次創(chuàng)建時(shí)分配空間*/ next 1M;;;/*第一次分配的存儲(chǔ)空間用完時(shí)在分配*/ ) as; select * from b;<4>.創(chuàng)建臨時(shí)表sql> create global temporary table xay_temp as select * from xay; on commit preserve rows/on commit delete rows 在Oracle中,可以創(chuàng)建以下兩種臨時(shí)表: a 會(huì)話特有的臨時(shí)表:create global temporary table () on commit preserve rows;會(huì)話指定,當(dāng)中斷會(huì)話時(shí)ORACLE將截?cái)啾韇 事務(wù)特有的臨時(shí)表:create global temporary table () on commit delete rows;事務(wù)指定,每次提交后ORACLE將截?cái)啾恚▌h除全部行) c 說明 臨時(shí)表只在當(dāng)前連接內(nèi)有效 臨時(shí)表不建立索引,所以假如數(shù)據(jù)量比較大或進(jìn)行多次查詢時(shí),不推薦使用 數(shù)據(jù)處理比較復(fù)雜的時(shí)候時(shí)表快,反之視圖快點(diǎn) 在僅僅查詢數(shù)據(jù)的時(shí)候建議用游標(biāo): open cursor for 'sql clause';<5> pctfree = (average row size - initial row size) *100 /average row size pctused = 100-pctfree- (average row size*100/available data space) <6>.change storage and block utilization parameter sql> alter table table_name pctfree=30 pctused=50 storage(next 500k sql> minextents 2 maxextents 100); ;<7>.manually allocating extents sql> alter table table_name allocate extent(size 500k datafile 'c:/oracle/data.dbf'); <8>.move tablespace sql> alter table employee move tablespace users; <9>.deallocate of unused space sql> alter table table_name deallocate unused [keep integer] <10>.drop a column sql> alter table table_name drop column comments cascade constraints checkpoint 1000; alter table table_name drop columns continue; <11>.mark a column as unused sql> alter table table_name set unused column comments cascade constraints; alter table table_name drop unused columns checkpoint 1000; alter table orders drop columns continue checkpoint 1000 data_dictionary : dba_unused_col_tabs37. 中文是如何排序的? Oracle9i之前,中文是按照二進(jìn)制編碼進(jìn)行排序的。 在oracle9i中新增了按照拼音、部首、筆畫排序功能。設(shè)置NLS_SORT值 SCHINESE_RADICAL_M 按照部首(第一順序)、筆劃(第二順序)排序 SCHINESE_STROKE_M 按照筆劃(第一順序)、部首(第二順序)排序 SCHINESE_PINYIN_M 按照拼音排序 38. 數(shù)據(jù)表中的字段最大數(shù):表或視圖中的最大列數(shù)為 100039. oracle中的裸設(shè)備: 裸設(shè)備就是繞過文件系統(tǒng)直接訪問的儲(chǔ)存空間40. 在Oracle服務(wù)器上通過SQLPLUS查看本機(jī)IP地址 ? select sys_context('userenv','ip_address') from dual; 假如是登陸本機(jī)數(shù)據(jù)庫(kù),只能返回127.0.0.141. 在ORACLE中取毫秒? 9i之前不支持,9i開始有timestamp. 9i可以用select systimestamp from dual;42. 將N秒轉(zhuǎn)換為時(shí)分秒格式? set serverout on declare N number := 1000000; ret varchar2(100); begin ret := trunc(n/3600) '小時(shí)' to_char(to_date(mod(n,3600),'sssss'),'fmmi'分'ss'秒'') ; dbms_output.put_line(ret); end; 43、在某個(gè)用戶下找所有的索引 select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name from user_ind_columns, user_indexes where user_ind_columns.index_name = user_indexes.index_name and user_ind_columns.table_name = user_indexes.table_name order by user_indexes.table_type, user_indexes.table_name, user_indexes.index_name, column_position;44. not in的替代。 一般not in的效率比較低。非凡是數(shù)據(jù)量大的時(shí)候,幾乎不能執(zhí)行。 用下面幾種方式可以替換寫法 比如要查詢?cè)趂ee_rev_info表中已經(jīng)銷戶的用戶(不在cm_user中的)(不過下面的例子不是很好,因?yàn)閎ill_id是cm_user的唯一索引) select * from fee_rev_info where bill_id not in (select bill_id from cm_user) <1> 用not exists select * from fee_rev_info a where not exists (select 'p' from cm_user b where b.bill_id = a.bill_id) <2> 用外連接(+)select a.* from fee_rev_info a,cm_user bwhere a.bill_id = b.bill_id (+)and b.bill_id is null <3> 用hash_aj select /*+HASH_AJ*/* from fee_rev_info where bill_id not in (select bill_id from cm_user)45.怎么樣查詢非凡字符,如通配符%與_ 假如數(shù)據(jù)庫(kù)中有表 STATIONTYPE,STATION_571 STATION_572 ... select * from tab; where tname like 'STATION_%'會(huì)顯示 STATIONTYPE,STATION_571 ... 可以用下面的語(yǔ)句select * from tab; where tname like 'STATION_%' escape''46.假如存在就更新,不存在就插入可以用一個(gè)語(yǔ)句實(shí)現(xiàn)嗎9i已經(jīng)支持了,是Merge,但是只支持select子查詢,假如是單條數(shù)據(jù)記錄,可以寫作select .... from dual的子查詢。語(yǔ)法為:MERGE INTO tableUSING data_sourceON (condition)WHEN MATCHED THEN update_clauseWHEN NOT MATCHED THEN insert_clause;如MERGE INTO cm_user_credit; USING (select * from dual) ON (user_id =1302514690 )when MATCHED then update set credit_value = 1000when NOT MATCHED then insert (user_id,acc_id,bill_id,plan_id,region_code,credit_value) values(1302514690,1305032158,'13857141218',10070247,'571',1000);47.怎么實(shí)現(xiàn)一條記錄根據(jù)條件多表插入9i以上可以通過Insert all語(yǔ)句完成,僅僅是一個(gè)語(yǔ)句,如:INSERT ALLWHEN (id=1) THENINTO table_1 (id, name)values(id,name)WHEN (id=2) THENINTO table_2 (id, name)values(id,name)ELSEINTO table_other (id, name)values(id, name)SELECT id,nameFROM a;假如沒有條件的話,則完成每個(gè)表的插入,如INSERT ALLINTO table_1 (id, name)values(id,name)INTO table_2 (id, name)values(id,name)INTO table_other (id, name)values(id, name)SELECT id,nameFROM a;48.如何實(shí)現(xiàn)行列轉(zhuǎn)換<1>、固定列數(shù)的行列轉(zhuǎn)換如student subject grade---------------------------student1 語(yǔ)文 80student1 數(shù)學(xué) 70student1 英語(yǔ) 60student2 語(yǔ)文 90student2 數(shù)學(xué) 80student2 英語(yǔ) 100...轉(zhuǎn)換為 語(yǔ)文 數(shù)學(xué) 英語(yǔ)student1 80 70 60student2 90 80 100...語(yǔ)句如下:select student,sum(decode(subject,'語(yǔ)文', grade,null)) '語(yǔ)文',sum(decode(subject,'數(shù)學(xué)', grade,null)) '數(shù)學(xué)',sum(decode(subject,'英語(yǔ)', grade,null)) '英語(yǔ)'from tablegroup by student<2>、不定列行列轉(zhuǎn)換如c1 c2--------------1 我1 是1 誰(shuí)2 知2 道3 不...轉(zhuǎn)換為1 我是誰(shuí)2 知道3 不這一類型的轉(zhuǎn)換必須借助于PL/SQL來完成,這里給一個(gè)例子CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER) RETURN VARCHAR2 IS Col_c2 VARCHAR2(4000); BEGINFOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP Col_c2 := Col_c2cur.c2; END LOOP; Col_c2 := rtrim(Col_c2,1);RETURN Col_c2; END;/SQL> select distinct c1 ,get_c2(c1) cc2 from table;即可--例子:create table okcai_1(user_id varchar2(10),user_number varchar2(10),user_num number(8))user_id user_number user_num---------------------1;123 ;21;456 ;51;789 ;62;11; ;22;22; ;32;33; ;42;44; ;52;55; ;62;66; ;72;77; ;83;1234;13;5678;2方式一:create or replace function get_col( p_userId number, p_col;number) return varcharasv_tmp varchar2(255); begin select user_numberchr(9)user_num into v_tmp from (select user_number,user_num,rownum row_id from okcai_1 where user_id = p_userId) a where row_id = p_col; return ltrim(v_tmp); --return v_tmp;end;然后select distinct user_id,get_col(user_id,1),get_col(user_id,2),get_col(user_id,3) .... from okcai_1方式二:create or replace function get_col( p_userId number, p_col;number) return varcharasv_tmp varchar2(255);begin select user_numberchr(9)user_num into v_tmp from (select user_number,user_num,rownum row_id from okcai_1 where user_id = p_userId) a where row_id = p_col; return ltrim(v_tmp); --return v_tmp;end;select distinct user_id,get_col_new(user_id) from okcai_1;49.怎么設(shè)置存儲(chǔ)過程的調(diào)用者權(quán)限普通存儲(chǔ)過程都是所有者權(quán)限,假如想設(shè)置調(diào)用者權(quán)限,請(qǐng)參考如下語(yǔ)句create or replaceprocedure ...()AUTHID CURRENT_USERAsbegin...end;50.Oracle有哪些常見要害字具體信息可以查看v$reserved_words視圖51.怎么查看數(shù)據(jù)庫(kù)參數(shù)<1> show parameter 參數(shù)名如通過show parameter spfile可以查看9i是否使用spfile文件其中參數(shù)名是可以匹配的。比如show parameter cursor ,則會(huì)顯示跟cursor相關(guān)的參數(shù)<2>select * from v$parameter<3>除了這部分參數(shù),Oracle還有大量隱含參數(shù),可以通過如下語(yǔ)句查看:SELECT NAME ,VALUE ,decode(isdefault, 'TRUE','Y','N') as 'Default' ,decode(ISEM,'TRUE','Y','N') as SesMod ,decode(ISYM,'IMMEDIATE', 'I', 'DEFERRED', 'D', 'FALSE', 'N') as SysMod ,decode(IMOD,'MODIFIED','U', 'SYS_MODIFIED','S','N') as Modified ,decode(IADJ,'TRUE','Y','N') as Adjusted ,description FROM ( --GV$SYSTEM_PARAMETER SELECT x.inst_id as instance ,x.indx+1 ,ksppinm as NAME ,ksppity ,ksppstvl as VALUE ,ksppstdf as isdefault ,decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE') as ISEM ,decode(bitand(ksppiflg/65536,3), 1,'IMMEDIATE',2,'DEFERRED','FALSE') as ISYM ,decode(bitand(ksppstvf,7),1,'MODIFIED','FALSE') as IMOD ,decode(bitand(ksppstvf,2),2,'TRUE','FALSE') as IADJ ,ksppdesc as DESCRIPTION FROM x$ksppi x ,x$ksppsv y WHERE x.indx = y.indx AND substr(ksppinm,1,1) = '_' AND x.inst_id = USERENV('Instance') ) ORDER BY NAME52.怎樣建立基于函數(shù)索引8i以上版本,確保Query_rewrite_enabled=trueQuery_rewrite_integrity=trustedCompatible=8.1.0以上Create index indexname on table (function(field));53.怎么樣移動(dòng)表或表分區(qū)[A]移動(dòng)表的語(yǔ)法Alter table tablename move[Tablespace new_name Storage(initial 50M next 50M pctincrease 0 pctfree 10 pctused 50 initrans 2) nologging]移動(dòng)分區(qū)的語(yǔ)法alter table tablename move (partition partname)[update global indexes]之后之后必須重建索引Alter index indexname rebuild假如表有Lob段,那么正常的Alter不能移動(dòng)Lob段到別的表空間,而僅僅是移動(dòng)了表段,可以采用如下的方法移動(dòng)Lob段alter table tablename move lob(lobsegname) store as (tablespace newts);54.怎么樣修改表的列名[A]9i以上版本可以采用rname命令A(yù)LTER TABLE UserName.TabName RENAME COLUMN SourceColumn TO DestColumn9i以下版本可以采用create table …… as select * from SourceTable的方式。另外,8i以上可以支持刪除列了ALTER TABLE UserName.TabName SET UNUSED (ColumnName) CASCADE CONSTRAINTSALTER TABLE UserName.TabName DROP (ColumnName) CASCADE CONSTRAINTS55.case的用法在sql語(yǔ)句中CASE test_valueWHEN expression1 THEN value1[[WHEN expression2 THEN value2] [...]][ELSE default_value]END 比如1SELECT last_name, job_id, salary CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN 'ST_CLERK' THEN 1.15*salary WHEN 'SA_REP' THEN 1.20*salary ELSE salary END 'REVISED_SALARY'FROM employees; 比如2select case when; real_charge>=20000 and real_charge<30000 then 5000 when; real_charge>=30000 and real_charge<40000 then 9000 when; real_charge>=40000 and real_charge<50000 then 10000 when; real_charge>=50000 and real_charge<60000 then 14000 when; real_charge>=60000 and real_charge<70000 then 18000 when; real_charge>=70000 and real_charge<80000 then 19000 when; real_charge>=80000 and real_charge<90000 then 24000 when; real_charge>=90000 and real_charge<100000 then 27000;;;;; when; real_charge>=100000 and real_charge<110000 then 27000 when; real_charge>=110000 and real_charge<120000 then 29000;;;; when; real_charge>=120000;;;then 36000 ;;;;;else 0; end ,acc_id,user_id,real_charge from okcai_jh_charge_200505在存儲(chǔ)過程中 case v_strGroupClassCode when; '1'then v_nAttrNum := v_nAttrNum + 300; v_strAttrFlag := '1'substr(v_strAttrFlag,2,7); when; '2'then v_nAttrNum := v_nAttrNum + 200; v_strAttrFlag := '2'substr(v_strAttrFlag,2,7); else NULL; end case;注重的是存儲(chǔ)過程和sql語(yǔ)句有的細(xì)微差別是用end case,而不是end。語(yǔ)句后面跟';'
主站蜘蛛池模板: 民县| 泗洪县| 虎林市| 彰化县| 东方市| 巴马| 郓城县| 左权县| 方正县| 历史| 永清县| 禄劝| 和田县| 嵊泗县| 民和| 淮安市| 镇巴县| 新沂市| 翁源县| 禄劝| 张家港市| 米脂县| 霍州市| 宁城县| 南华县| 昌宁县| 沾益县| 昌邑市| 乌兰浩特市| 青海省| 黎平县| 全南县| 沿河| 合水县| 贵德县| 宁安市| 平顶山市| 广平县| 陵川县| 濮阳市| 罗平县|