三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 语句
DROP | DELETE | TRUNCATE | |
---|---|---|---|
类型 | 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 增删改)的主要内容,如果未能解决你的问题,请参考以下文章