跳轉到內容

結構化查詢語言/資料操作語言

100% developed
來自華夏公益教科書,開放的書籍,面向開放的世界

← 資料查詢語言 | 資料定義語言 → 資料操作語言用於修改資料庫中的記錄。它從不修改資料庫的模式(表特徵,關係,...)。它描述了三種語句:INSERT、UPDATE 和 DELETE。

INSERT 語句

[編輯 | 編輯原始碼]

INSERT 語句的完整語法如下

INSERT INTO <table name>[ (<column name>[, <column name>]*)]
{
 VALUES (<value>[, <value>]*)
|
 SELECT [ALL | DISTINCT] <column name> [, [ALL | DISTINCT] <column name>]*
 FROM <table> [[AS | =] <alias> | [[FULL | LEFT | RIGHT] OUTER | INNER] JOIN <table> ON <expression>]
  [, <table> [[AS | =] <alias> | [[FULL | LEFT | RIGHT] OUTER | INNER] JOIN <table> ON <expression>]]*

 [WHERE <predicate> [{AND | OR} <predicate>]*]
 [GROUP BY <column name> [, <column name>]*
  [HAVING <predicate> [{AND | OR} <predicate>]]*]
 ]
 [ORDER BY <column name> [ASC | DESC] [, <column name> [ASC | DESC]]*]
 [LIMIT <count>]
};

INSERT 語句用於在表中新增新記錄(行)。例如,我們想新增一個新的聚會

  • 它的主鍵是 7,
  • 它的名稱是“面試”,
  • 它的描述是“與 SPENCER 先生會面”,
  • 它的優先順序是 B,
  • 它是已計劃的,
  • 它的日期是 2009 年 10 月 28 日,
  • 它的時間是 18:30:00,
  • 它的持續時間是 30,
  • 它的辦公室技術 ID 是 23,
  • 沒有 PDF 報告。


  • 語句之前的表格:
聚會
id_reunion 名稱 描述 優先順序 已計劃 日期 時間 持續時間 # id_office pdf_report
1 計劃 我們需要計劃這個專案。 A 1 2008-03-24 10:30:00 60 35 48644...846348
2 進度 我們已經做了什麼。 C 1 2008-05-12 14:00:00 30 13 9862...15676
3 變更 我們需要在專案中更改什麼。 B 1 2008-06-03 9:30:00 90 41 34876...4846548
4 演示 專案的演示。 D 0 2008-09-11 15:30:00 120 27
5 報告 向新入門者解釋。 B 1 2009-03-15 14:00:00 60 7 19739...37718
6 學習 已安裝新軟體版本。 B 1 2009-09-21 16:00:00 120 11 785278...37528
  • 查詢:
INSERT INTO reunion (id_reunion, name, description, priority, planned, date, hour, duration, id_office, pdf_report)
VALUES (7, 'Job interview', 'Meeting with Mr. SPENCER', B, 1, 2009-10-28, 18:30:00, 30, 23, NULL);
  • 語句之後的表格:
聚會
id_reunion 名稱 描述 優先順序 已計劃 日期 時間 持續時間 # id_office pdf_report
1 計劃 我們需要計劃這個專案。 A 1 2008-03-24 10:30:00 60 35 48644...846348
2 進度 我們已經做了什麼。 C 1 2008-05-12 14:00:00 30 13 9862...15676
3 變更 我們需要在專案中更改什麼。 B 1 2008-06-03 9:30:00 90 41 34876...4846548
4 演示 專案的演示。 D 0 2008-09-11 15:30:00 120 27
5 報告 向新入門者解釋。 B 1 2009-03-15 14:00:00 60 7 19739...37718
6 學習 已安裝新軟體版本。 B 1 2009-09-21 16:00:00 120 11 785278...37528
7 面試 與 SPENCER 先生會面 B 1 2009-10-28 18:30:00 30 23

INTO 子句包含要插入記錄的表名。它可以後跟括號中的列列表。VALUES 子句包含要插入的括號中的值。如果省略列名,則 VALUES 子句必須包含與表列數一樣多的值。這些值按與在表中宣告列的順序相同的順序插入表列中。如果列名被提及,則必須與值一樣多的列名。這些值分別插入到命名的列中。如果表中省略了一列,則插入 NULL 值。

VALUES 子句可以被內部 SELECT 語句替換。在這種情況下,INSERT 語句可以在表中插入多行。例如,我們想將所有優先順序為 B 的聚會計劃兩次,一年後

  • 語句之前的表格:
