學習筆記——DB的SQL

一、SQL概述

1.特點

        結構化查詢語言(Structured Query Language,SQL)是關係數據庫的標準語言,也是一個通用的、功能極強的關係數據庫語言。其功能不僅僅是查詢,而是包括數據庫模式創建、數據庫數據的插入與修改、數據庫安全性完整性定義與控制等一系列功能。

        SQL集數據查詢(data query)、數據操縱(data manipulation)、數據定義(data definition)和數據控制(data control)功能於一體,其主要特點:

            1)綜合統一:數據庫系統的主要功能是通過數據庫支持的數據語言來實現的。語言風格統一。
            2)高度非過程化:用SQL進行數據操作時, 只要提出“做什麼” , 而無須指明“怎麼做” , 因此無須瞭解存取路徑。

                                     存取路徑的選擇以及SQL的操作過程由系統自動完成。大大減輕了用戶負擔,且有利於提高數據獨立性。

           3)面向集合的操作方式:都是針對集合操作。

           4)以同一種語法結構提供多種使用方式:SQL既是獨立的語言, 又是嵌入式語言。 

           5)語言簡潔,易學易用。

           

2.模式結構

        支持SQL的關係數據庫管理系統同樣支持關係數據庫三級模式結構。其中外模式包括若干視圖(view)和部分基本表(base table),模式包括若干基本表,內模式包括若干存儲文件(stored file)。

        用戶可以用SQL對基本表和視圖進行查詢或其他操作, 基本表和視圖一樣, 都是關係。

        基本表是本身獨立存在的表, 在關係數據庫管理系統中一個關係就對應一個基本表。一個或多個基本表對應一個存儲文件, 一個表可以帶若干索引, 索引也存放在存儲文件中。
        存儲文件的邏輯結構組成了關係數據庫的內模式。 存儲文件的物理結構對最終用戶是隱蔽的。

        視圖是從一個或幾個基本表導出的表。 它本身不獨立存儲在數據庫中, 即數據庫中只存放視圖的定義而不存放視圖對應的數據。 這些數據仍存放在導出視圖的基本表中, 因此視圖是一個虛表。 視圖在概念上與基本表等同, 用戶可以在視圖上再定義視圖。


二、學生—課程數據庫

以學生-課程數據庫爲例來學習SQL的數據定義、 數據操縱、 數據查詢和數據控制語句。

1.數據庫

首先要定義一個學生-課程模式S-T。

學生-課程數據庫中包括以下三個表:

                學生表: Student(Sno,Sname,Ssex,Sage,Sdept)
                課程表: Course(Cno,Cname,Cpno,Ccredit)
                學生選課表: SC(Sno,Cno.Grade)

                

2.數據定義

SQL的數據定義功能包括模式定義、 表定義、 視圖和索引的定義:

模式定義:CREATE SCHEMA<模式名> AUTHORIZATION <用戶名〉;

模式刪除:DROP SCHEMA 模式名xCASCADE | RESTRICT>; 其中CASCADE和RESTRICT兩者必選其一。選擇了 CASCADE (級聯),表示在刪除模 式的同時把該模式中所有的數據庫對象全部刪除;選擇了 RESTRICT (限制),表示如果該模式中已經定義了下屬的數據庫對象(如表、視圖等),則拒絕該刪除語句的執行。

基本表定義:建立一個“課程”表Course

CREATE TABLE Course

    (Cno CHAR(4) PRIMARY KEY,                   /*列級完整性約束條件,Cno是主碼*/

    Cname CHAR(40) NOT NULL,                   /*列級完整性約束條件,Cname不能取空值*/

    Cpno CHAR(4),                                           /* Cpno的含義是先修課*/

    Ccredit SMALLINT,

    FOREIGN KEY (Cpno) REFERENCES SC(Cno)  /*表級完整性約束條件,Cpno是外碼,被參照表是SC,被參照列是Cno */

    );

涉及的數據類型:

每一個基本表都屬於某一個模式,一個模式包含多個基本表。

數據字典是關係數據庫管理系統內部的一組系統表。關係數據庫管理系統在執行SQL的數據定義語句時, 實際上就是在更新數據字典表中的相應信息。 在進行查詢優化和查詢處理時, 數據字典中的信息是其重要依據。
3.數據查詢

1)基本使用

數據查詢是數據庫的核心操作。 SQL提供了 SELECT語句進行數據查詢, 該語句具有靈活的使用方式和豐富的功能。

如查詢計算機科學系全體學生的名單:   SELECT Sname FROM Student WHERE Sdept=‘CS’;

根據WHERE子句的條件表達式,從FROM子句指定的基本表、 視圖或派生表中,找出滿足條件的元組。
2)聚集函數

        如果指定DISTINCT短語,則表示在計算時要取消指定列中的重複值。 如果不指定DISTINCT短語或指定ALL短語(ALL爲默認值) , 則表示不取消重複值。

如查詢學生總人數:SELECT COUNT(*) FROM Student;
4.數據更新

數據更新操作有三種: 向表中添加若干行數據、 修改表中的數據和刪除表中的若干行數據。
1)INSERT:如將學生張成民的信息插入到Student表中:INSERT into Student VALUES('201215126','張成民','男',18, 'CS');

2)UPDATE:如將學生201215121的年齡改爲22歲:UPDATE Student SET Sage=22 WHERE Sno='201215121'

3)DELETE:如刪除學號爲201215128的學生記錄:DELETE FROM Student WHERE Sno='201215128';

三、視圖

       視圖是從一個或幾個基本表(或視圖) 導出的表。 它與基本表不同, 是一個虛表。 數據庫中只存放視圖的定義, 而不存放視圖對應的數據, 這些數據仍存放在原來的基本表中。所以一旦基本表中的數據發生變化, 從視圖中查詢出的數據也就隨之改變了。 從這個意義上講, 視圖就像一個窗口, 透過它可以看到數據庫中自己感興趣的數據及其變化。
       視圖一經定義, 就可以和基本表一樣被查詢、 被刪除。 也可以在一個視圖之上再定義新的視圖, 但對視圖的更新(增、 刪、 改) 操作則有一定的限制。
       作用:

       1)視圖能夠簡化用戶的操作:簡單清晰看數據,不用管具體的語句、存儲結構等

       2)視圖使用戶能以多種角度看待同一數據

       3)視圖對重構數據庫提供了一定程度的邏輯獨立性:數據庫重造,用戶程序不受影響。

       4)視圖能夠對機密數據提供安全保護:重要的數據不用出現在視圖上。

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