目录
一、插入记录
二、更新表记录
三、删除表记录
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;
|