連接查詢??
1.等值連接? 連接符號為=?? 出現(xiàn)的列成為連接字段
2.非等值連接? 非=
3.交叉連接 (非限制連接) 不帶連接謂詞的連接。是兩個(gè)表中元組的交叉乘積。一般用來測試數(shù)據(jù)。select sno,cno from student,course;
4.自身連接?? 起別名,可以給同一個(gè)表起不同的名字,將一個(gè)表看作兩個(gè)表
select a.*,b.* from student a,sc b? where a.sno=b.sno;
5.外連接? 包括左外連接 left outer join、右外連接 right outer join、全外連接full outer join
左外連接? 左邊為主表 該表中的記錄全部會顯示,即使右邊沒有相關(guān)記錄
select student.*,sc.* from student left join sc on student.sno=sc.sno;
6.復(fù)合條件連接? 在where子句中有多個(gè)條件的查詢方式。
7.字符串條件查詢? 把列用字符連起來并進(jìn)行運(yùn)算。
子查詢
由內(nèi)到外查詢,其中不包含order by子句(order by只對查詢的最終結(jié)果排序)
分類
相關(guān)子查詢? 子查詢的查詢條件依賴外層父查詢的某個(gè)屬性值,反之為不相關(guān)子查詢。
單一行子查詢? 子查詢返回的結(jié)果值的數(shù)目為一個(gè)值,否者為多行子查詢。p80--84
量詞 exists? not exists
exists 內(nèi)層查詢結(jié)果非空,where子句返回真值(前面沒有列名、常量或其他表達(dá)式,只是為了測試是否存在符合子查詢中指定條件的行,不必列出列名)
select sname from stuednt where exists(select * from sc where sno=student.sno and cno='001');
not exists 內(nèi)層查詢結(jié)果非空,where子句返回假值