> 文档中心 > 【MySQL】DML 操作表中的数据

【MySQL】DML 操作表中的数据

目录

一、插入记录

二、更新表记录

三、删除表记录


DML一般指数据操纵语言。 数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句

一、插入记录

语句 描述
insert [into] 表名 [字段名] values (字段值) 插入一条表记录
insert into 表名 (字段名 1, 字段名 2, …) values (值 1, 值 2, ...); 插入全部字段,所有的字段名都写出来
insert into 表名 values (值 1, 值 2, …); 插入全部字段,不写字段名,如果表名后,不定义列名,则默认给所有列添加值
insert into 表名 (字段名 1, 字段名 2, ...) values (值 1, 值 2, ...), (值 1, 值 2, ...); 插入多条数据
insert into 表名 set 字段1=值1, 字段2=值2, ...; mysql的方言语法
ignore 会让insert只插入数据库不存在的记录
insert [ignore] into 表名....; 如果插入某一行有冲突的话,则插入没有冲突的行

列名和值要一一对应,除了数字类型,其他类型需要使用引号(单双都可以)引起来,没有添加数据的字段会使用 NULL。

-- 插入所有的列,向学生表中insert into student (id,name,age,sex) values (1, '孙悟空', 20, '男');insert into student (id,name,age,sex) values (2, '孙悟天', 16, '男');-- 向表中插入所有字段-- 插入所有列insert into student values (3, '孙悟饭', 18, '男', '龟仙人洞中');-- 如果只插入部分列,必须写列名insert into student values (3, '孙悟饭', 18, '男');

二、更新表记录

语句 描述
update [ignore] 表名 set 字段1=值1, 字段2=值2, ... [where 条件1 ...] [order by ...] [limit ...]; 更新一个或多个字段
update 表名 set 字段名=值;  不带条件修改数据,修改所有的行
update 表名 set 字段名=值 where 字段名=值; 带条件修改数据
update 表1 join 表2 on 条件 set 字段1=值1, 字段2=值2, ... ; 修改多张表的记录
update 表1, 表2 set 字段1=值1, 字段2=值2, ... where 条件... ; 表内连接语法
update 表1 [ lift | right ] join 表2 on 条件 set 字段1=值1, 字段2=值2 , ...; 表外连接语法
-- 不带条件修改数据,将所有的性别改成女update student set sex = '女';-- 带条件修改数据,将 id 号为 2 的学生性别改成男update student set sex='男' where id=2;-- 一次修改多个列,把 id 为 3 的学生,年龄改成 26 岁,address 改成北京update student set age=26, address='北京' where id=3;

三、删除表记录

语句 描述
delete [ignore] from 表名 [where 条件1, 条件2, ...] [order by ...] [limit ...]; 删除记录,不写条件的话删全部
delete from 表名; 不带条件删除数据
delete from 表名 where 字段名=值; 带条件删除数据
delete 表1, ... from 表1 join 表2 on 条件 [where 条件1, 条件2, ...] [order by ...] [limit ...]; 表内连接删除
delete 表1, 表2 from 表1 [ lift | right ] join 表2 on 条件 set 字段1=值1, 字段2=值2 , ...; 表外连接删除
truncate table 表名; 使用 truncate 删除表中所有记录

truncate 和 delete 的区别:

  • truncate 相当于删除表的结构,再创建一张表。
  • delete是在事务机制下删除记录,删除记录之前,先把将要删除的记录保持到日志文件里,然后再删除记录。
  • truncate语句在事务机制之外删除记录,速度远超过delete语句
-- 带条件删除数据,删除 id 为 1 的记录delete from student where id=1;-- 不带条件删除数据,删除表中的所有数据delete from student;