结构化查询语言/数据操作语言
外观
< 结构化查询语言
数据操作语言用于修改数据库中的记录。它从不修改数据库的模式(表特征,关系,...)。它描述了三种语句: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 |
现在,您可以使用现有的数据库模式来处理您自己的数据。