聚會
id_reunion 名稱 描述 優先順序 已計劃 日期 時間 持續時間 # id_office pdf_report
1 計劃 我們需要計劃這個專案。 A 1 2008-03-24 10:30:00 60 35 48644...846348
2 進度 我們已經做了什麼。 C 1 2008-05-12 14:00:00 30 13 9862...15676
3 變更 我們需要在專案中更改什麼。 B 1 2008-06-03 9:30:00 90 41 34876...4846548
4 演示 專案的演示。 D 0 2008-09-11 15:30:00 120 27
5 報告 向新入門者解釋。 B 1 2009-03-15 14:00:00 60 7 19739...37718
6 學習 已安裝新軟體版本。 B 1 2009-09-21 16:00:00 120 11 785278...37528
7 面試 與 SPENCER 先生會面 B 1 2009-10-28 18:30:00 30 23
  • 查詢:
INSERT INTO reunion (id_reunion, name, description, priority, planned, date, hour, duration, id_office)
SELECT id_reunion + max(id_reunion), name, description, priority, 1, date + 0001-00-00, hour, duration, id_office
FROM reunion
WHERE priority = 'B';
  • 語句之後的表格:
聚會
id_reunion 名稱 描述 優先順序 已計劃 日期 時間 持續時間 # id_office pdf_report
1 計劃 我們需要計劃這個專案。 A 1 2008-03-24 10:30:00 60 35 48644...846348
2 進度 我們已經做了什麼。 C 1 2008-05-12 14:00:00 30 13 9862...15676
3 變更 我們需要在專案中更改什麼。 B 1 2008-06-03 9:30:00 90 41 34876...4846548
4 演示 專案的演示。 D 0 2008-09-11 15:30:00 120 27
5 報告 向新入門者解釋。 B 1 2009-03-15 14:00:00 60 7 19739...37718
6 學習 已安裝新軟體版本。 B 1 2009-09-21 16:00:00 120 11 785278...37528
7 面試 與 SPENCER 先生會面 B 1 2009-10-28 18:30:00 30 23
10 變更 我們需要在專案中更改什麼。 B 1 2009-06-03 9:30:00 90 41
12 報告 向新入門者解釋。 B 1 2010-03-15 14:00:00 60 7
13 學習 已安裝新軟體版本。 B 1 2010-09-21 16:00:00 120 11
14 面試 與 SPENCER 先生會面 B 1 2010-10-28 18:30:00 30 23

UPDATE 語句

[編輯 | 編輯原始碼]

UPDATE 語句的完整語法如下

UPDATE <table name>
SET <column name> = <value>[, <column name> = <value>]*
WHERE <predicate> [{AND | OR} <predicate>]*;

UPDATE 語句用於修改表中已存在的記錄。UPDATE 子句後跟要更改行的表名。SET 子句後跟列名和值的組合。這些值將被插入到給定的列中。WHERE 子句包含謂詞。如果謂詞對現有行為真,則該行將被修改。

例如,我們想更改 ID 為 14 的聚會的日期、時間和描述


  • 語句之前的表格:
聚會
id_reunion 名稱 描述 優先順序 已計劃 日期 時間 持續時間 # id_office pdf_report
1 計劃 我們需要計劃這個專案。 A 1 2008-03-24 10:30:00 60 35 48644...846348
2 進度 我們已經做了什麼。 C 1 2008-05-12 14:00:00 30 13 9862...15676
3 變更 我們需要在專案中更改什麼。 B 1 2008-06-03 9:30:00 90 41 34876...4846548
4 演示 專案的演示。 D 0 2008-09-11 15:30:00 120 27
5 報告 向新入門者解釋。 B 1 2009-03-15 14:00:00 60 7 19739...37718
6 學習 已安裝新軟體版本。 B 1 2009-09-21 16:00:00 120 11 785278...37528
7 面試 與 SPENCER 先生會面 B 1 2009-10-28 18:30:00 30 23
10 變更 我們需要在專案中更改什麼。 B 1 2009-06-03 9:30:00 90 41
12 報告 向新入門者解釋。 B 1 2010-03-15 14:00:00 60 7
13 學習 已安裝新軟體版本。 B 1 2010-09-21 16:00:00 120 11
14 面試 與 SPENCER 先生會面 B 1 2010-10-28 18:30:00 30 23
  • 查詢:
