一、SQL簡介
結構化查詢語言(Structured QueryLanguage)簡稱SQL,是一種特殊目的的程式設計語言,是一種資料庫查詢和程式設計語言,用于存取資料以及查詢、更新和管理關系資料庫系統。
1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的關系資料庫系統SystemR上實作。
1980年10月,經美國國家标準局(ANSI)的資料庫委員會X3H2準許,将SQL作為關系資料庫語言的美國标準,同年公布了标準SQL,此後不久,國際标準化組織(ISO)也作出了同樣的決定。
注:除了标準SQL外,大部分關系型資料庫都有自己的私有擴充。
二、SQL功能
SQL功能的展現主要在于SQL語言,SQL按功能類型分以下6種語言,其中1-4條使用最多。
1、資料查詢語言(DQL:Data Query Language):其語句,也稱為“資料檢索語句”,用以從表中獲得資料,确定資料怎樣在應用程式給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其它類型的SQL語句一起使用。
2、資料操作語言(DML:Data Manipulation Language):其語句包括動詞INSERT、UPDATE和DELETE。它們分别用于添加、修改和删除。
3、資料控制語言(DCL):它的語句通過GRANT或REVOKE實作權限控制,确定單個使用者和使用者組對資料庫對象的通路。某些RDBMS可用GRANT或REVOKE控制對表單個列的通路。
4、資料定義語言(DDL):其語句包括動詞CREATE,ALTER和DROP。在資料庫中建立新表或修改、删除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。
5、指針控制語言(CCL):它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作。
6、事務控制語言(TCL):它的語句能確定被DML語句影響的表的所有行及時得以更新。包括COMMIT(送出)指令、SAVEPOINT(儲存點)指令、ROLLBACK(復原)指令。
三、SQL使用
- DDL:CREATE,ALTER和DROP
- CREATE(建立)
CREATE DATABASE 資料庫名;--建立資料庫
CREATE TABLE 表名稱(列名1 資料類型(資料長度),列名2 資料類型(資料長度),列名3 資料類型(資料長度));--建立資料表
資料類型 | 描述 |
integer(size) int(size) smallint(size) tinyint(size) | 僅容納整數。在括号内規定數字的最大位數。 |
decimal(size,d) numeric(size,d) | 容納帶有小數的數字。 'size" 規定數字的最大位數。" d " 規定小數點 |
char(size) | 容納固定長度的字元串( 可容納字母、數字以及特殊字元) 在括号中規定字元串的長度。 |
varchar(size) | 容納可變長度的字元串( 可容納字母、數字以及特殊字元) 在括号中規定字元串的最大長度 |
date(yyyymmdd) | 容納日期。 |
CREATE USER 使用者名 IDENTIFIED BY 密碼;--建立使用者
CREATE INDEX 索引名稱 ON 表名稱(列名稱);--建立索引
- ALTER(修改)
alter table 表名稱 add 列名稱 資料類型;--在某個表增加某個字段alter table 表名稱 drop column 列名稱;--删除某個表的某個字段alter table 表名稱 alter column 列名稱 資料類型;--修改某個字段的資料類型
- DROP(撤銷)
drop database 資料庫名稱;--删除資料庫drop table 表名稱;--删除表(表的結構、屬性以及索引也會删除)
- DML:SELECT、INSERT、UPDATE和DELETE
- SELECT(查詢)
SELECT 列名稱 FROM 表名稱;--查詢某個表中某些列值SELECT * FROM 表名稱;--查詢某個表中所有列的資料
- INSERT(插入)
INSERT INTO 表名稱 (列1,列2,列3,)VALUES (值1,值2,值3,);--向某個表的某些字段插入資料,注意列名稱要與值一一對應INSERT INTO 表名稱 VALUES (值1,值2,值3,);--向某個表的所有字段插入資料,同樣名稱要與值一一對應
- UPDATE(更新)
UPDATE 表名稱 SET 列名稱=新值;--更新某個表的某列的值,實際生産使用中常與WHERE子句同用,篩選一條或多條資料進行修改update 表名稱 set 列名稱=REPLACE(列名稱,'原字元','新字元');--更新某個表中某個字段的部分字元
- DELETE(删除)
delete from 表名稱;--删除某個表中資料,同樣生産使用中常與WHERE子句同用,篩選一條或多條資料進行删除
- DCL:GRANT或REVOKE
- GRANT(授予)
GRANT ON 表名[(列名)] TO ;GRANT ON FROM ;--授權
- REVOKE(回收)
REVOKE ON FROM ;--收回權限
- DQL:WHERE,ORDER BY,GROUP BY和HAVING
- WHERE(在某種情況下)
WHERE子句常與“增删改查”語句搭配作篩選資料用,通過運算符對比某個字段以此作為條件篩選部分資料進行其他操作;可以了解為條件語句,滿足條件的執行“增删改查”操作,不滿足條件的不進行“增删改查”操作。
常見運算符:
運算符 | 描述 |
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
like | 相似于(模糊查詢) |
between | 某個範圍内 |
-
ORDER BY(排序)
ORDER BY 關鍵字用于對結果集進行排序,ORDER BY DESCD倒序排列
SELECT * FROM 表名稱 ORDER BY 列名稱;--查詢表按某列進行排列SELECT * FROM 表名稱 ORDER BY 列名稱 DESC;--查詢表按某列進行倒序排列
-
GROUP BY(分組)
GROUP BY 語句用于結合聚合函數,根據一個或多個列對結果集進行分組
SELECT 列名稱 FROM 表名稱 GROUP BY 列名稱;--查詢某列所有不同值顯示
- HAVING
在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與聚合函數一起使用。
HAVING 子句可以讓我們篩選分組後的各組資料。
推薦書籍:《SQL基礎教程》,想要深入學習的朋友有機會可以看看