- 插入语句
--语法
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
--如果数据是字符型,必须使用单引号 ' 或者双引号 ",如: 'value1', "value1"。
--如果要插入所有列的数据,可以省略列名
INSERT INTO users VALUES (NULL,'test', '[email protected]', '1990-01-01', true);
--如果要插入多行数据,可以在 VALUES 子句中指定多组数值:
INSERT INTO users (username, email, birthdate, is_active)
VALUES
('test1', '[email protected]', '1985-07-10', true),
('test2', '[email protected]', '1988-11-25', false),
('test3', '[email protected]', '1993-05-03', true);
- 更新语句:
--语法
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
--可以同时更新一个或多个字段。
--可以在 WHERE 子句中指定任何条件。
--更新符合条件的所有行:
UPDATE students SET status = 'Graduated';
--更新使用子查询的值:
UPDATE customers
SET total_purchases = (
SELECT SUM(amount)
FROM orders
WHERE orders.customer_id = customers.customer_id
)
WHERE customer_type = 'Premium';
- 删除语句
--语法
DELETE FROM table_name
WHERE condition;
--如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
--可以在 WHERE 子句中指定任何条件
--使用子查询删除符合条件的行:
DELETE FROM customers
WHERE customer_id IN (
SELECT customer_id
FROM orders
WHERE order_date < '2023-01-01'
);
delete与truncate区别:
编号 | DELETE | TRUNCATE |
---|---|---|
1 | DELETE 命令用于删除指定的行(一个或多个)。 | TRUNCATE命令用于删除表中的所有行。 |
2 | DELETE是一个DML(数据操作语言)命令。 | TRUNCATE是一个 DDL(数据定义语言)命令。 |
3 | DELETE 命令中可能有一个 WHERE 子句,用于过滤记录。 | TRUNCATE 命令中可能没有 WHERE 子句。 |
4 | 在 DELETE 命令中,元组在删除之前被锁定。 | 在TRUNCATE命令中,数据页在删除表数据之前被锁定。 |
5 | DELETE 语句一次删除一个行,并在事务日志中为每个删除的行记录一个条目。 | TRUNCATE TABLE 通过解除分配用于存储表数据的数据页来移除数据,并且仅在事务日志中记录页解除分配。 |
6 | DELETE 命令比 TRUNCATE 命令慢。 | TRUNCATE 命令比 DELETE 命令快。 |
7 | 要使用删除,需要对表具有 DELETE 权限。 | 要在表上使用 TRUNCATE,我们至少需要表上的 ALTER 权限。 |
8 | 对表使用DELETE 语句后,列的标识保留标识。 | 如果表包含标识列,则标识该列将重置为其种子值。 |
9 | 删除可以与索引视图一起使用。 | TRUNCATE不能与索引视图一起使用。 |