DDL 主要用于定义数据库、表、视图、索引等数据库对象的结构
CREATE DATABASE database_name;
DROP DATABASE database_name;
USE database_name;
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
...
column... datatype constraint
);
DROP TABLE table_name;
用于快速删除表中的所有记录,同时保留表的结构。它不能进行条件删除,并且执行速度通常比delete
更快。
truncate table table_name;
DML 主要用于对数据库表中的数据进行插入、更新、删除和查询操作
ALTER TABLE
语句来为表增加一列信息在指定位置添加新列
如果你想将新列添加到表中指定的位置,可以使用 AFTER
或 FIRST
关键字。
AFTER
关键字AFTER
关键字:用于将新列添加到某个已有列之后。
ALTER TABLE table_name
ADD COLUMN column_name data_type [column_constraint]
AFTER existing_column;
示例:若要在 students
表的 name
列之后添加一个名为 phone
的列,数据类型为 VARCHAR(20)
,可使用以下语句:
ALTER TABLE students
ADD COLUMN phone VARCHAR(20)
AFTER name;
FIRST
关键字FIRST
关键字:用于将新列添加到表的第一列位置。
ALTER TABLE table_name
ADD COLUMN column_name data_type [column_constraint]
FIRST;
示例:若要在 students
表的开头添加一个名为 student_id
的列,数据类型为 INT
,可使用以下语句:
ALTER TABLE students
ADD COLUMN student_id INT
FIRST;
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...),
(value1, value2, ...),
(value1, value2, ...),
(value1, value2, ...);
SELECT * FROM table_name;
SELECT * FROM employees WHERE department = 'HR';
SELECT * FROM employees WHERE department = 'HR';
该语句从 employees
表中查询所有部门为 HR
的记录。
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
UPDATE employees
SET salary = 5500.00
WHERE name = 'John Doe';
此语句将 employees
表中名为 John Doe
的员工的工资更新为 5500.00。
用于从表中删除符合指定条件的记录。如果省略where
条件,将会删除表中的所有数据,但表结构依然保留。
DELETE FROM table_name
WHERE condition;
DCL 用于控制用户对数据库对象的访问权限
GRANT SELECT, INSERT ON students TO 'user1'@'localhost';
此语句授予用户 user1
(来自 localhost
)对 students
表的 SELECT
和 INSERT
权限。
REVOKE INSERT ON students FROM 'user1'@'localhost';
该语句撤销用户 user1
(来自 localhost
)对 students
表的 INSERT
权限。
TCL 用于管理数据库事务
START TRANSACTION;
该语句用于开始一个新的事务。
COMMIT;
此语句用于提交当前事务,将事务中所做的所有更改永久保存到数据库中。
ROLLBACK;
该语句用于回滚当前事务,撤销事务中所做的所有更改。
约束类型 | 描述 | 示例 | 作用 |
---|---|---|---|
主键约束(PRIMARY KEY) | 用于唯一标识表中的每一行记录,一个表只能有一个主键,且主键值不能为NULL |
sql |
保证表中记录的唯一性,可用于关联其他表,便于数据的快速检索和管理 |
唯一约束(UNIQUE) | 确保列中的值是唯一的,一个表可以有多个唯一约束,且唯一约束列可以有NULL 值(但只能有一个NULL 值) |
sql |
保证列值的唯一性,常用于如邮箱、身份证号等不能重复的字段 |
非空约束(NOT NULL) | 规定列的值不能为空,在插入或更新数据时,该列必须有值 | sql |
确保数据的完整性,防止重要信息缺失 |
外键约束(FOREIGN KEY) | 用于建立表与表之间的关联关系,外键列的值必须是关联表中主键列的值或为NULL |
sql |
维护表之间的数据一致性和完整性,确保相关联的数据在不同表中是有效的关联关系 |
检查约束(CHECK) | 用于限制列中值的范围或条件,确保插入或更新的数据满足特定的条件 | sql |
保证数据的有效性,防止不符合业务规则的数据插入表中 |
默认约束(DEFAULT) | 为列指定一个默认值,当插入数据时,如果没有为该列提供值,则使用默认值 | sql |
为列提供一个默认值,简化数据插入操作,避免因未提供值而导致的错误 |