- Oracle 11g從入門到精通(第2版) (軟件開發視頻大講堂)
- 明日科技
- 2665字
- 2020-11-28 15:54:54
4.1 SQL語言簡介
視頻講解:光盤\TM\lx\4\ SQL語言簡介.mp4
SQL全稱是結構化查詢語言,英文譯作Structured Query Language,它是一種在關系型數據庫中定義和操縱數據的標準語言。最早是由IBM的圣約瑟研究實驗室為其關系數據庫管理系統SYSTEM R開發的一種查詢語言,當時稱為SEQUEL2,也就是目前的SQL語言。
1979年Oracle公司首先提供了商用的SQL語言,同年,IBM公司在DB2和SQL/DS數據庫系統中也采用了SQL語言。1986年10月,美國國家標準化組織(ANSI)采用SQL作為關系數據庫管理系統的標準語言(ANSI X3. 135-1986),后來SQL語言被國際標準化組織(ISO)采納為國際標準。
隨著數據庫技術的發展,SQL標準也在不斷地進行擴展和修正,數據庫標準委員會先后又推出了SQL-89、SQL-92及SQL-99標準。Oracle在后期的版本中將SQL-99標準集成到了Oracle 9i以后的數據庫中。目前,所有主要關系型數據庫管理系統都支持某個標準的SQL語言,其中大部分數據庫都遵守ANSI SQL-89標準。
4.1.1 SQL語言的特點
SQL是一種非過程化語言,能讓用戶不用考慮諸如數據的存儲格式和數據的存儲路徑等復雜問題就能按照自己的要求在高層數據結構上操作。SQL語句通常用于完成一些數據庫的操作任務,具有增加、刪除、修改、數據定義與控制等完整的數據庫操作功能。在數據應用程序開發過程中,巧妙地使用SQL語句,可以簡化編程,起到事半功倍的效果。
通過SQL語句,程序員或數據庫管理員可以進行如下的主要工作。
建立數據庫的表格,包括設置表格可以使用的空間。
改變數據庫系統環境設置。
針對某個數據庫或表格,授予用戶存取權限。
對數據庫表格建立索引值。
修改數據庫表格結構(新建、刪除或修改表格字段)。
對數據庫進行數據的新建。
對數據庫進行數據的刪除。
對數據庫進行數據的修改。
對數據庫進行數據的查詢。
SQL語言結構簡潔,功能強大,簡單易學,自從被國際標準化組織(ISO)采納為國際標準以后,SQL語言得到了廣泛的應用,它主要有以下特點。
(1)綜合統一。數據庫的主要功能是通過數據庫支持的數據語言來實現的。
(2)集合性。SQL運行用戶在高層的數據結構上工作,而不對單個記錄進行操作,可操作記錄集。所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許將一條SQL語句的結果作為另一條SQL語句的輸入。SQL不要求用戶指定對數據的存放方法。這種特性使用戶更易集中用戶于要得到的結果。不僅查找可以是集合,插入、刪除、更新也可以是元組。
(3)統一性。SQL為許多任務提供了統一的命令,這樣方便用戶學習和使用,基本的SQL命令只需很少時間就能學會,甚至最高級的命令也可以在幾天內掌握。數據庫的操作任務通常包括以下幾方面。
查詢數據。
在表中插入、修改和刪除記錄。
建立、修改和刪除數據對象。
控制對數據和數據對象的讀寫。
保證數據庫一致性和完整性。
(4)高度非過程化。SQL是一個非過程化的語言,不像其他的語言,如C、Pascal等,SQL沒有循環結構(比如if-then-else、do-while)以及函數定義等的功能。只提“做什么”,不必指明“怎么做”,用戶無須了解存取路徑及物理地址,這樣減輕用戶負擔,提高效率。因為它一次處理一個記錄,對數據提供自動導航。而且SQL只有一個數據類型的固定設置,換句話說,你不能在使用編程語言的時候創建你自己的數據類型。
存取路徑的選擇由DBMS的優化機制來完成,用戶不必使用循環結構就可以完成數據操作。
(5)語言簡單,易學易用。整個SQL語句只用9個命令動詞即可以實現對數據庫及數據的查詢和管理,SQL的命令動詞及其功能如表4.1所示。
表4.1 SQL的命令動詞及其功能

