數據庫期末簡答題-第三章


1.簡述SQL語言的特點

  • 綜合統一。SQL語言集數據定義語句(DDL)、數據操縱語言(DML)和數據控制語言(DCL)的功能於一體。
  • 高度非過程化。用SQL語言進行數據操作,只要提出“做什么”,而無須指明“怎么做”,因此無須了解存取路徑。存取路徑的選擇以及SQL語句的操作過程由系統自動完成。
  • 面向集合的操作方式。SQL語言采用集合操作方式,不僅操作對象、查找結果可以是元組的集合,而且一次插入、刪除更新操作的對象也可以是元組的集合。
  • 以同一種語法結構提供兩種使用方式。SQL語言既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用於聯機交互的使用方式,也能夠嵌入到高級語言程序中,供程序員設計程序時使用。
  • 語言簡潔,易學易用。

SQL可以分為數據定義、數據查詢、數據更新、數據控制四大部分。有時把數據更新稱為數據操縱,或把數據查詢與數據更新合稱為數據操縱。

2.列出表級約束或行級約束的幾個關鍵字,並解釋其含義

  • 用於定義表一級的完整性約束,一般包括:

    • PRIMARY KEY約束(復合屬性構成的主關鍵字說明)
    • FOREIGN KEY約束(外部關鍵字及參照關系說明)
    • CHECK約束(同時涉及到多個屬性的域完整性約束)
  • 用於定義列或字段一級的完整性約束,一般包括:

    • NOT NULL和NULL約束
    • PRIMARY KEY約束
    • UNIQUE約束
    • FOREIGN KEY約束
    • DEFAULT定義
    • CHECK約束

3.簡述索引的含義,並說明索引與ORDER BY的區別

  • 索引:對表中的記錄進行邏輯排序,加快檢索的速度。
  • ORDER BY:用來對查詢的結果進行排序。
  • 區別:???

4.寫出完整的SELECT語句的格式(課本P114)

SELECT [ALL|DISTINCT] <目標列表達式> [別名] [,<目標列表達式> [別名]]⋯
FROM <表名或視圖名> [別名] [,<表名或視圖名> [別名]]⋯ | (<SELECT 語句>) [AS] <別名>
[WHERE <條件表達式>]
[GROUP BY <列名1>] [HAVING <條件表達式>]
[ORDER BY <列名2> [ASC|DESC]];

目標列表達式的可選格式:(1)*(2)<表名>.*(3)COUNT([DISTINCT|ALL] *)(4)[<表名>.]<屬性列名表達式> [,[<表名>.]<屬性列名表達式>]⋯
<屬性列名表達式>可以由屬性列、作用於屬性列的聚集函數和常量的容易算數運算組成的運算公式。

5.說明WHERE子句中的<條件表達式>,與HAVING子句中的<組過濾表達式>的區別

  • WHERE用於在任何分組發生之前過濾記錄。
  • HAVING用於在組成為組后過濾值。只有組中的列或表達式才能包含在HAVING子句的條件中。

    where 不能放在GROUP BY 后面;
    HAVING 是跟GROUP BY 連在一起用的,放在GROUP BY 后面,此時的作用相當於WHERE;
    WHERE 后面的條件中不能有聚集函數,而HAVING 可以

6.給出組函數(聚集函數)與單值函數的區別

  • 組函數作用於一組數據,並對一組數據返回一個值。
  • 單值函數操作數據對象,只對一行進行變換,每行返回一個結果。
    (亂寫的不知道對不對)

7.視圖的作用;視圖的更新問題

  • 作用
    • 視圖能夠簡化用戶的操作。
    • 視圖使用戶能以多種角度看待同一數據。
    • 視圖對重構數據庫提供了一定程度的邏輯獨立性。
    • 視圖能夠對機密數據提供安全保護。
  • 更新問題:(具體見課本P126)
    • 基本表的行列子集視圖一般是可更新的。
    • 若視圖的屬性來自聚集函數、表達式,則該視圖肯定是不可以更新的。

    不可更新的視圖與不允許更新的視圖是兩個概念。前者指理論上以證明其是不可更新的視圖,后者指實際系統中不支持其更新,但它本身有可能是可更新的視圖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM