Mysql中的DML

  1. 插入语句
--语法
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
--如果数据是字符型,必须使用单引号 ' 或者双引号 ",如: 'value1', "value1"。
--如果要插入所有列的数据,可以省略列名
INSERT INTO users VALUES (NULL,'test', 'test@runoob.com', '1990-01-01', true);
--如果要插入多行数据,可以在 VALUES 子句中指定多组数值:
INSERT INTO users (username, email, birthdate, is_active)
VALUES
  ('test1', 'test1@runoob.com', '1985-07-10', true),
  ('test2', 'test2@runoob.com', '1988-11-25', false),
  ('test3', 'test3@runoob.com', '1993-05-03', true);
  1. 更新语句:
--语法
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';
  1. 删除语句
--语法
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不能与索引视图一起使用。
posted @ 2024-05-02 14:37  Hanyta  阅读(2)  评论(0编辑  收藏  举报