百木园-与人分享,
就是让自己快乐。

MySQL之数据操纵语言(DML)

数据操纵语言(DML)

数据操纵语(Data Manipulation Language),简称DML。

DML主要有如下几个常用功能。




insert delete update

# 创建数据库
create database if not exists stu;
# 使用数据库
use stu;
# 创建一个表
create table student(
sid int primary key auto_increment,
sname varchar(20) not null,
sex varchar(10)
)charset=utf8;

下面的操作都是基于这个student表进行的。

增添数据(insert)

全列插入(全字段插入)

-- insert into 表名 values(...);
insert into student values(0,\'张三\',\'男\');

注意,表结构中有id字段,虽然设置了主键、自增,MySQL可以自动维护,但是,在全列插入的时候,这个位置还必须写(通常写 0 ,插入后以实际为准),起到站位作用

结果如下:

部分列插入(插入部分列字段)

-- insert into 表名(列1,列2,...) values(值1,值2,...);
insert into student(sname, sex) values(\'李四\', \'男\');
insert into student(sname) values(\'王五\');

结果如下:

同时插入多条数据

-- insert into 表名(列1,...) values(值1,...),(值2,...),(值3,...),...;
insert into student(sname,sex) values
(\"刘备\",\"男\"),(\"貂蝉\",\"女\"),(\"诸葛亮\",\"男\");

结果如下:

复制已有表,生成新表

复制已有表的结构和数据。

-- create table 新表名 select * from 已有表名;
-- 创建一个student1表,表的结构和数据均来自于student表。
create table student1 select * from student;

结果如下:

只复制已有表的结构(得到的是一个空结构表)。

-- create table 新表名 selsct * from 已有表名 where 0;
-- 创建一个student2表,只复制student表的结构,不要里面的数据。
create table student2 select * from student where 0;

结果如下:

修改数据update

update语句要配合where筛选,进行使用,否则修改的就是整张表的记录。

-- update 表名 set 列1=值1,列2=值2,列3=值3,…… where 条件;

-- 把sid为3的王五的姓名,改为赵六。
update student set sname=\"王八\" where sid = 3;

-- 把sid为6的诸葛亮的名字改为孔明,性别改为猛男。
update student set sname=\"孔明\",sex=\"猛男\" where sid=6;

结果如下:

删除数据

delete

  • delete为物理删除(一旦删除就彻底没有了)
  • delete语句要配合where筛选,进行使用,否则删除的就是整张表的记录。

-- delete from 表名 where 条件;

delete from student where sname=\"张三\";

结果如下:

逻辑删除

注意:其实就是一个修改操作,以下两个语句配合使用

-- 添加一个字段
alter table `student` add `isdelete` enum(1,0) default 0;
-- 把不想看到数据 isDelete 设置为 1
update student set isdelete=1 where sid=6;
-- 然后显示的时候把 isDelete=1 的值过滤
select * from student where isdelete=0;

注意:delete 属于物理删除,一旦删除,数据就不存在,因此,重要数据建议用逻辑删除,不重要数据采用 delete 删除

truncate和delete的区别

有如下表

  • delete删除

  • truncate清空

truncate和delete的区别:

  • 都是不修改结构,只清除数据。

  • delete删除不释放资源,truncate释放表占用的空间(会重置主键自增)。

  • delete是逐行删除,删除记录是作为事务记录在日志文件中,可进行回滚操作。truncate一次性删除表中所有数据,删除记录不会记录在日志文件中,无法恢复,删除效率高于delete。

来源:https://www.cnblogs.com/pure3417/p/14826504.html
图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » MySQL之数据操纵语言(DML)

相关推荐

  • 暂无文章