資料庫 - 關係演算
關係演算
以數理邏輯中的謂詞演算為基礎
按謂詞變元不同 進行分類
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)區別詳解資料庫SQL
- 關係型資料庫之SQL資料庫SQL
- 關係型資料庫之索引資料庫索引
- redis—非關係型資料庫Redis資料庫
- 設計資料庫關係模型資料庫模型
- 資料庫入門之3張表對比關係型與非關係型資料庫資料庫
- 資料庫——關係型資料庫MySQL--簡單使用資料庫MySql
- 架構與資料庫的關係架構資料庫
- 資料庫的主外來鍵關係資料庫
- mysqlclient操作MySQL關係型資料庫MySqlclient資料庫
- SQLALchemy操作MySQL關係型資料庫MySql資料庫
- FastAPI(44)- 操作關係型資料庫ASTAPI資料庫
- Node MySQL打造關係型資料庫MySql資料庫
- 聊聊非關係型資料庫MongoDB索引資料庫MongoDB索引
- 資料庫的關係代數表示式資料庫
- nodejs之MongoDB 非關係型資料庫NodeJSMongoDB資料庫
- 反DDD模式之關係型資料庫模式資料庫
- SQL、Mysql、資料庫到底什麼關係MySql資料庫
- 平時常見關係型資料庫資料庫
- SQL與NoSQL(關係型與非關係型)資料庫的區別SQL資料庫
- 關係型資料庫分庫分表系列之一資料庫
- 雲關係型資料庫(Relational Database Service,RDS)資料庫Database
- 列舉常見的關係型資料庫和非關係型都有那些?資料庫
- 關係型和非關係型資料庫一定要對立?達夢資料提供新思路資料庫
- Polardb資料庫掛庫後,如何恢復主備關係資料庫
- 達夢資料庫如何解除主從關係資料庫
- 批量鎖(適用各種關係型資料庫)資料庫
- SQL Server 2016關係型資料庫概覽AZSQLServer資料庫
- 虛擬主機資料庫與空間關係資料庫
- 資料關係比較:相關性 vs 因果關係
- 如何將資料從Hadoop匯出到關係型和NoSQL資料庫?HadoopSQL資料庫
- 對資料結構和演算法的關係的理解資料結構演算法
- 資料結構與演算法之間有何關係?資料結構演算法