**数据操纵语言**（Data Manipulation Language, DML）是用於資料庫操作，對資料庫其中的物件和資料執行存取工作的編程語句，通常是資料庫專用編程語言之中的一個子集，例如在資訊軟體產業通行標準的SQL語言中，以`INSERT`、`UPDATE`、`DELETE`三種指令為核心，分別代表插入(意指新增或創建)、更新(修改)与删除(銷毀)。在使用資料庫的系統開發過程中，其中應用程式必然會使用的指令；而加上 SQL的`SELECT`语句，歐美地區的開發人員把這四種指令，以「CRUD」(分別為 Create, Retrieve, Update, Delete英文四字首字母縮略的術語)來稱呼；而亞洲地區使用漢語的開發人員，或可能以四個漢字：**增 查 改 刪** 來略稱。

語法結構
----

DML 的主要功能即是存取資料，因此其語法都是以讀取與寫入資料庫為主，除了`INSERT`以外，其他指令都可能需搭配`WHERE`指令來過濾資料範圍，或是不加`WHERE`指令來存取全部的資料。

### SELECT

条目：SELECT
SELECT是SQL資料操縱語言(DML)中用於查詢表格內欄位資料的指令，可搭配條件限制的子句(如where)或排列順序的子句(如order)來取得查詢結果。

基本格式有：

```
SELECT [ALL | DISTINCT] 欄位名 [,欄位名...]
 FROM 資料表名 [,資料表名...]
 [WHERE 篩選條件式]
 [GROUP BY 欄位名[,欄位名...]]
 [ORDER BY 欄位名[,欄位名...]]

```

  

### INSERT

条目：INSERT
INSERT 是將資料插入到資料庫物件中的指令，可以插入資料的資料庫物件有資料表以及可更新檢視表兩種。

基本格式有：

```
INSERT INTO [資料表或可更新檢視表物件名稱] (欄位1, 欄位2, 欄位3, ...) VALUES (值1, 值2, 值3, ...) -- 只需要根據指定的欄位來設定插入值。
INSERT INTO [資料表或可更新檢視表物件名稱] VALUES (值1, 值2, 值3, ...)　-- 必須要指定所有欄位的插入值。

```

例如：

```
INSERT INTO myTable (col1, col2, col3, col4, col5) VALUES (1, 2, 3, '4', '5')
INSERT INTO myTable VALUES (1, 2, 3, '4', '5')

```

### UPDATE

条目：UPDATE
UPDATE 指令是依給定條件，將符合條件的資料表中的資料更新為新的數值，其基本格式為：

```
UPDATE [資料表或可更新檢視表物件名稱] SET 欄1=值1, 欄2=值2, 欄3=值3, ... WHERE [指定條件]

```

例如：

```
UPDATE myTable SET Col1 = 3, Col2 = 5, Col4 = 5 WHERE Col0 = 198273

```

### DELETE

条目：DELETE
DELETE 指令為自資料庫物件中刪除資料的指令，基本語法為：

```
DELETE FROM [資料表或可更新檢視表名稱] WHERE [給定條件]
DELETE * FROM [資料表或可更新檢視表名稱] WHERE [給定條件] -- 部份資料庫需要加 "*" 才會生效，例如 Microsoft Access

```

例如：

```
DELETE FROM myTable WHERE col0 = 1918299

```

用戶介面的增查改刪功能
-----------

**CRUD**在多數用戶介面的應用程序，也是與系統相關的重要功能。 例如在通訊錄軟件中，基本儲存單元是單個聯絡人條目。一個通訊錄軟件最基本的功能，必須允許用戶可以操作：

* 添加或創建新的聯絡人條目
* 讀取，檢索，搜索或查看現有條目
* 更新或編輯現有條目
* 刪除現有條目

如果沒有這四個操作，該軟件或許不是完整的版本。由於這些操作很重要，它們通常在一個大的功能標題下記錄和描述，例如"聯絡人管理"，"內容管理"或"聯絡人維護"（或"文檔管理"），具體取決於基本存儲單元 特定的應用程序）。

参考文献
----

1. 完整的 SQL 中文參考網站
2. MySQL SQL Syntax （页面存档备份，存于）
3. Oracle® Database SQL Language Reference[]
4. Transact-SQL Reference （页面存档备份，存于）
5. PostgreSQL SQL Commands （页面存档备份，存于）


|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
数据库管理系统（DBMS） |
| --- |
|  |
| 概念 | 
* 数据库
	+ 理論
* 数据模型
* 数据库存储结构（英语：）
* 关系 (数据库)
* 关系模型
* 分布式数据库
* ACID
	+ 原子性（英语：）
	+ 一致性
	+ 隔離性
	+ 持久性
* Null值
* 数据库规范化
* 數據庫完整性
* 實體完整性
* 參照完整性
* 关系数据库管理系统
* 主键
* 外键
* 代理键
* 超键
* 候选键
* 事务处理
* 增刪查改

 |
|  |
| 数据库组件 | 
* 触发器
* 视图
* 数据库表
	+ 
	+
* 指标
* 事务日志（英语：）
* 数据库事务
* Savepoint
* 并发控制
* 乐观锁
* 悲观锁
* 数据库索引
* 存储程序
* 資料庫分割（英语：）

 |
|  |
| SQL | 

|  |  |
| --- | --- |
| 分类 | 
* 数据查询语言（DQL）
* 資料定義語言（DDL）
* 資料操縱語言（DML）
* 資料控制語言（DCL）

 |
|  |
| 指令 | 
* SELECT
* INSERT
* UPDATE
* MERGE
* DELETE
* JOIN
* UNION
* CREATE
* DROP
* Begin work
* COMMIT
* ROLLBACK
* TRUNCATE
* ALTER

 |
|  |
| 安全 | 
* 
* 參數化查詢

 |

 |
|  |
| 实现 | 

|  |  |
| --- | --- |
| 类型 | 
* 关系数据库
* 面向文檔的數據庫
* 平面文件数据库
* Deductive（英语：）
* 維度化資料庫
* 階層式
* 图数据库
* NoSQL
* NewSQL
* 对象数据库
* 物件關聯式資料庫（英语：）
* Temporal
* XML資料庫（英语：）

 |
|  |
| 数据库产品 | 
* 对象型
	+ 对比
* 关系型
	+ 对比

 |
|  |
| 数据库组件 | 
* 数据查询语言
* 查詢最佳化器（英语：）
* 查詢計畫（英语：）
* 嵌入式SQL
* ORM
* LINQ
* 数据访问层
* ODBC
* OLE DB
* ADO
* ADO.NET
* JDBC
* PDO

 |

 |

 |