巢狀查詢
定義:1 .
指在乙個外層查詢中包含有另乙個內層查詢。其中外層查詢稱為主查詢,內層查詢稱為子查詢。
2 .sql
允許多層巢狀,由內而外地進行分析,子查詢的結果作為主查詢的查詢條件
3 .子查詢中一般不使用
order by
子句,只能對最終查詢結果進行排序
子查詢(sub query)
where
表示式[ not ] in (
子查詢)
where
表示式比較運算子
[ any|all ]
子查詢where [ not ] exists (
子查詢)
1 .子查詢-單值比較
返回單值子查詢,只返回一行一列
主查詢與單值子查詢之間用比較運算子進行連線:
運算子: > , >= , < , <= , = , <>
例:找出與太行同齡的同事
select * from company
where age = ( select age from company
where name = taihang)
2 .子查詢-
in 例:查詢選修了
『
001 』
課程的學生學號,姓名。
select id,name
from student
where id in ( select id
from taihang
where id = ' 001 ' )
3 .子查詢-多值比較
all多行一列
1 .父查詢與多值子查詢之間的比較需用
all來連線
2 .標量值
s比子查詢返回集
r中的每個都大時,
s >all ,r
為true
3 .all
表示所有
4 . >all , =all , <=all , <>all ,
注:all
等價於not in
例:找出年齡最小的學生
select * from student
where age
4 .子查詢-多值比較
some /any
1 .父查詢與多值子查詢之間的比較需用
some / any
來連線2 .
標量值s
比子查詢返回集
r中的某乙個都大時,
s > some時r
為true
或s > any時r
為true
3 .some
表示部分
4 . >some , >=some , =some , some ,
注:= some
等價於in, <> some
不等價於
not in .
例:找出不是最小年齡的學生
select * from student
where age > some ( select age from student)
5 .子查詢-存在判斷
exists
1 . exists
子查詢用來判斷該子查詢是否返回元組
2 .當子查詢的結果集非空時,
exists
為true
3 .當子查詢的結果集為空時,
exists
為false
4 .不關心子查詢的具體內容,因此用
select *
例:列出先修了
c01課程的學習的學號,姓名
select son,sname
from strdent
where exists ( select * from sc
where sc.sno = stusent.sno and
cno = ' c01 ' )
Oracle相關語句(三)
語法格式 select 列名1 as 別名1 列名2,列名n from 表名 where 條件 order by 列名1 asc desc,列名2 asc desc,範例 查詢部門10下的所有員工的empna,ename。select empno,ename from emp where deptn...
oracle相關操作SQL語句
一 選擇出oracle中的所有使用者 select from dba users 此語句可以查詢出,所有使用者的詳細資訊,包括使用者名稱 登陸密碼 預設表空間 預設臨時表空間 使用者建立的日期 使用者的id等等資訊 select from all users 此語句可以查詢出,所有使用者的使用者名稱...
oracle表空間相關語句
1 檢視表空間檔案 select from dba data files 2 檢視使用者的預設表空間 select username,default tablespace from dba users 3 檢視表空間大小 select t.tablespace name,round sum byte...