數據庫第三章SQL語言總結

SQL     結構化查詢語言,是關係數據庫的標準語言。

SQL 的特點:綜合統一;高度非過程化;面向集合的操作方式;以同一種語法結構進行多種使用;語言簡潔,易學易用;

基本表 :

           本身獨立存在的表

           SQL中一個關係就對應一個基本表

           一個(或多個)基本表對應一個存儲文件

          一個表可以帶若干索引

存儲文件 :

          邏輯結構組成了關係數據庫的內模式

          物理結構對用戶是隱蔽的

視圖:

           從一個或幾個基本表導出的表

           數據庫中只存放視圖的定義而不存放視圖對應的數據

           視圖是一個虛表

          用戶可以在視圖上再定義視圖

 

學生-課程數據庫

學生-課程模式 S-T :         

學生表:Student(Sno,Sname,Ssex,Sage,Sdept)

 課程表:Course(Cno,Cname,Cpno,Ccredit)

  學生選課表:SC(Sno,Cno,Grade)    

SQL的數據定義功能:

模式定義

表定義

視圖和索引的定義

 

現代關係數據庫管理系統提供了一個層次化的數據庫對象命名機制

一個關係數據庫管理系統的實例(Instance)中可以建立多個數據庫

一個數據庫中可以建立多個模式

一個模式下通常包括多個表、視圖和索引等數據庫對象

模式定義

定義模式實際上定義了一個命名空間。 在這個空間中可以定義該模式包含的數據庫對象,例如基本表、視圖、索引等。

模式刪除

DROP SCHEMA <模式名> <CASCADE|RESTRICT>

CASCADE(級聯)

刪除模式的同時把該模式中所有的數據庫對象全部刪除

RESTRICT(限制)

如果該模式中定義了下屬的數據庫對象(如表、視圖等),則拒絕該刪除語句的執行。 僅當該模式中沒有任何下屬的對象時才能執行

定義基本表

<表名>:所要定義的基本表的名字

<列名>:組成該表的各個屬性(列)

<列級完整性約束條件>:涉及相應屬性列的完整性約束條件

<表級完整性約束條件>:涉及一個或多個屬性列的完整性約束條件

數據類型

SQL中域的概念用數據類型來實現

定義表的屬性時需要指明其數據類型及長度 選用哪種數據類型 取值範圍 要做哪些運算

模式與表的關係

每一個基本表都屬於某一個模式

一個模式包含多個基本表

定義基本表所屬模式

方法一:在表名中明顯地給出模式名 Create table"S-T".Student(......);  /*模式名爲 S-T*/ Create table "S-T".Cource(......); Create table "S-T".SC(......);

方法二:在創建模式語句中同時創建表 方法三:設置所屬的模式

修改基本表

ALTER TABLE <表名> [ ADD[COLUMN] <新列名> <數據類型> [ 完整性約束 ] ] [ ADD <表級完整性約束>] [ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ] [ DROP CONSTRAINT<完整性約束名>[ RESTRICT | CASCADE ] ] [ALTER COLUMN <列名><數據類型> ] ;

修改基本表

ADD子句用於增加新列、新的列級完整性約束條件和新的表級完整性約束條件

DROP COLUMN子句用於刪除表中的列 如果指定了CASCADE短語,則自動刪除引用了該列的其他對象 如果指定了RESTRICT短語,則如果該列被其他對象引用,關係數據庫管理系統將拒絕刪除該列

DROP CONSTRAINT子句用於刪除指定的完整性約束條件

ALTER COLUMN子句用於修改原有的列定義,包括修改列名和數據類型

刪除基本表

DROP TABLE <表名>[RESTRICT| CASCADE];

RESTRICT:刪除表是有限制的。 欲刪除的基本表不能被其他表的約束所引用 如果存在依賴該表的對象,則此表不能被刪除 CASCADE:刪除該表沒有限制。 在刪除基本表的同時,相關的依賴對象一起刪除

索引的建立與刪除

建立索引的目的:加快查詢速度

關係數據庫管理系統中常見索引:

順序文件上的索引

B+樹索引

 散列(hash)索引

位圖索引

特點:

B+樹索引具有動態平衡的優點

HASH索引具有查找速度快的特點

索引的建立

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);

<表名>:要建索引的基本表的名字

索引:可以建立在該表的一列或多列上,各列名之間用逗號分隔

<次序>:指定索引值的排列次序,

升序:ASC,降序:DESC。

缺省值:ASC

UNIQUE:此索引的每一個索引值只對應唯一的數據記錄

CLUSTER:表示要建立的索引是聚簇索引

數據字典

數據字典是關係數據庫管理系統內部的一組系統表,它記錄了數據庫中所有定義信息:

關係模式定義 視圖定義 索引定義 完整性約束定義 各類用戶對數據庫的操作權限 統計信息等

關係數據庫管理系統在執行SQL的數據定義語句時,實際上就是在更新數據字典表中的相應信息。

 

數據查詢

 SELECT [ALL|DISTINCT] <目標列表達式>[,<目標列表達式>] …    

   FROM <表名或視圖名>[,<表名或視圖名> ]…|

(SELECT 語句)[AS]<別名> [ WHERE <條件表達式> ] [ GROUP BY <列名1> [ HAVING <條件表達式> ] ] [ ORDER BY <列名2> [ ASC|DESC ] ];

SELECT子句:指定要顯示的屬性列

FROM子句:指定查詢對象(基本表或視圖)

WHERE子句:指定查詢條件

GROUP BY子句:對查詢結果按指定列的值分組,該屬性列值相等的元組爲一個組。通常會在每組中作用聚集函數。

HAVING短語:只有滿足指定條件的組才予以輸出

ORDER BY子句:對查詢結果表按指定列值的升序或降序排序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章