DML指的是数据操作语言(Data Manipulation Language),是SQL(结构化查询语言)的一个子集,用于操作关系型数据库中的数据。DML命令用于插入、更新、删除和检索数据库中的数据。
最常用的DML命令包括:
- NSERT:用于插入新数据
- UPDATE:用于更新现有数据
- DELETE:用于删除现有数据
插入数据
-
语法
INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);注意:列名与列值的类型、个数、顺序要一一对应。
可以把列名当做java中的形参,把列值当做实参。值不要超出列定义的长度。如果插入空值,请使用null插入的日期和字符一样,都使用单引号括起来。
-
实战
create table emp( id int, name varchar(100), gender varchar(10), birthday date, salary double(10,2), entry_date date, resume text ); INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume) VALUES(1,'zhangsan','female','1990-5-10',10000,'2015-5-5','good girl'); INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume) VALUES(2,'lisi','male','1995-5-10',10000,'2015-5-5','good boy'); INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume) VALUES(3,'你好','male','1995-5-10',10000,'2015-5-5','good boy');
-
语法
insert into 新表 select 列 from 已有表
-
实战
create table emp1( id int, name varchar(100), gender varchar(10), birthday date, salary float(10,2), entry_date date, resume text ); # 将emp表的所有数据复制到emp1中 INSERT INTO emp1 select * from emp
-
注意事项
1.mysql不支持select into
2.在复制时是按照列的顺序依次进行
3.新表的列与原来表的列的名字,类型都可以不一样,照样复制成功.但是会出现数据转换错误.具体的:名字不一样,问题不大.类型不一样,出现错误,比如将int型的数据强制转换成varchar型,会显示0,反之亦然
删除数据
# 删除数据
DELETE FROM t_student;
# 删除掉表中所有的数据
TRUNCATE TABLE t_student;
DELETE 和 TRUNCATE
- delete删除表中的数据,表结构还在;删除的数据可以恢复。
- truncate是直接将表DROP掉,然后再按照原来的结构重新创建一张表。数据不可恢复。
- truncate删除效率比delete高。
where子句
刚才的删除语句,将表中的全部的数据都删除掉了。那么,如果需要按照条件进行删除呢?
此时,可以使用关键字where,来进行条件的约束,筛选出满足条件的数据进行操作。而且,where并不仅仅作用在删除的时候,还可以作用在修改和查询的部分。
条件 | 描述 |
---|---|
= | 相等比较,类似于Java中的== |
!= <> | 不等比较 |
> < >= <= | 大小比较 |
BETWEEN...AND... | 判断在两个值之间 |
IN(...) | 判断是否包含在指定的集合内 |
IS NULL | 判断是否为空 |
IS NOT NULL | 判断是否不为空 |
AND OR NOT | 逻辑判断,与、或、非 |
[NOT] LIKE | 模糊比较 |
# 删除姓名叫"张三"的数据
delete from student where sname = '张三';
# 删除成绩不是100的数据
delete from student where score != 100;
# 删除不及格的数据
delete from student where score < 60;
# 删除成绩在[60, 80]范围的数据
delete from student where score between 60 and 80;
# 删除小组是1,3,5的数据
delete from student where groupid in(1, 3, 5);
# 删除成绩是空的数据
delete from student where score is null;
# 删除成绩不及格的第三组的数据
delete from student where score < 60 and groupid = 3;
# 删除姓张的数据
delete from student where sname like '张%';
修改数据
-
语法
UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值
-
实战
# 将所有员工薪水修改为5000元。 UPDATE emp SET salary=5000 # 将姓名为’zs’的员工薪水修改为3000元。 UPDATE emp SET salary=3000 WHERE name=’ zhangsan’; # 将姓名为’aaa’的员工薪水修改为4000元,job改为ccc。 UPDATE emp SET salary=4000,gender='female' WHERE name='lisi'; # 将wu的薪水在原有基础上增加1000元。 UPDATE emp SET salary=salary+1000 WHERE gender='male';
更多大数据精彩内容欢迎B站搜索“千锋教育”或者扫码领取全套资料
【千锋教育】大数据开发全套教程,史上最全面的大数据学习视频