UPDATE reunion
SET description = 'Meeting with Ms. JOHNSON', date = '2010-02-11', hour = '08:00:00'
WHERE id_reunion = '14';
  • 語句之後的表格:
聚會
id_reunion 名稱 描述 優先順序 已計劃 日期 時間 持續時間 # id_office pdf_report
1 計劃 我們需要計劃這個專案。 A 1 2008-03-24 10:30:00 60 35 48644...846348
2 進度 我們已經做了什麼。 C 1 2008-05-12 14:00:00 30 13 9862...15676
3 變更 我們需要在專案中更改什麼。 B 1 2008-06-03 9:30:00 90 41 34876...4846548
4 演示 專案的演示。 D 0 2008-09-11 15:30:00 120 27
5 報告 向新入門者解釋。 B 1 2009-03-15 14:00:00 60 7 19739...37718
6 學習 已安裝新軟體版本。 B 1 2009-09-21 16:00:00 120 11 785278...37528
7 面試 與 SPENCER 先生會面 B 1 2009-10-28 18:30:00 30 23
10 變更 我們需要在專案中更改什麼。 B 1 2009-06-03 9:30:00 90 41
12 報告 向新入門者解釋。 B 1 2010-03-15 14:00:00 60 7
13 學習 已安裝新軟體版本。 B 1 2010-09-21 16:00:00 120 11
14 面試 與 JOHNSON 女士會面 B 1 2010-02-11 08:00:00 30 23

DELETE 語句

[編輯 | 編輯原始碼]

DELETE 語句的完整語法如下

DELETE FROM <table name>
[WHERE <predicate> [{AND | OR} <predicate>]*];

DELETE 語句用於根據條件刪除表中的特定行。FROM 子句後跟要刪除行的表名。WHERE 子句包含謂詞。如果謂詞對某一行為真,則該行將被刪除。如果謂詞對所有行都為假,則該語句不做任何操作。不帶 WHERE 子句的 DELETE 語句會清空表。

例如,我們想刪除所有持續時間為兩小時的聚會


  • 語句之前的表格:
聚會
id_reunion 名稱 描述 優先順序 已計劃 日期 時間 持續時間 # id_office pdf_report
1 計劃 我們需要計劃這個專案。 A 1 2008-03-24 10:30:00 60 35 48644...846348
2 進度 我們已經做了什麼。 C 1 2008-05-12 14:00:00 30 13 9862...15676
3 變更 我們需要在專案中更改什麼。 B 1 2008-06-03 9:30:00 90 41 34876...4846548
4 演示 專案的演示。 D 0 2008-09-11 15:30:00 120 27
5 報告 向新入門者解釋。 B 1 2009-03-15 14:00:00 60 7 19739...37718
6 學習 已安裝新軟體版本。 B 1 2009-09-21 16:00:00 120 11 785278...37528
7 面試 與 SPENCER 先生會面 B 1 2009-10-28 18:30:00 30 23
10 變更 我們需要在專案中更改什麼。 B 1 2009-06-03 9:30:00 90 41
12 報告 向新入門者解釋。 B 1 2010-03-15 14:00:00 60 7
13 學習 已安裝新軟體版本。 B 1 2010-09-21 16:00:00 120 11
14 面試 與 JOHNSON 女士會面 B 1 2010-02-11 08:00:00 30 23
  • 查詢:
DELETE FROM reunion
WHERE duration = 120;
  • 語句之後的表格:
聚會
id_reunion 名稱 描述 優先順序 已計劃 日期 時間 持續時間 # id_office pdf_report
1 計劃 我們需要計劃這個專案。 A 1 2008-03-24 10:30:00 60 35 48644...846348
2 進度 我們已經做了什麼。 C 1 2008-05-12 14:00:00 30 13 9862...15676
3 變更 我們需要在專案中更改什麼。 B 1 2008-06-03 9:30:00 90 41 34876...4846548
5 報告 向新入門者解釋。 B 1 2009-03-15 14:00:00 60 7 19739...37718
7 面試 與 SPENCER 先生會面 B 1 2009-10-28 18:30:00 30 23
10 變更 我們需要在專案中更改什麼。 B 1 2009-06-03 9:30:00 90 41
12 報告 向新入門者解釋。 B 1 2010-03-15 14:00:00 60 7
14 面試 與 JOHNSON 女士會面 B 1 2010-02-11 08:00:00 30 23

現在,您可以使用現有的資料庫模式來處理您自己的資料。


華夏公益教科書