Skip to content

DML表数据操作

DML 表数据操作

简介

DML(Data Manipulation Language)是数据库操作语言的一种,主要用于对数据库中的数据进行操作。DML 包括了对数据的查询、插入、更新和删除等操作,是对数据进行操作的集合。具体来说,DML 允许用户查询数据库中的数据、添加新数据、修改现有数据以及删除不再需要的数据。

DML 操作通常用于对数据库中的表进行操作,但不仅仅限于表的操作。例如,DML 还包括了查询操作,允许用户执行 SELECT 语句来检索表中的数据。DML 也用于处理存储过程和触发器中的数据操作。

DML 主要是对数据库中的数据进行操作,包括查询、插入、更新和删除等操作,是对数据进行操作的集合。

使用场景

  1. 数据检索:这是 DML 最常见的使用场景。用户可以使用 SELECT 语句来查询数据库中的数据,根据特定的条件检索出需要的信息。
  2. 数据插入:当有新数据需要存储在数据库中时,可以使用 INSERT 语句将数据插入到表中。这包括添加新记录或插入新的数据行。
  3. 数据更新:当表中的现有数据需要更改时,可以使用 UPDATE 语句来更新数据。这通常用于修改现有记录的值。
  4. 数据删除:当表中的数据不再需要时,可以使用 DELETE 语句来删除数据。这可以用于删除单个记录或多个记录。
  5. 事务处理:在数据库操作中,有时需要执行一系列的操作,并且这些操作要么全部成功,要么全部失败。DML 支持事务处理,通过 BEGIN TRANSACTIONCOMMITROLLBACK 等语句来控制和管理事务。
  6. 视图操作:虽然 DML 主要用于对表中的数据进行操作,但它也可以用于对视图进行操作。视图是基于表的虚拟表,可以通过 DML 来查询、插入、更新和删除视图中的数据。
  7. 触发器操作:在某些情况下,需要在执行某些 DML 操作之前、之后或在进行特定操作时自动执行一些操作。触发器是与表相关联的特殊类型的存储过程,可以在 DML 操作触发时自动执行。

插入

表数据插入语法

  • INTO 数据表名:指定被操作的数据表
  • (列名 1, 列名 2...):可选项,向数据表的指定列插入数据
  • VALUES(值 1, 值 2...):需要插入的数据
-- 插入数据
INSERT INTO 数据表名
(列名1, 列名2...)
VALUES(1, 2...);

插入完整参数

示例

-- 选择数据库
USE db1;
-- 创建 user 表
CREATE TABLE user(
  id INT,
  name VARCHAR(20),
  age INT,
  sex CHAR(1),
  address VARCHAR(40)
);

-- 插入一条完整数据,写出全部列名
INSERT INTO user (id,name,age,sex,address)
VALUES(1,'张三',20,'男','北京');

-- 插入一条完整数据,不写列名
INSERT INTO user
VALUES(2,'李四',22,'女','上海');

插入部分参数

-- 插入表一行中的某几列的值
INSERT INTO user (id,name,address)
VALUES(3,'王五','深圳');

插入多条记录

-- 一次插入多条数据
INSERT INTO user (id,name,address)
VALUES(4,'赵六','天津'),(5,'小红','成都'),(6,'小白','杭州');

注意事项

  1. 值与字段必须要对应,个数相同&数据类型相同
  2. 值的数据大小,必须在字段指定的长度范围内
  3. varchar char date 类型的值必须使用单引号包裹
  4. 如果要插入空值,可以忽略不写,或者插入 null
  5. 如果插入指定字段的值,必须要上写列名

修改

表数据修改语法

-- 更新表中数据
UPDATE 数据表名
SET 字段1=1 [, 字段2=2...]
[WHERE 条件表达式]
  • SET 子句:必选项,用于指定表中要修改的字段名及其字段值。其中的值可以是表达式,也可以是该字段所对应的默认值。如果指定默认值,那么使用关键字 DEFAULT 指定。
  • WHERE 子句:可选项,用于限定表中要修改的行,如果不指定该子句,那么 UPDATE 语句会更新表中的所有行。

不带条件的修改

-- 不带条件修改,将所有的性别改为女
UPDATE student SET sex = '女';

示例

-- 选择 db1 为当前数据库
USE db1;

-- 创建 student 表
CREATE TABLE student(
  id INT,
  name VARCHAR(20),
  sex CHAR(1),
  age TINYINT,
  city VARCHAR(50)
);

-- 插入 5 条数据
INSERT INTO student
VALUES(1,'小李','男', 18, '北京'),(2,'小白','女', 20, '成都'),(3,'小王','男', 23, '上海'),(4,'小赵','女', 21, '深圳'),(5,'小周','男', 25, '杭州');

删除

通过 DELETE 语句删除数据

DELETE FROM 数据表名
[WHERE 条件表达式]
  • 数据表名:用于指定要删除的数据表的表名。
  • WHERE 子句:可选项,用于限定表中要删除的行,如果不指定该子句,那么 DELETE 语句会删除表中的所有行。

通过 TRUNCATE TABLE 语句删除数据

TRUNCATE TABLE 数据表名

示例

-- 选择 db1 为当前数据库
USE db1;

-- 删除 id 为 1 的数据
DELETE FROM student WHERE id = 1;

删除整张表的方法

方法 1
-- 删除 student 表中所有数据
DELETE FROM student;

该方法是将表里每一条记录进行逐一删除,执行 N 次。

方法 2
# 数据准备
-- 创建 student 表
CREATE TABLE student(
  id INT,
  name VARCHAR(20),
  sex CHAR(1),
  age TINYINT,
  city VARCHAR(50)
);

-- 插入 5 条数据
INSERT INTO student
VALUES(1,'小李','男', 18, '北京'),(2,'小白','女', 20, '成都'),(3,'小王','男', 23, '上海'),(4,'小赵','女', 21, '深圳'),(5,'小周','男', 25, '杭州');

-- 删除 student 表中所有数据
TRUNCATE TABLE student;

该方法会先删除整张表,然后再重新创建一张一模一样的空白表。

总结

总的来说,DML 在数据库操作中发挥着核心作用,用于处理对数据的查询、插入、更新和删除等操作,是开发以数据为中心的应用程序时必须使用的指令集。