在数据库中,DDL(Data Definition Language,数据定义语言)和 DML(Data Manipulation Language,数据操作语言)有以下区别:
一、定义与作用
-
DDL:
- 主要用于定义数据库对象的结构,如创建、修改或删除数据库中的表、索引、视图等对象。
- 例如,使用 DDL 语句可以创建一个新表、添加一列到现有表、删除一个表或者修改表的结构。
-
DML:
- 用于对数据库中的数据进行操作,包括插入、更新、删除和查询数据等。
- 例如,使用 DML 语句可以向表中插入新记录、更新现有记录的值、删除特定的记录或者查询满足特定条件的记录。
二、具体语句类型
-
DDL 语句:
CREATE
:用于创建数据库对象。例如,CREATE TABLE students (id INT, name VARCHAR(50));
创建一个名为students
的表,包含id
和name
两个字段。ALTER
:用于修改数据库对象的结构。例如,ALTER TABLE students ADD COLUMN age INT;
向students
表中添加一个age
字段。DROP
:用于删除数据库对象。例如,DROP TABLE students;
删除students
表。
-
DML 语句:
INSERT
:用于向表中插入新数据。例如,INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20);
向students
表中插入一条记录。UPDATE
:用于更新表中的现有数据。例如,UPDATE students SET age = 21 WHERE name = 'Alice';
将名字为Alice
的学生的年龄更新为 21。DELETE
:用于从表中删除数据。例如,DELETE FROM students WHERE age < 18;
删除年龄小于 18 岁的学生记录。SELECT
:用于从表中查询数据。例如,SELECT * FROM students WHERE age > 20;
查询年龄大于 20 岁的学生记录。
三、影响范围与持久性
-
DDL 操作:
- 通常会对数据库结构产生永久性的影响,并且这些操作会被记录在数据库的日志中,以便在需要时进行恢复或回滚。
- 例如,删除一个表后,表中的所有数据和结构都将被永久删除,除非有备份可以恢复。
-
DML 操作:
- 主要影响数据库中的数据,而不是结构。
- 对数据的修改可以通过事务进行控制,可以回滚到操作之前的状态,如果出现错误或需要撤销操作。
四、执行权限要求
-
DDL 操作:
- 通常需要较高的数据库权限,因为这些操作会对数据库的结构产生重大影响。一般只有数据库管理员或具有特定权限的用户才能执行 DDL 操作。
-
DML 操作:
- 可以根据具体的业务需求分配给不同的用户,以允许他们对数据进行适当的操作。但通常也需要遵循一定的权限控制,以确保数据的安全性和完整性。
综上所述,DDL 和 DML 在数据库中分别用于定义数据库结构和操作数据,它们在作用、语句类型、影响范围和执行权限要求等方面都有明显的区别。