資料庫 - 關係演算
關係演算
以數理邏輯中的謂詞演算為基礎
按謂詞變元不同 進行分類
1.元組關係演算:
以元組變數作為謂詞變元的基本物件
元組關係演算語言ALPHA
2.域關係演算:
以域變數作為謂詞變元的基本物件
域關係演算語言QBE
由E.F.Codd提出
INGRES所用的QUEL語言是參照ALPHA語言研製的
語句
檢索語句
GET
更新語句
PUT,HOLD,UPDATE,DELETE,DROP
檢索操作
語句格式:
GET 工作空間名 [(定額)](表示式1)
[:操作條件] [DOWN/UP 表示式2]
定額:規定檢索的元組個數
格式: 數字
表示式1:指定語句的操作物件
格式:
關係名| 關係名. 屬性名| 元組變數. 屬性名| 集函式 [,… ]
操作條件:將操作結果限定在滿足條件的元組中
格式: 邏輯表示式
表示式2:指定排序方式
格式: 關係名. 屬性名| 元組變數. 屬性名[,… ]
(1)簡單檢索
GET 工作空間名 (表示式1)
[例1] 查詢所有被選修的課程號碼。
GET W (SC.Cno)
[例2] 查詢所有學生的資料。
GET W (Student)
格式
GET 工作空間名(表示式1):操作條件
[例3]查詢資訊系(IS)中年齡小於20歲的學生的學號和年齡
GET W (Student.Sno,Student.Sage):
Student.Sdept='IS'∧ Student.Sage<20
格式
GET 工作空間名(表示式1)[:操作條件]
DOWN/UP 表示式2
[例4]查詢電腦科學系(CS)學生的學號、年齡,結果按年齡降
序排序
GET W (Student.Sno,Student.Sage):
Student.Sdept='CS‘ DOWN Student.Sage
格式
GET 工作空間名(定額)(表示式1)
[:操作條件] [DOWN/UP 表示式2]
[例5] 取出一個資訊系學生的學號。
GET W (1) (Student.Sno):
Student.Sdept='IS'
[例6] 查詢資訊系年齡最大的三個學生的學號及其年齡,結果按年齡降序排序。
GET W (3) (Student.Sno,Student.Sage):
Student.Sdept='IS' DOWN Student.Sage
用元組變數的檢索
元組變數的含義
表示可以在某一關係範圍內變化(也稱為範圍變數Range Variable)
元組變數的用途
① 簡化關係名:設一個較短名字的元組變數來代替較長的關係名。
② 操作條件中使用量詞時必須用元組變數。
定義元組變數
格式:RANGE 關係名 變數名
一個關係可以設多個元組變數
用存在量詞的檢索
操作條件中使用量詞時必須用元組變數
[例8] 查詢選修2號課程的學生名字。
RANGE SC XGET W (Student.Sname): X(X.Sno=Student.Sno∧X.Cno='2')
[例9] 查詢選修了這樣課程的學生學號,其直接先行課是6號課程。
RANGE Course CX
GET W (SC.Sno):
CX (CX.Cno=SC.Cno∧CX.Pcno='6')
[例10]查詢至少選修一門其先行課為6號課程的學生名字
RANGE Course CX
SC SCX
GET W (Student.Sname): SCX (SCX.Sno=Student.Sno∧
CX (CX.Cno=SCX.Cno∧CX.Pcno='6'))
前束正規化形式:
GET W (Student.Sname):
SCXCX (SCX.Sno=Student.Sno∧
CX.Cno=SCX.Cno∧CX.Pcno='6')
帶有多個關係的表示式的檢索
[例11] 查詢成績為90分以上的學生名字與課程名字。
RANGE SC SCX
GET W(Student.Sname,Course.Cname):
SCX (SCX.Grade≥90 ∧
SCX.Sno=Student.Sno∧
Course.Cno=SCX.Cno)
用全稱量詞的檢索
[例12] 查詢不選1號課程的學生名字
RANGE SC SCX
GET W (Student.Sname):
SCX (SCX.Sno≠Student.Sno∨SCX.Cno≠'1')
用存在量詞表示:
RANGE SC SCX
GET W (Student.Sname):
SCX (SCX.Sno=Student.Sno∧SCX.Cno='1')
用兩種量詞的檢索
[例13] 查詢選修了全部課程的學生姓名。
RANGE Course CX
SC SCX
GET W (Student.Sname):
CX SCX (SCX.Sno=Student.Sno∧
SCX.Cno=CX.Cno)
用蘊函(Implication)的檢索
[例14] 查詢最少選修了200215122學生所選課程的學生學號
RANGE Couse CX
SC SCX
SC SCY
GET W (Student.Sno): CX(SCX
(SCX.Sno=‘200215122'∧SCX.Cno=CX.Cno) SCY(SCY.Sno=Student.Sno∧ SCY.Cno= CX.Cno))
聚集函式
[例15] 查詢學生所在系的數目。
GET W ( COUNT(Student.Sdept) )
COUNT函式在計數時會自動排除重複值。
[例16] 查詢資訊系學生的平均年齡
GET W (AVG(Student.Sage):
Student.Sdept='IS’ )
相關文章
- 關係型資料庫與非關係型資料庫介紹!資料庫
- NoSQL:從關係型資料庫到非關係型資料庫SQL資料庫
- 關係型資料庫資料庫
- 關係型資料庫和非關係型資料庫的區別資料庫
- 關係型資料庫,何以稱為“關係”資料庫
- OO資料庫和關係型資料庫資料庫
- PostgreSQL關係型資料庫SQL資料庫
- 關係型資料庫概要資料庫
- 關係型資料庫原理資料庫
- 資料庫 - 關係代數與關係運算資料庫
- 關係型資料庫和非關係型資料庫的簡單對比資料庫
- 資料庫多對多表關係資料資料庫
- 非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解資料庫SQL
- 設計資料庫關係模型資料庫模型
- 關係型資料庫之SQL資料庫SQL
- 關係型資料庫之索引資料庫索引
- 關係型資料庫的理解資料庫
- 關係型資料庫理論資料庫
- 非關係型資料庫:Cassandra資料庫
- NoSQL資料庫探討 -- 非關係型資料庫SQL資料庫
- 例項,資料庫,資料字典與資料庫建立的關係資料庫
- 資料庫入門之3張表對比關係型與非關係型資料庫資料庫
- 關係型資料庫和非關係型資料庫介紹及優劣勢比較資料庫
- 資料庫——關係型資料庫MySQL--簡單使用資料庫MySql
- 資料庫的主外來鍵關係資料庫
- SQLALchemy操作MySQL關係型資料庫MySql資料庫
- mysqlclient操作MySQL關係型資料庫MySqlclient資料庫
- 架構與資料庫的關係架構資料庫
- FastAPI(44)- 操作關係型資料庫ASTAPI資料庫
- Node MySQL打造關係型資料庫MySql資料庫
- 資料庫中主庫和從庫的關係資料庫
- 資料檔案大小和資料庫的關係資料庫
- 關係型資料庫:使用正規化建立資料庫(轉)資料庫
- 平時常見關係型資料庫資料庫
- 聊聊非關係型資料庫MongoDB索引資料庫MongoDB索引
- SCN與資料庫恢復的關係資料庫
- 第二篇:資料庫關係建模資料庫
- 分析資料庫的依賴關係(轉)資料庫