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中的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是一樣的,之后一個等號后面的是限制范圍。
(語文沒學好,不會表達,不好意思,如果看到我這句之后感覺更迷湖了,就拿刀砍我吧)。
SQL查詢語句有哪些
查詢語句只有一種SELECT 。
FROM WHERE 。 (GROUP BY 。
ORDER BY 。)只是根據想要的結果不一樣,而查詢的內容會稍有修改。
比如FROM的表名,可以不是一張表,而是一個SELECT查詢的結果作為一張表。同樣,查詢統計分組匯總,可以增加SUM(), MIN(), MAX()等函數配合group by使用進行分組統計。
WHERE 條件除了簡單的連接之外,也有IN, NOT IN, EXISTS, NOT EXISTS等。還有,兩個SELECT集合可以使用UNION, UNION ALL, MINUS等進行集合的加或者減的操作。
總之如果是查詢,就離不開SELECT 。 FROM 。
WHERE。 這樣的基本形式。
常用的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;。
SQL查詢語句,高手進
--1、查詢“001”課程比“002”課程成績高的所有學生的學號;select * from (select sid,score from SC where Cid='1') Student,(select Sid,score from SC where Cid='2') Course--2、查詢平均成績大于60分的同學的學號和平均成績; select Sid,avg(score) from SC group by Sid having avg(score)>60--3、查詢所有同學的學號、姓名、選課數、總成績;select Sid,Sname,Cid,score from Student inner join SC on(*=*) inner join Course on (*=*)--4、查詢姓“李”的老師的個數;select count(*) from Teacher where Tname like '李%'--5、查詢沒學過“葉平”老師課的同學的學號、姓名;--select Sid,Sname from Student inner join SC on (*=*) inner join Course on(*=*) inner join Teacher on (*=*) where * is null--6、查詢學過“”并且也學過編號“”課程的同學的學號、姓名;select SID,Sname--7、查詢學過“葉平”老師所教的所有課的同學的學號、姓名;select Sid,Sname from Student where Sid in (select Sid from SC ,Course ,Teacher where *=* AND *=* AND *='葉平' group by Sid having count(*)=(select count(Cid) from Course,Teacher where *=* AND Tname='葉平'))--8、查詢課程編號“”的成績比課程編號“”課程低的所有同學的學號、姓名;--9、查詢所有課程成績小于60分的同學的學號、姓名;Select *,* from Student,SC where *=* and *<60--10、查詢沒有學全所有課的同學的學號、姓名; select *,* from Student,SC where *=* group by *,* having count(Cid) <(select count(Cid) from Course) 交個朋友吧!好在大家都是學程序的。
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吧,就這么寫啊。不過大表可不能這么做哦,太占資源了。
補充:
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
如何使用SQL查詢語句
一、 簡單查詢 簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。
它們分別說明所查詢列、查詢的表或視圖、以及搜索條件等。例如,下面的語句查詢testtable表中姓名為“張三”的nickname字段和email字段。
SELECT nickname,emailFROM testtableWHERE name='張三'(一) 選擇列表選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變量(包括局部變量和全局變量)等構成。 1、選擇所有列例如,下面語句顯示testtable表中所有列的數據:SELECT *FROM testtable 2、選擇部分列并指定它們的顯示次序查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。
例如:SELECT nickname,emailFROM testtable 3、更改列標題在選擇列表中,可重新指定列標題。定義格式為:列標題=列名列名 列標題如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列標題:SELECT 昵稱=nickname,電子郵件=emailFROM testtable 4、刪除重復行SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認為ALL。
使用DISTINCT選項時,對于所有重復的數據行在SELECT返回的結果集合中只保留一行。 5、限制返回的行數使用TOP n [PERCENT]選項限制返回的數據行數,TOP n說明返回n行,而TOP n PERCENT時,說明n是表示一百分數,指定返回的行數等于總行數的百分之幾。
例如:SELECT TOP 2 *FROM testtableSELECT TOP 20 PERCENT *FROM testtable(二)FROM子句 FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定:SELECT username,citytable。
cityidFROM usertable,citytableWHERE usertable。cityid=citytable。
cityid在FROM子句中可用以下兩種格式為表或視圖指定別名:表名 as 別名表名 別名(二) FROM子句FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。 在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定:SELECT username,citytable。
cityidFROM usertable,citytableWHERE usertable。cityid=citytable。
cityid在FROM子句中可用以下兩種格式為表或視圖指定別名:表名 as 別名表名 別名例如上面語句可用表的別名格式表示為:SELECT username,b。 cityidFROM usertable a,citytable bWHERE a。
cityid=b。cityidSELECT不僅能從表或視圖中檢索數據,它還能夠從其它查詢語句所返回的結果集合中查詢數據。
例如:SELECT a。au_fname+a。
au_lnameFROM authors a,titleauthor ta(SELECT title_id,titleFROM titlesWHERE ytd_sales>10000) AS tWHERE a。au_id=ta。
au_idAND ta。 title_id=t。
title_id此例中,將SELECT返回的結果集合給予一別名t,然后再從中檢索數據。
轉載請注明出處華閱文章網 » oraclesql查詢語句