【mysql】mysql之数据操作语言(insert、delete、update)

2024-08-24 12:44

本文主要是介绍【mysql】mysql之数据操作语言(insert、delete、update),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》从问题中去学习k8s

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

 

DML数据操作语言(insert、delete、update)

1.insert 命令

1)查看表结构
mysql> desc student;
+----------+---------------------+------+-----+-------------------+----------------+
| Field    | Type                | Null | Key | Default           | Extra          |
+----------+---------------------+------+-----+-------------------+----------------+
| id       | int(11)             | NO   | PRI | NULL              | auto_increment |
| name     | varchar(12)         | NO   |     | NULL              |                |
| age      | tinyint(3) unsigned | NO   |     | NULL              |                |
| gender   | enum('m','f')       | YES  |     | f                 |                |
| cometime | datetime            | YES  |     | CURRENT_TIMESTAMP |                |
| birthday | datetime            | YES  |     | NULL              |                |
+----------+---------------------+------+-----+-------------------+----------------+
6 rows in set (0.00 sec)
2)插入数据(不规范写法)
mysql> insert into student values(1,'邱导',78,'f',now(),'1942-07-14');
Query OK, 1 row affected (0.00 sec)mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+
| id | name   | age | gender | cometime            | birthday            |
+----+--------+-----+--------+---------------------+---------------------+
|  1 | 邱导   |  78 | f      | 2020-07-15 09:21:12 | 1942-07-14 00:00:00 |
+----+--------+-----+--------+---------------------+---------------------+
1 row in set (0.00 sec)
3)插入数据(规范写法)
#1.插入指定列数据
mysql> insert into student(name,age) values('曾导','84');
Query OK, 1 row affected (0.00 sec)mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+
| id | name   | age | gender | cometime            | birthday            |
+----+--------+-----+--------+---------------------+---------------------+
|  1 | 邱导   |  78 | f      | 2020-07-15 09:21:12 | 1942-07-14 00:00:00 |
|  2 | 邱导   |  78 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                |
+----+--------+-----+--------+---------------------+---------------------+
3 rows in set (0.00 sec)#2.插入指定列数据
mysql> insert into student(name,age,birthday) values('曾导','84','1936-02-20');
Query OK, 1 row affected (0.00 sec)mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+
| id | name   | age | gender | cometime            | birthday            |
+----+--------+-----+--------+---------------------+---------------------+
|  1 | 邱导   |  78 | f      | 2020-07-15 09:21:12 | 1942-07-14 00:00:00 |
|  2 | 邱导   |  78 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                |
|  4 | 曾导   |  84 | f      | 2020-07-15 09:25:22 | 1936-02-20 00:00:00 |
+----+--------+-----+--------+---------------------+---------------------+
4 rows in set (0.00 sec)
4)插入多条数据
mysql> insert into student(name,age,birthday) values('好大','18',1936-02-21),('好小','28','1992-01-01');
Query OK, 2 rows affected, 1 warning (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 1mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+
| id | name   | age | gender | cometime            | birthday            |
+----+--------+-----+--------+---------------------+---------------------+
|  1 | 邱导   |  78 | f      | 2020-07-15 09:21:12 | 1942-07-14 00:00:00 |
|  2 | 邱导   |  78 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                |
|  4 | 曾导   |  84 | f      | 2020-07-15 09:25:22 | 1936-02-20 00:00:00 |
|  5 | 曾导   |  84 | f      | 2020-07-15 09:28:11 | 1936-02-21 00:00:00 |
|  6 | 好大   |  18 | f      | 2020-07-15 09:29:18 | 0000-00-00 00:00:00 |
|  7 | 好大   |  18 | f      | 2020-07-15 09:31:07 | 0000-00-00 00:00:00 |
|  8 | 好小   |  28 | f      | 2020-07-15 09:31:07 | 1992-01-01 00:00:00 |
+----+--------+-----+--------+---------------------+---------------------+
8 rows in set (0.00 sec)

2.update命令

1)查看数据
mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+
| id | name   | age | gender | cometime            | birthday            |
+----+--------+-----+--------+---------------------+---------------------+
|  1 | 邱导   |  78 | f      | 2020-07-15 09:21:12 | 1942-07-14 00:00:00 |
|  2 | 邱导   |  78 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                |
|  4 | 曾导   |  84 | f      | 2020-07-15 09:25:22 | 1936-02-20 00:00:00 |
|  5 | 曾导   |  84 | f      | 2020-07-15 09:28:11 | 1936-02-21 00:00:00 |
|  6 | 好大   |  18 | f      | 2020-07-15 09:29:18 | 0000-00-00 00:00:00 |
|  7 | 好大   |  18 | f      | 2020-07-15 09:31:07 | 0000-00-00 00:00:00 |
|  8 | 好小   |  28 | f      | 2020-07-15 09:31:07 | 1992-01-01 00:00:00 |
+----+--------+-----+--------+---------------------+---------------------+
8 rows in set (0.00 sec)
2)修改数据
#使用update语句必须要加where条件
mysql> update student set age=18 where name='邱导';
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+
| id | name   | age | gender | cometime            | birthday            |
+----+--------+-----+--------+---------------------+---------------------+
|  1 | 邱导   |  18 | f      | 2020-07-15 09:21:12 | 1942-07-14 00:00:00 |
|  2 | 邱导   |  18 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                |
|  4 | 曾导   |  84 | f      | 2020-07-15 09:25:22 | 1936-02-20 00:00:00 |
|  5 | 曾导   |  84 | f      | 2020-07-15 09:28:11 | 1936-02-21 00:00:00 |
|  6 | 好大   |  18 | f      | 2020-07-15 09:29:18 | 0000-00-00 00:00:00 |
|  7 | 好大   |  18 | f      | 2020-07-15 09:31:07 | 0000-00-00 00:00:00 |
|  8 | 好小   |  28 | f      | 2020-07-15 09:31:07 | 1992-01-01 00:00:00 |
+----+--------+-----+--------+---------------------+---------------------+
8 rows in set (0.00 sec)
3)指定修改一条数据
#如果数据库有主键,一定使用主键来作为where判断
mysql> update student set age=88 where name='邱导' and cometime='2020-07-15 09:21:12';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> update student set age=88 where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+
| id | name   | age | gender | cometime            | birthday            |
+----+--------+-----+--------+---------------------+---------------------+
|  1 | 邱导   |  88 | f      | 2020-07-15 09:21:12 | 1942-07-14 00:00:00 |
|  2 | 邱导   |  88 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                |
|  4 | 曾导   |  84 | f      | 2020-07-15 09:25:22 | 1936-02-20 00:00:00 |
|  5 | 曾导   |  84 | f      | 2020-07-15 09:28:11 | 1936-02-21 00:00:00 |
|  6 | 好大   |  18 | f      | 2020-07-15 09:29:18 | 0000-00-00 00:00:00 |
|  7 | 好大   |  18 | f      | 2020-07-15 09:31:07 | 0000-00-00 00:00:00 |
|  8 | 好小   |  28 | f      | 2020-07-15 09:31:07 | 1992-01-01 00:00:00 |
+----+--------+-----+--------+---------------------+---------------------+
8 rows in set (0.00 sec)

