通常group還和having聯(lián)用,比如查詢1門課以上不及格的學生,則按學號(sno)分類有:
select sno,count(*) from grades
where mark<60
group by sno
having count(*)>1
6.UNION聯(lián)合
合并查詢結(jié)果,如:
SELECT * FROM students
WHERE name like ‘張%’
UNION [ALL]
SELECT * FROM students
WHERE name like ‘李%’
7.多表查詢
a.內(nèi)連接
select g.sno,s.name,c.coursename
from grades g JOIN students s ON g.sno=s.sno
JOIN courses c ON g.cno=c.cno
(注意可以引用別名)
b.外連接
b1.左連接
select courses.cno,max(coursename),count(sno)
from courses LEFT JOIN grades ON courses.cno=grades.cno
group by courses.cno
左連接特點:顯示全部左邊表中的所有項目,即使其中有些項中的數(shù)據(jù)未填寫完全。
左外連接返回那些存在于左表而右表中卻沒有的行,再加上內(nèi)連接的行。
b2.右連接
與左連接類似
b3.全連接
select sno,name,major
from students FULL JOIN majors ON students.mno=majors.mno
兩邊表中的內(nèi)容全部顯示
c.自身連接
select c1.cno,c1.coursename,c1.pno,c2.coursename
from courses c1,courses c2 where c1.pno=c2.cno
采用別名解決問題。
d.交叉連接
select lastname+firstname from lastname CROSS JOIN firstanme
相當于做笛卡兒積
8.嵌套查詢
a.用關(guān)鍵字IN,如查詢李山的同鄉(xiāng):
select * from students
where native in (select native from students where name=’ 李山’)
b.使用關(guān)鍵字EXIST,比如,下面兩句是等價的:
select * from students
where sno in (select sno from grades where cno=’B2’)
select * from students where exists
(select * from grades where
grades.sno=students.sno AND cno=’B2’)
希望與更多計算機等級考試的網(wǎng)友交流,請進入計算機等級考試論壇
更多信息請訪問:考試吧計算機等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |