1、SQL是什么?它能做什么?
對數(shù)據(jù)庫進(jìn)行查詢和修改操作的語言叫做 SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)。SQL 語言是目前廣泛使用的關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言,是各種數(shù)據(jù)庫交互方式的基礎(chǔ)。
著名的大型商用數(shù)據(jù)庫 Oracle、DB2、Sybase、SQL Server,開源的數(shù)據(jù)庫 PostgreSQL、MySQL,甚至一些小型的數(shù)據(jù)庫 Access 等都支持 SQL。近些年蓬勃發(fā)展的 NoSQL 系統(tǒng)最初是宣稱不再需要 SQL 的,后來也不得不修正為 Not Only SQL,來擁抱 SQL。
SQL 是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。與其他程序設(shè)計(jì)語言(如 C語言、Java 等)不同的是,SQL 由很少的關(guān)鍵字組成,每個 SQL 語句通過一個或多個關(guān)鍵字構(gòu)成。
SQL 具有如下優(yōu)點(diǎn)。
- 一體化:SQL 集數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)控制于一體,可以完成數(shù)據(jù)庫中的全部工作。
- 使用方式靈活:SQL 具有兩種使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入C、C++、Fortran、COBOL、Java
等語言中使用。 - 非過程化:只提操作要求,不必描述操作步驟,也不需要導(dǎo)航。使用時只需要告訴計(jì)算機(jī)“做什么”,而不需要告訴它“怎么做”,存儲路徑的選擇和操作的執(zhí)行由數(shù)據(jù)庫管理系統(tǒng)自動完成。
- 語言簡潔、語法簡單:該語言的語句都是由描述性很強(qiáng)的英語單詞組成,而且這些單詞的數(shù)目不多。
SQL 包含以下 4 部分:
1)數(shù)據(jù)定義語言(Data Definition Language,DDL)
用來創(chuàng)建或刪除數(shù)據(jù)庫以及表等對象,主要包含以下幾種命令:
- DROP:刪除數(shù)據(jù)庫和表等對象
- CREATE:創(chuàng)建數(shù)據(jù)庫和表等對象
- ALTER:修改數(shù)據(jù)庫和表等對象的結(jié)構(gòu)
2)數(shù)據(jù)操作語言(Data Manipulation Language,DML)
用來變更表中的記錄,主要包含以下幾種命令:
- SELECT:查詢表中的數(shù)據(jù)
- INSERT:向表中插入新數(shù)據(jù)
- UPDATE:更新表中的數(shù)據(jù)
- DELETE:刪除表中的數(shù)據(jù)
3)數(shù)據(jù)查詢語言(Data Query Language,DQL)
用來查詢表中的記錄,主要包含 SELECT 命令,來查詢表中的數(shù)據(jù)。
4)數(shù)據(jù)控制語言(Data Control Language,DCL)
用來確認(rèn)或者取消對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行的變更。除此之外,還可以對數(shù)據(jù)庫中的用戶設(shè)定權(quán)限。主要包含以下幾種命令:
- GRANT:賦予用戶操作權(quán)限
- REVOKE:取消用戶的操作權(quán)限
- COMMIT:確認(rèn)對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行的變更
- ROLLBACK:取消對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行的變更
下面是一條 SQL 語句的例子,該語句聲明創(chuàng)建一個名叫 students 的表:
CREATE TABLE students (student_id INT UNSIGNED,name VARCHAR(30) ,sex CHAR(1),birth DATE,PRIMARY KEY(student_id) );該表包含 4 個字段,分別為 student_id、name、sex、birth,其中 student_id 定義為表的主鍵。
現(xiàn)在只是定義了一張表格,但并沒有任何數(shù)據(jù),接下來這條 SQL 聲明語句,將在 students 表中插入一條數(shù)據(jù)記錄:
INSERT INTO students (student_id, name, sex, birth) VALUES (41048101, '歪比巴卜', '1', '2013-02-14');執(zhí)行完該 SQL 語句之后,students 表中就會增加一行新記錄,該記錄中字段 student_id 的值為“41048101”,name 字段的值為“歪比巴卜”。sex 字段值為“1”,birth 字段值為“2013-02-14”。
再使用 SELECT 查詢語句獲取剛才插入的數(shù)據(jù),如下:
SELECT name FROM students WHERE student_id=41048101;上面簡單列舉了常用的數(shù)據(jù)庫操作語句,在這里留下一個印象即可,后面我們會詳細(xì)介紹這些知識。
注意:
SQL 語句不區(qū)分大小寫,許多 SQL 開發(fā)人員習(xí)慣對 SQL 本身的關(guān)鍵字進(jìn)行大寫,而對表或者列的名稱使用小寫,這樣可以提高代碼的可閱讀性和可維護(hù)性。本教程也按照這種方式組織 SQL 語句。大多數(shù)數(shù)據(jù)庫都支持通用的 SQL 語句,同時不同的數(shù)據(jù)庫具有各自特有的 SQL 語言特性。
拓展
標(biāo)準(zhǔn) SQL 是指符合國際標(biāo)準(zhǔn)的 SQL,而非某個數(shù)據(jù)庫廠商的 SQL 語法(如:Microsoft SQL Server 的 T-SQL,Oracle 的 PL/SQL,MySQL)。
標(biāo)準(zhǔn) SQL 可以在任何數(shù)據(jù)庫中使用,而數(shù)據(jù)庫廠商的 SQL 只適合它們對應(yīng)的數(shù)據(jù)庫,如 T-SQL 只適合 Microsoft SQL Server。
本教程講解的 SQL 是專門針對 MySQL 的,雖然多數(shù)語法也適用于其它 DBMS,但不是所有 SQL 語法都是完全可移植的。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的1、SQL是什么?它能做什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5、学MySQL前必须要了解的数据库专业
- 下一篇: 2、SQL的基本书写规则