DML 英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。
一、前言:
以下所列举例子的 建表语句如下:
create table tb_emp ( id int unsigned auto_increment comment 'ID' primary key, username varchar(20) not null comment '用户名', password varchar(32) default '123456' null comment '密码', name varchar(10) not null comment '姓名', gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女', image varchar(300) null comment '图像', job tinyint unsigned null comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管', entrydate date null comment '入职时间', create_time datetime not null comment '创建时间', update_time datetime not null comment '修改时间', constraint username unique (username) ) comment '员工表';
二、添加数据(insert)
(一)、insert语法
(1)指定字段添加数据:insert into 表名 (字段名1,字段名2 ) values (值1, 值2);
(2)全部字段添加数据:insert into 表名 values (值1,值2, ...);
(3)批量添加数据(指定字段):insert into 表名 (字段名1,字段名2) values (值1,值2),(值1,值2);
(4)批量添加数据(全部字段):insert into 表名 values (值1,值2,...),(值1,值2,...);
(二)、注意事项
(1)插入数据时,指定的字段顺序需要与值的顺序一一对应
(2)插入数据时,所有非空(not null)字段必须为其赋值,可为空(null)字段可以不为其赋值
(3)字符串和日期型数据应该包含在单引号中
(4)插入的数据大小,应该在字段的规定范围内
(5)采用语法(2)时,即使字段可为null也要在values后列出---一一对应
(三)、例子
(1):为tb_emp表的username、name、gender字段插入值
insert into tb_emp(username, name, gender,create_time, update_time) values ('wu','李四',1,now(),now()); -- 在插入一条数据时字段username, name, gender,create_time, update_time不为空必须赋值。
(2):为tb_emp表的所有字段插入值
insert into tb_emp(id, username, password, name, gender, image, job, entrydate, create_time, update_time)values (null, 'sssa', '1233', '里斯', 2, '1.jpg', 1, '2010-01-01', now(), now()); 或
insert into tb_emp values (null, 'sssa', '1233', '里斯', 2, '1.jpg', 1, '2010-01-01', now(), now());-- 采用这中方法时,根据一一对应原则,即使可为空也要赋值,否则报错
三、修改数据(update)
(一)、update语法
修改数据:update 表名 set 字段名1=值1,字段名2=值2,...[ where 条件 ];
(二)、注意事项
修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
(三)、例子
将tb_emp表的ID为1的员工,入职日期更新为'2010-01-01'
update tb_emp set entrydate='2010-01-01',update_time=now() where id=1; -- 如无where id=1,则整张表的所有员工的入职日期都将更新为'2010-01-01'
四、删除数据(delete)
(一)、delete语法
删除数据:delete from 表名 [ where 条件 ];
(二)、注意事项
(1)delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
(2)delete语句不能删除某一个字段的值,只能删除一整条数据(如果要删除某一个字段的值,可以使用update,将该字段的值置为null)
(三)、例子
delete from tb_emp where id=100;
注:当删除一个实际不存在的数据时如id=10000,不会报错
五、总结
(1)添加:insert into 表名 (字段列表) values(字段值列表);
(2)修改:update 表名 set 字段名1=字段值1, 字段名2=字段值2 [ where 条件 ];
(3)删除:delete from 表名 [ where 条件 ];