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、-查看ORACLE表空間的使用情況直接使用情況: SELECT D。
TABLESPACE_NAME "表空間名字", D。STATUS "狀態", (A。
BYTES / 1024 / 1024) as "總共多少M", ((A。 BYTES - DECODE(F。
BYTES, NULL, 0, F。BYTES)) / 1024 / 1024) as "已經用了多少M", (DECODE(F。
BYTES, NULL, 0, F。BYTES) / 1024 / 1024) as "剩余多少M", ((A。
BYTES - DECODE(F。BYTES, NULL, 0, F。
BYTES)) / 1024 / 1024)/(A。BYTES / 1024 / 1024) as "利用率", DECODE(sign(((A。
BYTES - DECODE(F。 BYTES, NULL, 0, F。
BYTES)) / 1024 / 1024)/(A。BYTES / 1024 / 1024)-0。
9),1,'剩余不到10%,請考慮擴表空間','正常') as "溫馨提示" FROM SYS。DBA_TABLESPACES D, SYS。
SM$TS_AVAIL A, SYS。SM$TS_FREE F WHERE D。
TABLESPACE_NAME = A。TABLESPACE_NAME AND F。
TABLESPACE_NAME (+) = D。TABLESPACE_NAME; 2、查看oracle連接數 select count(*) from v$session --連接數 Select count(*) from v$session where status='ACTIVE' --并發連接數 alter system set processes = value scope = spfile;--重啟數據庫 修改連接 3、為表空間擴容 --為表空間增加數據文件 alter tablespace users add datafile 'c:\oracle\ora81\oradata\sid\user002。
dbf' size 100M; --增加表空間原有數據文件尺寸 alter database datafile 'c:\oracle\ora81\oradata\\sid\users。 dbf' resize 1000M; 4、查詢表空間大小 select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;。
Oracle的Sql語句必做哪些事
使用scott/tiger用戶下的emp表和dept表完成下列練習,表的結構說明如下 emp員工表(empno員工號/ename員工姓名/job工作/mgr上級編號/hiredate受雇日期/sal薪金/comm傭金/deptno部門編號) dept部門表(deptno部門編號/dname部門名稱/loc地點) 工資 = 薪金 + 傭金 1.列出至少有一個員工的所有部門 2.列出薪金比“SMITH”多的所有員工。
3.列出所有員工的姓名及其直接上級的姓名。 4.列出受雇日期晚于其直接上級的所有員工。
5.列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門。 6.列出所有“CLERK”(辦事員)的姓名及其部門名稱。
7.列出最低薪金大于1500的各種工作。 8.列出在部門“SALES”(銷售部)工作的員工的姓名,假定不知道銷售部的部門編號。
9.列出薪金高于公司平均薪金的所有員工。 10.列出與“SCOTT”從事相同工作的所有員工。
11.列出薪金等于部門30中員工的薪金的所有員工的姓名和薪金。 12.列出薪金高于在部門30工作的所有員工的薪金的員工姓名和薪金。
13.列出在每個部門工作的員工數量、平均工資和平均服務期限。 14.列出所有員工的姓名、部門名稱和工資。
16.列出所有部門的詳細信息和部門人數。 17.列出各種工作的最低工資。
18.列出MANAGER(經理)的最低薪金。 19.列出所有員工的年工資,按年薪從低到高排序。
Oracle數據庫sql語句
DML操作(insert , delete , update)之后,一定要使用commit或rollback命令來結束該事務,否則直接關閉SQL Plus,數據庫默認rollback之前未提交的事務,所以今天你在select的時候 會顯示未選定行。
而手動輸入commit,rollback 這類的命令,是顯示的提交事務(完成事務)。
如果在DML操作之后未及時顯示的提交,而是又進行了DDL操作(create alter。),則數據庫會隱式的提交之前未完成的事務。
所以 下次一定要注意哦~~
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語句是什么
1、查看表空間的名稱及大小 select t。
tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t。 tablespace_name = d。
tablespace_name group by t。tablespace_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, r。
status, (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v。curext CurExtent From dba_rollback_segs r, v$rollstat v Where r。
segment_id = v。usn(+) 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 A。
TABLESPACE_NAME,A。BYTES TOTAL,B。
BYTES USED, C。BYTES FREE, (B。
BYTES*100)/A。BYTES "% USED",(C。
BYTES*100)/A。BYTES "% FREE" FROM SYS。
SM$TS_AVAIL A,SYS。SM$TS_USED B,SYS。
SM$TS_FREE C WHERE A。TABLESPACE_NAME=B。
TABLESPACE_NAME AND A。TABLESPACE_NAME=C。
TABLESPACE_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、如何遠程判斷Oracle數據庫的安裝平臺 select * from v$version; 1 1、查看數據表的參數信息 SELECT partition_name, high_value, high_value_length, tablespace_name, pct_free, pct_used, ini_trans, max_trans, initial_extent, next_extent, min_extent, max_extent, pct_increase, FREELISTS, freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size, last_analyzed FROM dba_tab_partitions --WHERE table_name = :tname AND table_owner = :towner ORDER BY partition_position 1 2、查看還沒提交的事務 select * from v$locked_object; select * from v$transaction; 1 4、回滾段查看 select rownum, sys。 dba_rollback_segs。
segment_name Name, v$rollstat。extents Extents, v$rollstat。
rssize Size_in_Bytes, v$rollstat。xacts XActs, v$rollstat。
gets Gets, v$rollstat。waits Waits, v$rollstat。
writes Writes, sys。dba_rollback_segs。
status status from v$rollstat, sys。dba_rollback_segs, v$rollname where v$rollname。
name(+) = sys。dba_rollback_segs。
segment_name and v$rollstat。usn (+) = v$rollname。
usn order by rownum 1 5、捕捉運行很久的SQL column username format a12 column opname format a16 column progress format a8 select username,sid,opname, round(sofar*100 / totalwork,0) || '%' as progress, time_remaining,sql_text from v$session_longops , v$sql where time_remaining 0 and sql_address = address and sql_hash_value = hash_value / 16。 查看數據表的參數信息 SELECT partition_name, high_value, high_value_length, tablespace_name, pct_free, pct_used, ini_trans, max_trans, initial_extent, next_extent, min_extent, max_extent, pct_increase, FREELISTS, freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size, last_analyzed FROM dba_tab_partitions --WHERE table_name = :tname AND table_owner = :towner ORDER BY partition_position 17。
查找object為哪些進程所用 select p。spid, s。
sid, s。serial# serial_num, s。
username user_name, a。type object_type, s。
osuser os_user_name, a。 owner, a。
object object_name, decode(sign(48 - command), 1, to_char(command), 'Action Code #' || to_char(command) ) action, p。 program oracle_process, s。
terminal terminal, s。program program, s。
status session_status from v$session s, v$access a, v$process p where s。 paddr = p。
addr and s。type = 'USER' and a。
sid = s。sid and a。
object='SUBSCRIBER_ATTR' order by s。username, s。
osuser 18。 耗資源的進程(top session) select s。
schemaname schema_name, decode(sign(48 - command), 1, to_char(command), 'Action Code #' || to_char(command) ) action, status session_status, s。 osuser os_user_name, s。
sid, p。spid , s。
serial# serial_num, nvl(s。username, '[Oracle process]') user_name, s。
terminal terminal, s。 program program, st。
value criteria_value from v$sesstat st, v$session s , v$process p where st。sid = 。
Oracle數據庫SQLPLUS中幾個常用set語句是什么
SQL> set echo on—————————————————設置運行命令是是否顯示語句 SQL> set feedback on———————————————-設置顯示“已選擇XX行” SQL> set colsep | —————————————————設置列與列之間的分割符號 SQL> set pagesize 10———————————————–設置每一頁的行數 SQL> SET SERVEROUTPUT ON——————————-設置允許顯示輸出類似dbms_output。
putline SQL> set heading on————————————————設置顯示列名 SQL> set timing on————————————————–設置顯示“已用時間:XXXX” SQL> set time on—————————————————–設置顯示當前時間 SQL> set autotrace on———————————————–設置允許對執行的sql進行分析 00:38:28 SQL> set echo on 00:38:37 SQL> @E:echo。 sql 00:38:41 SQL> select status from v$datafile where rownum set echo off 00:38:58 SQL> @E:echo。
sql。
有一個Oracle中的SQL查詢語句的問題
雙表查詢:簡單說了仔細的說如下(也是簡單,還是你學學吧)select A。
CD,B。ID from A,B用select 先選擇a表的cd字段 b表的ID做為,兩個表的查詢依據,查出兩個表中所有CD,ID 兩個字段的內容那個from后面的a,b指的要查的表。
后面一句where a。cd=b。
cd(+)ad。
。是條件,也就是說符合a表。
cd標準的b表中的id字值和cd字同時為11的列表值。在意如此。
總的來說,是查一個固定ID排序值,其中B。ID(+)=11不是結果,B。
CD(+) AND B。 ID(+) = 11加起來滿足a。
cd才是結果。而這里的b。
id(+)=11是指定查詢,(這里是獨立理解,因為你這句中還有一個條件為B。CD(+) 其它他和B。
ID(+) 意思一樣如果這樣寫A。CD = B。
ID(+)ANDB。CD(+) = 11是一樣的,之后一個等號后面的是限制范圍。
(語文沒學好,不會表達,不好意思,如果看到我這句之后感覺更迷湖了,就拿刀砍我吧)。
oracle SQL查詢語句
SELECT LPAD(' ',(LEVEL-1)*3)||ename
FROM emp
START WITH ename='SMITH'
CONNECT BY PRIOR empno=mgr ;
SELECT ename
FROM emp
START WITH ename='SCOTT'
CONNECT BY PRIOR mgr=empno
ORDER BY LEVEL DESC ;
SELECT LPAD(' ',(LEVEL-1)*3)||ename
FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno=mgr ;
你問的是ORACLE中層次樹狀查詢,START WITH 。。 CONNECT BY 用法。
START WITH 指明樹的起點。至于是找上級還是下級(也就是你問的),關鍵就在于PRIOR的用
法。PRIOR的意思是前一個。
比如:START WITH ename='SMITH'
CONNECT BY PRIOR empno=mgr ;
的意思:ename='SMITH'表示樹的起點,即第一行
CONNECT BY PRIOR empno=mgr 表示上一行員工的編號是當前行的管理者,即找SMITH的下屬。
START WITH ename='SCOTT'樹的起點,即第一行
CONNECT BY PRIOR mgr=empno 表示上一行員工的管理員編號是當前員工的編號,即找SCOTT的上級及間接上級。
轉載請注明出處華閱文章網 » oracle數據庫語句