3.delete语句

1)删除数据
#1.先查看数据,确认要删除的数据,怎么确定唯一#2.使用delete语句也一定要加where条件
mysql> delete from student where id=8;
Query OK, 1 row affected (0.01 sec)mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+
| id | name   | age | gender | cometime            | birthday            |
+----+--------+-----+--------+---------------------+---------------------+
|  1 | 邱导   |  88 | f      | 2020-07-15 09:21:12 | 1942-07-14 00:00:00 |
|  2 | 邱导   |  88 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                |
|  4 | 曾导   |  84 | f      | 2020-07-15 09:25:22 | 1936-02-20 00:00:00 |
|  5 | 曾导   |  84 | f      | 2020-07-15 09:28:11 | 1936-02-21 00:00:00 |
|  6 | 好大   |  18 | f      | 2020-07-15 09:29:18 | 0000-00-00 00:00:00 |
|  7 | 好大   |  18 | f      | 2020-07-15 09:31:07 | 0000-00-00 00:00:00 |
+----+--------+-----+--------+---------------------+---------------------+
7 rows in set (0.00 sec)#3.如果就是要清空表
mysql> delete from student where 1=1;
Query OK, 1 row affected (0.01 sec)
#(危险)
truncate table student;
drop table student

4.使用update代替delete

