數據庫系統 ##SQL語言複雜查詢

數據庫系統

SQL語言複雜查詢

IN/NOT IN

判斷元素是否在某一個集合中
select * from Student where Sname in('zhangsan','wangsi');
//非相關子查詢,內層select不依賴外側
select S#,Sname from Student where S# in (select S# from
    SC where C#='001');
//相關子查詢,外層字段能傳入內層作爲限定,
//等於對外層做一個循環判斷
select Sname from Student std where S# in( select S# 
    from SC where S#=std.S# and C#='001' );

SOME/ALL

條件對某一個集合部分/全部滿足
//全部課程都不及格的同學
select Sname from Student where 60>all (select Score from
    SC where S#=Student.S#);

EXISTS/NOT EXISTS

集合結果不/爲 空
用2個not exists來做:不存在..沒有=>全部 的轉換

聚集函數和結果計算

在select中用運算符或者
count,sum,max,min,avg來選出結果

GROUP BY和HAVING

集合運算

空值is null/not null

null表示不存在
null不能進行任何運算
null不滿足任何條件
除了count之外,聚集函數忽略null

表連接和ON

//笛卡爾積
select * from table1,table2 where table1.S#=table2.
        S#;
//內連接等於笛卡爾積用on來限定條件
select * from table1 inner join table2 on table1.S#=table2.
        S#;
//外連接,left/right標誌某張表元組全部出現
left outer join
right outer join
full outer join

視圖

基本表:定義的表,物理存儲
視圖:有基本表導出的結果,只存儲導出方式
使用:對用戶而言,視圖像表一樣使用即可
優勢:定義視圖實現單表查詢
更新:有些視圖是不可以更新的,如帶avg的,沒有主鍵的


create view view_name as (select * from Student
    where ..);
drop view view_name;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章