oracle中常用的一些語句有哪些
1、Oracle中,每一條記錄都有一個rowid,rowid在整個數據庫中是唯一的, rowid確定了每條記錄是在ORACLE中的哪一個數據文件、塊、行上。
2、在重復的記錄中,可能所有列的內容都相同,但rowid不會相同,所以只要確定出重復記錄中 那些具有最大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。
oracle語句速查有哪些
1.1 建立表結構命令由于創建表的命令非常長,這里僅給出一些主要的部分,詳細的請參考《ORACLE8i SQL REFERENCE》 。
CREATE TABLE命令簡要語法如下: CREATE TABLE [USER.] table_name ( { COLUMN1 DATATYPE [DEFAULT EXPN] [COLUMN_CONSTRAINT] |TABLE_CONSTRAINT } [, { COLUMN1 DATATYPE [DEFAULT EXPN] [COLUMN_CONSTRAINT] | TABLE_CONSTRAINT }] 。 ) [CLUSTER CLUSTER (COLUMN1 [,COLUMN2] 。
) ] [PCTFREE N] [PCTUSED N] [INITRANS N] [MAXTRANS N] [STORAGE N] [TABLESPACE TABLESPACE] [ ENABLE | DISABLE] [ AS QUERY] 其中: schema包括基表的模式(缺省:當前用戶的帳號) table_name表名 column 列名(字段名),ORACLE7最多254列,ORACLE8可達1000個列。 datatype列數據類型 DEFAULT當前列的缺省值(常數) Column constraint列約束 Table_constraint表約束 PCTFREE用于更新(update)的空間百分比(1-99) 0表示在插入時完全填滿數據塊,缺省為10 PCTUSED 為表的每個數據塊保留的可用空間的最小百分比. 取值1-99,缺省為40。
PCTFREE和PCTUSED的組合決定了將插入的數據放入已存在的數據塊還是放入一個新的塊中。 INITRANS 指定一個在每一個數據塊中分配的事務入口的初始數1-255,缺省為1,每一個更新塊的事務都需要在塊中有一個事務入口(大小依OS),一般不需要指此參。
MAXTRANS 指定用于更新分配給表的數據塊的并發事務的最大數,1- 255,用戶一般不應改此參。
oracle查詢語句怎么寫
好像是標準SQL吧,就這么寫啊。不過大表可不能這么做哦,太占資源了。
補充:
Oracle里面有“+”的,不過我懷疑你是不是要拼兩個字符串。正統數據庫,包括Oracle和DB2拼接字符串都是采用雙豎線“||”,加號只能用于使兩個整型或者浮點型數值相加。
這需要看你的相關字段的類型的。如果是數值型,需要首先轉換為字符型,再合并,例如:
select * from a where to_char(col001)||to_char(col002) not in (select to_char(col001)||to_char(col002) from b)
如果是字符型,可以直接合并:
select * from a where col001||col002 not in (select col001||col002 from b)
如果是Date型,同樣轉換為字符,具體查手冊。
但是你這種寫法,怎么說呢,不太好把,首先這并不是嚴格按照你所描述的邏輯,舉例來說,如果表a字段是:"12","3",表b是:"1","23"那又會怎樣?另外,not in總是執行全表掃描,效率不高,這樣寫會好一些:
select a.* from a left join b on (*001 = *001 and *002 = *002) where *002 is null
Oracle導表語句有哪些
1,create table vincent_sms as select * from vincent_voice 創建一個表vincent_sms,其字段類型同vincent_voice完全一樣,并會把vincent_voice中的記錄也復制到vincent_sms表中去 注:select子句還可以加where限制條件 2, insert into vincent_sms select * from vincent_voice 將vincent_voice表中的記錄導入vincent_sms 表中 注:select子句還可以加where限制條件,如果vincent_sms 和vincent_voice表結構不一樣的話,當然可以指明字段的。
oracle維護常用語句有哪些
1、查看表空間的名稱及大小 select *pace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where *pace_name = *pace_name group by *pace_name; 2、查看表空間物理文件的名稱及大小 select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; 3、查看回滾段名稱及大小 select segment_name, tablespace_name, *, (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, * CurExtent From dba_rollback_segs r, v$rollstat v Where *t_id = *(+) order by segment_name ; 4、查看控制文件 select name from v$controlfile; 5、查看日志文件 select member from v$logfile; 6、查看表空間的使用情況 select sum(bytes)/(1024*1024) as free_space,tablespace_name from dba_free_space group by tablespace_name; SELECT *PACE_NAME,* TOTAL,* USED, * FREE, (**100)/* "% USED",(**100)/* "% FREE" FROM *$TS_AVAIL A,*$TS_USED B,*$TS_FREE C WHERE *PACE_NAME=*PACE_NAME AND *PACE_NAME=*PACE_NAME; 7、查看數據庫庫對象 select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status; 8、查看數據庫的版本 Select version FROM Product_component_version Where SUBSTR(PRODUCT,1,6)='Oracle'; 9、查看數據庫的創建日期和歸檔方式 Select Created, Log_Mode, Log_Mode From V$Database; 10、查看當前所有對象 SQL> select * from tab; 1 1、建一個和a表結構一樣的空表 SQL> create table b as select * from a where 1=2; SQL> create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2; 1 2、察看數據庫的大小,和空間使用情況 SQL> col tablespace format a20 SQL> select *_id 文件ID, *pace_name 表空間, *_name 物理文件名, * 總字節數, (*-sum(nvl(*,0))) 已使用, sum(nvl(*,0)) 剩余, sum(nvl(*,0))/(*)*100 剩余百分比 from dba_free_space a,dba_data_files b where *_id=*_id group by *pace_name,*_name,*_id,* order by *pace_name / dba_free_space --表空間剩余空間狀況 dba_data_files --數據文件空間占用情況 1 3、查看現有回滾段及其狀態 SQL> col segment format a30 SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS; 1 4、查看數據文件放置的路徑 SQL> col file_name format a50 SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; 1 5、顯示當前連接用戶 SQL> show user 1 6、把SQL*Plus當計算器 SQL> select 100*20 from dual; 1 7、連接字符串 SQL> select 列1||列2 from 表1; SQL> select concat(列1,列2) from 表1; 1 8、查詢當前日期 SQL> select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual; 1 9、用戶間復制數據 SQL> copy from user1 to user2 create table2 using select * from table1; 20、視圖中不能使用order by,但可用group by代替來達到排序目的 SQL> create view a as select b1,b2 from b group by b1,b2; 2 1、通過授權的方式來創建用戶 SQL> grant connect,resource to test identified by test; SQL> conn test/test。
oracle 語句都有什么
查詢語句-select * from table;
select * from table where 條件1=數值 and 條件2=數值;
select * from table where id in (select id from table);兩表關聯
select a.a,b.b,c.c from table1 a,table2 b,table3 c where *1=*2;
插入語句-insert into table (字段1,字段2,字段3,……)
values (數值1,數值2,數值3,……);
更新語句-update 表名 set 數值 where=id = 1;
添加列語句-alter table 表名
add (列名1 類型1,列名2 類型2,列名3 類型3,……);
查詢隨機20條記錄-select * from( select * from emp order by dbms_*) where rownum
轉載請注明出處華閱文章網 » oracle語句<>