1)添加状态字段
mysql> alter table student add status enum('1','0') default 1;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0
​
mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+--------+
| id | name   | age | gender | cometime            | birthday            | status |
+----+--------+-----+--------+---------------------+---------------------+--------+
|  1 | 邱导   |  88 | f      | 2020-07-15 09:21:12 | 1942-07-14 00:00:00 | 1      |
|  2 | 邱导   |  88 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 | 1      |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                | 1      |
|  4 | 曾导   |  84 | f      | 2020-07-15 09:25:22 | 1936-02-20 00:00:00 | 1      |
|  5 | 曾导   |  84 | f      | 2020-07-15 09:28:11 | 1936-02-21 00:00:00 | 1      |
|  6 | 好大   |  18 | f      | 2020-07-15 09:29:18 | 0000-00-00 00:00:00 | 1      |
|  7 | 好大   |  18 | f      | 2020-07-15 09:31:07 | 0000-00-00 00:00:00 | 1      |
+----+--------+-----+--------+---------------------+---------------------+--------+
7 rows in set (0.00 sec)
2)使用update代替delete
#相当于删除学生
mysql> update student set status='0' where id =2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+--------+
| id | name   | age | gender | cometime            | birthday            | status |
+----+--------+-----+--------+---------------------+---------------------+--------+
|  2 | 邱导   |  88 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 | 0      |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                | 1      |
|  4 | 曾导   |  84 | f      | 2020-07-15 09:25:22 | 1936-02-20 00:00:00 | 1      |
|  5 | 曾导   |  84 | f      | 2020-07-15 09:28:11 | 1936-02-21 00:00:00 | 1      |
|  6 | 好大   |  18 | f      | 2020-07-15 09:29:18 | 0000-00-00 00:00:00 | 1      |
|  7 | 好大   |  18 | f      | 2020-07-15 09:31:07 | 0000-00-00 00:00:00 | 1      |
+----+--------+-----+--------+---------------------+---------------------+--------+
6 rows in set (0.00 sec)#相当于学生回来
mysql> update student set status='1' where id =2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from student;
+----+--------+-----+--------+---------------------+---------------------+--------+
| id | name   | age | gender | cometime            | birthday            | status |
+----+--------+-----+--------+---------------------+---------------------+--------+
|  2 | 邱导   |  88 | f      | 2020-07-15 09:22:27 | 1942-07-14 00:00:00 | 1      |
|  3 | 曾导   |  84 | f      | 2020-07-15 09:24:17 | NULL                | 1      |
|  4 | 曾导   |  84 | f      | 2020-07-15 09:25:22 | 1936-02-20 00:00:00 | 1      |
|  5 | 曾导   |  84 | f      | 2020-07-15 09:28:11 | 1936-02-21 00:00:00 | 1      |
|  6 | 好大   |  18 | f      | 2020-07-15 09:29:18 | 0000-00-00 00:00:00 | 1      |
|  7 | 好大   |  18 | f      | 2020-07-15 09:31:07 | 0000-00-00 00:00:00 | 1      |
+----+--------+-----+--------+---------------------+---------------------+--------+
6 rows in set (0.00 sec)

5. drop,truncate,delete区别

1、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。2、truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。truncate 不能删除行数据,要删就要把表清空。3、delete (删除表中的数据):delete 语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。truncate与不带where的delete :只删除数据,而不删除表的结构(定义)4、truncate table 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用delete。如果要删除表定义及其数据,请使用 drop table 语句。5、对于由foreign key约束引用的表,不能使用truncate table ,而应使用不带where子句的delete语句。由于truncate table 记录在日志中,所以它不能激活触发器。6、执行速度,一般来说: drop> truncate > delete。7、delete语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。

这篇关于【mysql】mysql之数据操作语言(insert、delete、update)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102516

相关文章

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

MySQL中REPLACE函数与语句举例详解

《MySQL中REPLACE函数与语句举例详解》在MySQL中REPLACE函数是一个用于处理字符串的强大工具,它的主要功能是替换字符串中的某些子字符串,:本文主要介绍MySQL中REPLACE函... 目录一、REPLACE()函数语法:参数说明:功能说明:示例:二、REPLACE INTO语句语法:参数

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路