一、SQL概述
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統。
結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶瞭解具體的數據存放方式,所以具有完全不同底層結構的不同數據庫系統, 可以使用相同的結構化查詢語言作爲數據輸入與管理的接口。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。
SQL語言的精巧:僅有9個命令動詞,後擴充至10個。
二、SQL語言的特點
1.綜合統一
集數據定義語言(DDL),數據操縱語言(DML),數據控制語言(DCL)功能於一體。
可以獨立完成數據庫生命週期中的全部活動:
- 定義關係模式,插入數據,建立數據庫;
- 對數據庫中的數據進行查詢和更新;
- 數據庫重構和維護
- 數據庫安全性、完整性控制等
用戶數據庫投入運行後,可根據需要隨時逐步修改模式,不影響數據的運行。
數據操作符統一
2.高度非過程化
- 非關係數據模型的數據操縱語言“面向過程”,必須指定存取路徑
- SQL只要提出“做什麼”,無須瞭解存取路徑。
- 存取路徑的選擇以及SQL的操作過程由系統自動完成。
3.面向集合的操作方式
- 非關係數據模型採用面向記錄的操作方式,操作對象是一條記錄
- SQL採用集合操作方式:
① 操作對象、查找結果可以是元組的集合
②一次插入、刪除、更新操作的對象可以是元組的集合
4.以同一種語法結構提供多種使用方式
- SQL是獨立的語言
能夠獨立地用於聯機交互的使用方式 - SQL又是嵌入式語言
SQL能夠嵌入到高級語言(例如C,C++,Java)程序中,供程序員設計程序時使用
5.語言簡單,易學易用
語言簡潔,易學易用。儘管SQL的功能很強,但語言十分簡潔,核心功能只用了9個動詞。SQL的語法接近英語口語,所以,用戶很容易學習和使用。
SQL語言的動詞
SQL 功 能 | 動 詞 |
---|---|
數 據 查 詢 | SELECT |
數 據 定 義 | CREATE,DROP,ALTER |
數 據 操 縱 | INSERT,UPDATE,DELETE |
數 據 控 制 | GRANT,REVOKE
三、SQL語言基本概念
1.SQL支持關係數據庫三級模式結構
2.結構化查詢語言包含6個部分:
- 數據查詢語言(DQL:Data Query Language):
其語句,也稱爲“數據檢索語句”,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其它類型的SQL語句一起使用。 - 數據操作語言(DML:Data Manipulation Language):
其語句包括動詞INSERT、UPDATE和DELETE。它們分別用於添加、修改和刪除。 - 事務控制語言(TCL):
它的語句能確保被DML語句影響的表的所有行及時得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存點)命令、ROLLBACK(回滾)命令。 - 數據控制語言(DCL):
它的語句通過GRANT或REVOKE實現權限控制,確定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對錶單個列的訪問 - 數據定義語言(DDL):
其語句包括動詞CREATE,ALTER和DROP。在數據庫中創建新表或修改、刪除表(CREAT TABLE 或 DROP TABLE);爲表加入索引等。 - 指針控制語言(CCL):
它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用於對一個或多個表單獨行的操作。
查詢和更新指令構成了 SQL 的 DML 部分:
SELECT - 從數據庫表中獲取數據
UPDATE - 更新數據庫表中的數據
DELETE - 從數據庫表中刪除數據
INSERT INTO - 向數據庫表中插入數據
SQL 的數據定義語言 (DDL) 部分使我們有能力創建或刪除表格。我們也可以定義索引(鍵),規定表之間的鏈接,以及施加表間的約束。
SQL 中最重要的 DDL 語句:
CREATE DATABASE - 創建新數據庫
ALTER DATABASE - 修改數據庫
CREATE TABLE - 創建新表
ALTER TABLE - 變更(改變)數據庫表
DROP TABLE - 刪除表
CREATE INDEX - 創建索引(搜索鍵)
DROP INDEX - 刪除索引
3.數據庫中常用的概念
- 模式:
基本表的集合定義爲SQL模式。一個SQL模式(即"數據庫模式")由模式名和模式擁有者的用戶名或賬號來確定,幷包含模式中每一個元素(基本表、視圖、索引等)的定義。 - 表
- 索引
- 視圖
視圖與表的異同:
- 表只用物理空間而視圖不佔用物理空間,視圖只是邏輯概念的存在,表可以及時對它進行修改,但視圖只能有創建的語句來修改。
- 視圖是查看數據表的一種方法,可以查詢數據表中某些字段構成的數據,只是一些SQL語句的集合。從安全的角度說,視圖可以不給用戶接觸數據表,從而不知道表結構。
- 表屬於全局模式中的表,是實表;視圖屬於局部模式的表,是虛表。 聯繫:視圖(view)是在基本表之上建立的表,它的結構(即所定義的列)和內容(即所有數據行)都來自基本表,它依據基本表存在而存在。一個視圖可以對應一個基本表,也可以對應多個基本表。視圖是基本表的抽象和在邏輯意義上建立的新關係。
視圖可以在以下幾個方面使程序與數據獨立:
- 如果應用建立在數據庫表上,當數據庫表發生變化時,可以在表上建立視圖,通過視圖屏蔽表的變化,從而應用程序可以不動。
- 如果應用建立在數據庫表上,當應用發生變化時,可以在表上建立視圖,通過視圖屏蔽應用的變化,從而使數據庫表不動。
- 如果應用建立在視圖上,當數據庫表發生變化時,可以在表上修改視圖,通過視圖屏蔽表的變化,從而應用程序可以不動。
- 如果應用建立在視圖上,當應用發生變化時,可以在表上修改視圖,通過視圖屏蔽應用的變化,從而數據庫可以不動。