【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

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI