連線查詢:涉及多個表的查詢
連線謂詞:用來連線兩個表的條件
等值查詢:
select student.*,
sc.* from student,sc
where student.sno = sc.sno
巢狀查詢:
select sname from student where sno
in(select sno from sc where cno=『2』);
any 大於子查詢結果中的某個值查詢其他系中比資訊系任意乙個(其中某乙個)學生年齡小的學生姓名和年齡all 大於子查詢結果中的所有值
< any 小於子查詢結果中的某個值
< all 小於子查詢結果中的所有值
= any 大於等於子查詢結果中的某個值
= all 大於等於子查詢結果中的所有值
<= any 小於等於子查詢結果中的某個值
<= all 小於等於子查詢結果中的所有值
= any 等於子查詢結果中的某個值
=all 等於子查詢結果中的所有值(通常沒有實際意義)
!=(或<>)any 不等於子查詢結果中的某個值
!=(或<>)all 不等於子查詢結果中的任何乙個值
select sname,sage
from student
where sage < any (select sage
from student
where sdept= 』 is 『)
and sdept <> 』 is 』 ;
對上述條件採用集函式查詢那麼效率會更高一點
select sname,sage
from student
where sage < any (selectmin(sage)
from student
where sdept= 』 is 『)
and sdept <> 』 is 』 ;
帶有exists謂詞的子查詢
查詢至少選修了學生95002選修的全部課程的學生號碼。
解題思路:
用邏輯蘊函表達:查詢學號為x的學生,對所有的課程y,只要95002學生選修了課程y,則x也選修了y。
形式化表示:
用p表示謂詞 「學生95002選修了課程y」
用q表示謂詞 「學生x選修了課程y」
則上述查詢為: (任意y) (如果p則q)
不存在這樣的課程y,學生95002選修了y,而學生x沒有選。
用not exists謂詞表示:
select
distinct sno
from sc scx
where
notexists
(select *
from sc scy
where scy.sno = ' 95002 '
andnot
exists
(select *
from sc scz
where scz.sno=scx.sno and
scz.cno=scy.cno));
集合查詢:
並操作(union)
交操作(intersect)
差操作(minus)
查詢電腦科學系的學生及年齡不大於19歲的學生。
方法一:
select *
from student
where sdept= 『cs』
union
select *
from student
where sage<=19;
方法二:
select distinct *
from student
where sdept= 『cs』 or sage<=19;
標準sql中沒有提供集合交操作,但可用其他方法間接實現。
查詢電腦科學系的學生與年齡不大於19歲的學生的交集
本例實際上就是查詢電腦科學系中年齡不大於19歲的學生
select *
from student
where sdept= 『cs』 and
sage<=19;
查詢選修課程1的學生集合與選修課程2的學生集合的交集
本例實際上是查詢既選修了課程1又選修了課程2的學生
select sno
from sc
where cno=』 1 』 and sno in
(select sno
from sc
where cno=』 2 『);
標準sql中沒有提供集合差操作,但可用其他方法間接實現。
查詢電腦科學系的學生與年齡不大於19歲的學生的差集。
本例實際上是查詢電腦科學系中年齡大於19歲的學生
select *
from student
where sdept= 『cs』 and
sage>19;
查詢學生姓名與教師姓名的差集
本例實際上是查詢學校中未與教師同名的學生姓名
select distinct sname
from student
where sname not in
(select tname
from teacher);
(三)關聯式資料庫標準語言 SQL
sql命令的分類 建立資料庫 create database 資料庫名稱 或者 create database 資料庫名 default character set 字符集 collate 校對集 檢視已有的資料庫 show databases 使用已建立的資料庫 use 資料庫名稱 例子 crea...
資料庫複習 5 關聯式資料庫標準語言SQL
sql 結構化查詢語言,是關聯式資料庫的標準語言。sql是乙個通用的 功能極強的關聯式資料庫語言。結構化查詢語言sql是一種介於關係代數和關係演算之間的語言。sql的主要特點包括 一 綜合統一 使用者資料庫投入執行後,可根據需要隨時逐步修改模式,不影響資料的執行。資料操作符統一 二 高度非過程化 模...
資料庫系統概論 關聯式資料庫標準語言SQL(3)
sql的資料插入語句insert通常有兩種形式。一種是插入乙個元組,另一種是插入子查詢的結果。後者可以一次插入多個元組。一 插入元組 插入元組 insert into 表名 屬性列1 屬性列2 values 常量1 常量2 其功能是將新元組插入到指定的表中。如果insert子句沒有指明任何屬性列名,...