MySQL之数据操纵语言(DML)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

DML 主要有如下⼏个常⽤功能。

下⾯的操作都是基于这个student 表进⾏的。

增添数据(insert)全列插⼊(全字段插⼊)
注意,表结构中有字段,虽然设置了主键、⾃增,MySQL 可以⾃动维护,但是,在全列插⼊的时候,这个位置还必须写(通常写 0 ,插⼊后以实际为准),起到站位作⽤结果如下:
部分列插⼊(插⼊部分列字段)
结果如下:
同时插⼊多条数据
结果如下:增
删改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;
-- insert into 表名 values(...);
insert into student values(0,'张三','男');
id -- 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
("刘备","男"),("貂蝉","⼥"),("诸葛亮","男");
复制已有表,⽣成新表
复制已有表的结构和数据。

结果如下:
只复制已有表的结构(得到的是⼀个空结构表)。

结果如下:
修改数据update
update 语句要配合where 筛选,进⾏使⽤,否则修改的就是整张表的记录。

-- 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 表名 set 列1=值1,列2=值2,列3=值3,…… where 条件;
-- 把sid 为3的王五的姓名,改为赵六。

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

结果如下:
删除数据
delete
delete 为物理删除(⼀旦删除就彻底没有了)
delete 语句要配合where 筛选,进⾏使⽤,否则删除的就是整张表的记录。

结果如下:
逻辑删除
注意:其实就是⼀个修改操作,以下两个语句配合使⽤
注意:delete 属于物理删除,⼀旦删除,数据就不存在,因此,重要数据建议⽤逻辑删除,不重要数据采⽤ delete 删除
truncate 和delete 的区别
有如下表
delete 删除
-- 把sid 为6的诸葛亮的名字改为孔明,性别改为猛男。

update student set sname="孔明",sex="猛男" where sid=6;
-- 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;
truncate清空
truncate和delete的区别:
都是不修改结构,只清除数据。

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

delete是逐⾏删除,删除记录是作为事务记录在⽇志⽂件中,可进⾏回滚操作。

truncate⼀次性删除表中所有数据,删除记录不会记录在⽇志⽂件中,⽆法恢复,删除效率⾼于delete。

相关文档
最新文档