这里的DML即数据操纵语言,也就是主要进行的是对数据库表的基本的增删改操作。
1.添加记录
-- 插入语句
insert into 表名[(字段列表)] values(字段值列表);
-- 一般形式插入
insert into stu(sid,name) values(1,'de');
-- CTAS方式建表的同时添加数据
create table stu2 as select * from xxx; -- 建表的同时插入数据,as可省略
-- 通过结果集方式插入
insert into stu2 select * from stu where sid >12; -- 通过查询结果集实现插入
-- 多记录插入
insert into stu(sid,name) values(1,'de'),(2,'fg'),(3,'rt'); -- 多值插入
1) 多记录插入演示
①表的创建:
SQL代码:
-- 创建表stu,个人喜欢在表名前面加上表名,也是开发习惯,希望参考的伙伴也加上 create table mktest.stu( sid int, username varchar(12), age int(3) ); -- 修改主键,这个你完全可以在创建表时指定主键 alter table mktest.stu change sid sid int primary key;
②插入数据:
SQL代码:
insert into mktest.stu values(2,"Sam",24);
效果图如下:
③多值插入:
SQL代码:
insert into mktest.stu values(3,"Kim",22),(4,"Tim",23),(5,"Lim",24);
效果图如下:
2) CTAS方式建表的同时添加数据演示
SQL代码:
create table stu4 as select * from mktest.stu;
效果图:
3) 通过结果集方式插入演示
数据准备:stu4数据即***上面CTAS方式结果集***,stu2的数据展示如下:
SQL代码:
insert into stu4 select * from stu2;
效果如下:
2.删除记录
--删除语句
delete from 表名 where xxx=xxx;
3.修改记录
-- 更新语句
update 表名 set xxx=xxx where xxx;
4.清空表
-- 清空表:
delete from 表名
truncate table 表名; -- DDL操作
说明: delete 与 drop 和 truncate 区别
drop table 表名; -- 直接删除表结构
delete from 表名; -- 是逐行删除,不会删除表结构,但是也不会重置自增
truncate table 表名; -- 清空表,修改表结构,会重置自增
delete 和 truncate 区别:
1)truncate是数据定义语言(DDL),性能上比作为delete的数据操纵语言(DML)要高出许多。
2)对于主键自增自增字段,由于delete是逐行删除,不会对表结构做更改,因此自增不会被重置,而truncate则是通过修改表结构的形式实现自增的重置。
注:实际开发中,由于需要考虑到性能,能够使用DDL操作替代掉的DML操作,尽量使用DDL操作器替换掉。