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語句速查有哪些
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中的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數據庫中多條件查詢語句怎么寫
1、首先需要打開一個oracle數據庫界面。
2、然后需要打開數據庫的一張表進行查詢。
3、然后需要選擇表右上角的加號鍵。
4、然后需要在編輯器中輸入如下代碼進行數據查詢。
5、然后需要點擊運行查看運行結果。
6、如圖所示為多條件查詢最終結果。
oracle 中的 sql語句查詢
1、
select emp.* from emp,(select deptno,avg(sal) avg1 from emp group by deptno)B where *=* and *>*1;
2、
select emp.*,*1 平均工資 from emp,(select deptno,avg(sal) avg1 from emp group by deptno)B where *=* and *>*1;
3、
select emp.* from emp,(select deptno,avg(sal) avg1 from emp group by deptno)B where *=*1;
4、
select A.*,B.* from
(select * from emp where empno=10)A,
(select * from emp where empno=(select mgr from emp where empno=10))B;
---
以上,希望對你有所幫助。
Oracle連接查詢和sql語句中的條件判斷有哪些
SELECT 1 UPLOAD, 0 SHENGJI, MR。
BUSI_ID, MASTER。PERSON_ID, MASTER。
ACNT_ID, MASTER。ID_NUM, MASTER。
NAME, MASTER。SEX, MR。
MIGRT_OUT_REGION, MR。OUT_OPERA_TIME, MR。
OUT_OPERA_ID, MR。IN_OPERA_TIME, MR。
MIGRATE_STATE, MR。MIGRT_IN_REGION, case when MR。
MIGRT_IN_REGION is null then '未選擇' else ARC。REGION_NAME end AS MIGRT_IN_REGION_NAME FROM ADPM_MIGRATE_CPA MASTER, ADPM_MIGRATE_INFO MR left join ADPM_REGION_CODE ARC on MR。
MIGRT_IN_REGION = ARC。REGION_CODE WHERE MASTER。
PERSON_ID = MR。PERSON_ID AND (MR。
MIGRATE_STATE = '10' OR MR。MIGRATE_STATE = '20' OR MR。
MIGRATE_STATE = '60'); SELECT 1 UPLOAD, 0 SHENGJI, MR。BUSI_ID, MASTER。
PERSON_ID, MASTER。ACNT_ID, MASTER。
ID_NUM, MASTER。 NAME, MASTER。
SEX, MR。MIGRT_OUT_REGION, MR。
OUT_OPERA_TIME, MR。OUT_OPERA_ID, MR。
IN_OPERA_TIME, MR。MIGRATE_STATE, MR。
MIGRT_IN_REGION, case when MR。MIGRT_IN_REGION is null then '未選擇' else ARC。
REGION_NAME end AS MIGRT_IN_REGION_NAME FROM ADPM_MIGRATE_CPA MASTER, ADPM_MIGRATE_INFO MR, ADPM_REGION_CODE ARC WHERE MASTER。 PERSON_ID = MR。
PERSON_ID AND (MR。MIGRATE_STATE = '10' OR MR。
MIGRATE_STATE = '20' OR MR。MIGRATE_STATE = '60') AND MR。
MIGRT_IN_REGION = ARC。 REGION_CODE(+);。
常用的oracle數據庫查詢語句是什么 -
1、-查看ORACLE表空間的使用情況直接使用情況: SELECT *PACE_NAME "表空間名字", * "狀態", (* / 1024 / 1024) as "總共多少M", ((* - DECODE(*, NULL, 0, *)) / 1024 / 1024) as "已經用了多少M", (DECODE(*, NULL, 0, *) / 1024 / 1024) as "剩余多少M", ((* - DECODE(*, NULL, 0, *)) / 1024 / 1024)/(* / 1024 / 1024) as "利用率", DECODE(sign(((* - DECODE(*, NULL, 0, *)) / 1024 / 1024)/(* / 1024 / 1024)-0.9),1,'剩余不到10%,請考慮擴表空間','正常') as "溫馨提示" FROM *_TABLESPACES D, *$TS_AVAIL A, *$TS_FREE F WHERE *PACE_NAME = *PACE_NAME AND *PACE_NAME (+) = *PACE_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\*' size 100M; --增加表空間原有數據文件尺寸 alter database datafile 'c:\oracle\ora81\oradata\\sid\*' resize 1000M; 4、查詢表空間大小 select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;。
轉載請注明出處華閱文章網 » oracle查詢語句