(6)以同一種語法結構提供兩種使用方式。第一種方式是交互式應答使用,即用戶在終端命令提示符下輸入SQL命令時數據庫服務器可以立即執行。第二種方式是通過預編譯SQL進行執行,即把SQL命令嵌入到應用程序中執行。
(7)是所有關系數據庫的公共語言。由于所有主要的關系數據庫管理系統都支持SQL,用戶可將使用SQL的部分從一個RDBMS轉到另一個,所有用SQL編寫的程序都是可移植的。
4.1.2 SQL語言的分類
SQL是關系型數據庫的基本操作語言,是數據庫管理系統與數據庫進行交互的接口。它將數據查詢、數據操縱、事務控制、數據定義和數據控制功能集于一身,而這些功能又分別對應著各自的SQL語言,具體如下。
1.數據查詢語言(DQL)
用于檢索數據庫中的數據,主要是SELECT語句,它在操作數據庫的過程中使用最為頻繁。
2.數據操縱語言(DML)
用于改變數據庫中的數據,主要包括INSERT、UPDATE和DELETE3條語句。其中,INSERT語句用于將數據插入到數據庫中,UPDATE語句用于更新數據庫中已經存在的數據,而DELETE語句則用于刪除數據庫中已經存在的數據。
3.事務控制語言(TCL)
用于維護數據的一致性,包括COMMIT、ROLLBACK和SAVEPOINT3條語句。其中,COMMIT語句用于提交對數據庫的更改,ROLLBACK語句用于取消對數據庫的更改,而SAVEPOINT語句則用于設置保存點。
4.數據定義語言(DDL)
用于建立、修改和刪除數據庫對象。比如,可以使用CREATE TABLE語句創建表;使用ALTER TABLE語句修改表結構;使用DROP TABLE語句刪除表。
5.數據控制語言(DCL)
用于執行權限授予和權限收回操作,主要包括GRANT和REVOKE兩條命令。其中,GRANT命令用于給用戶或角色授予權限,而REVOKE命令則用于收回用戶或角色所具有的權限。
4.1.3 SQL語言的編寫規則
SQL關鍵字不區分大小寫,既可以使用大寫格式,也可以使用小寫格式,或者大小寫格式混用。
【例4.1】 編寫以下3條語句,對關鍵字(SELECT和FROM)分別使用大寫格式、小寫格式或大小寫混用格式,代碼如下(實例位置:光盤\TM\sl\4\1)。
SQL> select empno, ename, sal from scott.emp; SQL> SELECT empno, ename, sal FROM scott.emp; SQL> selECT empno, ename, sal frOM scott.emp;
分別執行這3條SELECT語句,會發現結果完全相同。
對象名和列名不區分大小寫,它們既可以使用大寫格式,也可以使用小寫格式,或者大小寫格式混用。
【例4.2】 編寫以下3條語句,對表名和列名分別使用大寫格式、小寫格式或大小寫混用格式,代碼如下(實例位置:光盤\TM\sl\4\2)。
SQL> select empno, ename, sal from scott.emp; SQL> select EMPNO, ENAME, SAL from SCOTT.EMP; SQL> select emPNO, ename, sAL from scott.EmP;
分別執行這3條SELECT語句,會發現結果完全相同。
字符值區分大小寫。當在SQL語句中引用字符值時,必須給出正確的大小寫數據,否則不能得到正確的查詢結果。
【例4.3】 編寫以下兩條語句,查詢scott.emp表中職位是“銷售員”的記錄,要求兩條語句的查詢條件分別為“'SALESMAN'”和“salesman”,代碼如下。
SQL> select * from scott.emp where job='SALESMAN'; SQL> select * from scott.emp where job=salesman;
分別執行這兩條SELECT語句,會發現結果不相同,因為查詢條件是不相同的。
在SQL*Plus環境編寫SQL語句時,如果SQL語句較短,則可以將語句放在一行上顯示;如果SQL語句很長,為了便于用戶閱讀,則可以將語句分行顯示(并且Oracle會在除第一行之外的每一行前面自動加上行號),當SQL語句輸入完畢,要以分號作為結束符。
【例4.4】 檢索scott.emp表中職位是SALESMAN(銷售員)的記錄,并且分行編寫SQL語句,代碼如下(實例位置:光盤\TM\sl\4\3)。
SQL> select empno, ename, job 2 from scott.emp 3 where job='SALESMAN' 4 order by empno;
說明
在SQL*Plus環境中編寫較長的SQL語句時,按Enter鍵即可實現換行。但要注意,在按Enter鍵之前不要輸入分號,因為分號表示SQL語句的結束。
- C# 7 and .NET Core Cookbook
- Spring Boot開發與測試實戰
- FreeSWITCH 1.6 Cookbook
- PyTorch自然語言處理入門與實戰
- Mastering C# Concurrency
- Apache Karaf Cookbook
- Linux命令行與shell腳本編程大全(第4版)
- Hands-On Functional Programming with TypeScript
- 執劍而舞:用代碼創作藝術
- .NET 4.0面向對象編程漫談:應用篇
- Elasticsearch Blueprints
- Node.js 6.x Blueprints
- Java面向對象程序設計教程
- MySQL從入門到精通
- Python深度學習與項目實戰