三MySQL 高级(DML 增删改)

Posted 玄子Share

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三MySQL 高级(DML 增删改)相关的知识,希望对你有一定的参考价值。

三、mysql 高级(DML 增删改)

3.1 DML 数据操纵语言

DML(Data Manipulation Language)DML对数据库中表记录的执行操作

  • 插入(INSERT)

    • 插入单行数据

    • 插入多行数据

    • 将查询结果插入到新表

  • 更新(UPDATE)

  • 删除(DELETE)

软件开发人员日常使用最频繁的操作,必备技能!!!


3.2 插入数据

  • INSERT 一次向表中插入一条记录
INSERT INTO 表名 [(字段名列表)]  VALUES (值列表);
# 增
INSERT into gradeinfo (grade) VALUES ('ACCP');
  • 字段名是可选的,如省略,则依次插入所有字段

  • 多个列表和多个值之间使用逗号分隔

  • 值列表和字段名列表一 一对应

  • 如果插入表中的部分字段数据,则字段名列表必填

  • 每个数据值的数据类型、精度和小数位数必须与相应的列匹配

  • 不能为标识列指定值(主键)

  • 如果在设计表的时候就指定了某列不允许为空,则必须插入数据

  • 如果字段具有默认值,可以使用DEFAULT关键字来代替插入的数值

  • INSERT 一次向表中插入多行数据
INSERT INTO 表名 [(字段名列表)] VALUES (值列表1), (值列表2), (值列表n);
# 增
INSERT INTO gradeinfo (grade) VALUES ('ACCP'),('BCSP');

为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名!

  • INSERT 将查询结果插入到新表
INSERT INTO 表名(字段1,字段2 , ……) SELECT 字段1,字段2 , …… FROM 原表;
# 事先创建且与插入数据字段相符
CREATE TABLE patient_address (SELECT  patientName, address  FROM patient ) ;
# 无须事先创建

如果新表已存在,将会报错!


3.3 更新数据

  • UPDATE 更新数据记录
UPDATE 表名 SET 字段1=值1, 字段2=值2, …, 字段n=值n [WHERE 条件];
# 更新表数据
UPDATE gradeinfo SET gradeinfo.grade='BCSP' WHERE gradeinfo.id=2;

3.4 删除数据

  • DELETE 删除数据记录
DELETE FROM 表名 [WHERE条件];
# 删除表信息
DELETE FROM patient WHERE patientID =1

DELETE条件删除语句中,如果未指定WHERE条件语句,则将删除表中的所有数据

DELETE FROM gradeinfo WHERE gradeinfo.id=1;
  • TRUNCATE 格式化表记录
TRUNCATE TABLE 表名;
# 格式化表
TRUNCATE TABLE gradeinfo;

使用 TRUNCATE 语句删除表中记录后,将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比 DELETE 语句快

3.5 比较 DROP、DELETE 与 TRUNCATE 语句

DROPDELETETRUNCATE
类型DDL 会隐式提交,不能回滚DML 每次从表中删除一行数据的同时将改行的删除操作记录在redo和undo表空间中,以便进行回滚和重做操作 需要手动提交操作才能生效,可通过ROLLBACK撤销操作DDL 会隐式提交,不会记录日志,不能回滚
功能删除表结构及所有数据,并将标所占用的空间全部释放可根据条件删除表中满足条件的数据,如果不指定WHERE子句,则删除表中所有记录删除表中所有记录,并将重建表结构
  • 执行速度

    • 一般来说,DROP>TRUNCATE>DELETE
  • 使用 DROP、TRUNCATE 语句时,要慎重

  • 如果使用 DELETE 语句删除表中部分数据要带上 WHERE 子句,且要注意表空间要足够大

  • 如果要删除表,使用 DROP 语句

  • 如果要保留表但删除表中所有数据,如果与事务无关可以使用 TRUNCATE 语句

  • 如果与事务有关,则使用 DELETE 语句


MySQL高级篇到底如何增删改数据库中的数据?一文带你吃透数据的操作之DML

前面说到,SQL分为四类,这篇文章将详细的讲解对数据的一些操作,主要涉及到数据的增删改查。

推荐学习专栏:Java编程 进阶之路

文章目录


现在,我们已经基本学会了写SQL来操作数据库,但是我们在命令行中写SQL时,往往有体验感差,效率低等问题,今天开始我们就要学习在MySQL的图形化客户端Navicat中执行SQL语句

Navicat 为数据库管理、开发和维护提供了一款直观而强大的图形界面,大大的提高了工作效率,建议在学习中也使用这款开发工具。接下来,在Navicat中新建查询,我们就可以编写SQL并且执行SQL语句了。

1. 添加数据

给指定列添加数据:

insert into 表名(列名1,列名2...) values(1,2...);

给全部列添加数据:

insert into 表名 values(1,2...);

批量添加数据:

insert into 表名(列名1,列名2...) values(1,2...),(1,2...)(1,2...)...;

批量添加数据(省略字段名):

insert into 表名 values(1,2...),(1,2...)(1,2...)...;

在开发过程中添加数据的时间是不建议省略字段名的,这样降低了代码的可读性,使效率下降。下面是添加数据的小案例:

查询表中的所有数据的方法是:

select * from 表名;

后面会用到的。

需求:往下面的tb_user表中添加一条数据。

insert into tb_user(id,name) values(2,'李四');

添加成功:


2. 修改数据

修改表的数据:

update 表名 set 列名1=1,列名2=2...[where 条件];

在修改数据时,也可以不使用where条件,此时的操作是修改整列数据,这样的操作是很危险的。

需求:把下面tb_user表中的张三的密码改为abc23

update tb_user set passwor d ='abc123' where name='张三';

修改成功:


3. 删除数据

删除表的数据:

delete from 表名 [where 条件];

在删除某条数据时,如果不使用where条件,将会导致删除整个表的数据。

需求:删除tb_user表中的李四记录。

delete from tb_user where name='李四';

操作成功:

以上是关于三MySQL 高级(DML 增删改)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的DML语言(增删改)

MySQL 数据操作 DML(增删改查)

MySQL数据库——增删改表数据(DML)

MySQL语法------15-----DML语言-增删改

Mysql学习:4DML命令(增删改查)

MySQL3.DML语言(增删改)