SQL 用關鍵字、表名、列名等組合而成的一條語句(SQL 語句)來描述操作的內容。關鍵字是指那些含義或使用方法已事先定義好的英語單詞,存在包含“對表進行查詢”或者“參考這個表”等各種意義的關鍵字。
根據對 RDBMS 賦予的指令種類的不同,SQL 語句可以分為以下三類。
DDL(Data Definition Language,數據定義語言)
DDL用來創建或者刪除存儲數據用的數據庫以及數據庫中的表等對象。DDL 包含以下幾種指令。
CREATE:創建數據庫和表等對象 DROP: 刪除數據庫和表等對象 -- 表刪除之后無法恢復。 ALTER: 修改數據庫和表等對象的結構 -- 表定義變更之后無法恢復。
--建庫
CREATE DATABASE <數據庫名稱>;
---------------------------------
--建表
CREATE TABLE <表名> (
<列名1> <數據類型> <該列所需約束>,
<列名2> <數據類型> <該列所需約束>,
<列名3> <數據類型> <該列所需約束>,
<列名4> <數據類型> <該列所需約束>,
...
<該表的約束1>, <該表的約束2>,……);
------------------------------------
--刪除表
DROP TABLE <表名>; -- 一般的RDBMS中刪除的表是無法恢復的
-----------------------------------
--添加列 添加一列|多列 注意不同的數據庫使用的語法不同
ALTER TABLE <表名> ADD COLUMN <列的定義>;
ALTER TABLE <表名> ADD (<列名>,<列名>,……);
示例:
--DB2|PostgreSQL|MySQL
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
--Oracle
ALTER TABLE Product ADD (product_name_pinyin VARCHAR2(100));
--SQL Server
ALTER TABLE Product ADD product_name_pinyin VARCHAR(100);
-- 修改表名
--Oracle|PostgreSQL
ALTER TABLE <表名> RENAME TO <新表名>;
DB2
RENAME TABLE <表名> TO <新表名>;
SQL Server
sp_rename '<表名>', '<新表名>';
MySQL
RENAME TABLE <表名> to <新表名>;
--刪除表中某列
ALTER TABLE <表名> DROP COLUMN (<列名>,<列名>,...);
字段約束 | 表約束參考:https://www.cnblogs.com/gzd1-sailoring/p/14827158.html
DML(Data Manipulation Language,數據操縱語言)
DML用來查詢或者變更表中的記錄。DML 包含以下幾種指令。
SELECT:查詢表中的數據 INSERT:向表中插入新數據 UPDATE:更新表中的數據 DELETE:刪除表中的數據
插入數據的兩種方式:
-- 一次只能添加一條數據
INSERT INTO <表名> VALUES (<對應的字段值>,<對應的字段值>,...);
-- 一次添加多行數據
INSERT INTO <表名> VALUES (<對應的字段值>,<對應的字段值>,...),(<對應的字段值>,<對應的字段值>,...),...;
-- 使用查詢的結果向表中添加數據
INSERT INTO <表名> as
select 語句;
select 語句中可以使用distinct 對結果進行去重。DISTINCT 關鍵字只能用在第一個列名之前。distinct去重的列應該放在第一列, 而且多個null值也會去重成一個。如果想實現多列去重效果,可以使用子查詢的方式,一次指定一個列進行去重。
DCL(Data Control Language,數據控制語言)
DCL 用來確認或者取消對數據庫中的數據進行的變更。除此之外,還可以對 RDBMS 的用戶是否有權限操作數據庫中的對象(數據庫表等)進行設定。DCL 包含以下幾種指令。
COMMIT: 確認對數據庫中的數據進行的變更 ROLLBACK:取消對數據庫中的數據進行的變更 GRANT: 賦予用戶操作權限 REVOKE: 取消用戶的操作權限
實際使用的 SQL 語句當中有 90% 屬於 DML
MySQL中的類型轉換,使用cast()函數可以強制轉換
【類型轉換參考鏈接】