結構化查詢語言/資料操作語言
外觀
< 結構化查詢語言
資料操作語言用於修改資料庫中的記錄。它從不修改資料庫的模式(表特徵,關係,...)。它描述了三種語句:INSERT、UPDATE 和 DELETE。
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 <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 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 | |
現在,您可以使用現有的資料庫模式來處理您自己的資料。