MySQL DML 数据操作
文章目录
- 1.插入记录
- INSERT
- REPLACE
- 2.删除记录
- 3.修改记录
- 4.备份还原数据
- 参考文献
1.插入记录
INSERT
使用 INSERT INTO 语句可以向数据表中插入数据。INSET INTO 有三种形式。
INSET INTO tablename SELECT...INSET INTO tablename SET column1=value1,column2=value2...INSET INTO tablename(column1,column2,...) VALUES(value1,value2,...);
以下是一些插入示例。
# 使用 SELECT 结果集进行插入
INSET INTO tbl_name1 SELECT * FROM tbl_name2;# 注意,tbl_name2 数据表的定义要与 tbl_name1 相同,不同的话,则需要指定需要插入的列
INSET INTO tbl_name1(col0,col1,col2) SELECT col0,col1,col2 FROM tbl_name2;# 使用 INSET INTO SET
INSET INTO student SET
name='lvlv0', school='software', grade='first year',major='software engineering',gender=0# 插入一行
INSET INTO student(name,school,grade,major,gender)
VALUES('lvlv','software','first year','software engineering',0);# 如果插入值刚好与数据表的所有列一一对应,那么可以省略书写插入的指定列
INSET INTO student
VALUES('lvlv','software','first year','software engineering',0);# 插入多行
INSET INTO student VALUES
('lvlv','software','first year','software engineering',0),
('lvlv1','software','first year','software engineering',0);
REPLACE
除了使用 INSERT 语句向数据表中插入数据,还可以使用 REPLACE 进行插入。
如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据,否则直接插入新数据。
REPLACE INTO tbl_name(col_name, ...) VALUES(...)REPLACE INTO tbl_name(col_name, ...) SELECT ...REPLACE INTO tbl_name SET col_name=value, ...
REPLACE 语句会返回一个数,来指示受影响的行数目。该数是被删除和被插入的行数和。如果一行被插入同时没有行被删除,则返回 1。如果表包含多个唯一索引,并且新行包含了多个不同唯一索引的旧值,则有可能是一个单一行替换了多个旧行。如果在新行被插入前,有一个或多个旧行被删除,则返回值大于 1。
频繁的 REPLACE INTO 会造成新纪录的主键的值迅速增大。总有一天。达到最大值后就会因为数据太大溢出了。就没法再插入新纪录了。数据表满了,不是因为空间不够了,而是因为主键的值没法再增加了。
如果因唯一索引导致旧行被删除,新纪录与老记录的主键值不同,所以其他表中所有与本表老数据主键建立的关联全部会被破坏。
2.删除记录
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias][PARTITION (partition_name [, partition_name] ...)][WHERE where_condition][ORDER BY ...][LIMIT row_count]
比如删除学号为 10000 的学生记录。
DELETE FROM student WHERE FROM student_no=10000;
3.修改记录
UPDATE [LOW_PRIORITY] [IGNORE] table_referenceSET assignment_list[WHERE where_condition][ORDER BY ...][LIMIT row_count]value:{expr | DEFAULT}assignment:col_name = valueassignment_list:assignment [, assignment] ...
比如将学号为 10000 的学生性别改为女性。
UPDATE student SET gender=1 WHERE student_no=1000;
如果要更新的列是一个 JSON 类型,比如设置列为 JSON 数组。
UPDATE my_table SET my_json = JSON_SET(my_json, '$', JSON_ARRAY('apple', 'banana', 'orange')) WHERE id = 1;
这里只列出简单的增删改的 DML 操作,关于全面基础的 DML 操作请参考 MySQL 官方文档。
4.备份还原数据
mysqldump 是用于转存储 MySQL 数据库的实用程序。
利用 mysqldump 可以用最少的命令来帮助备份数据库。使用一条简单的命令便可将整个数据库输出到单个文本文件中。 该工具用途广泛,足以备份所需的数据库部分,并提供多种选项来更改需要保存的数据。
(1)导出数据库的所有数据表。
# 命令格式
mysqldump -u 用户名 -p 数据库名 > 导出的文件名# 示例
mysqldump -u user_name -p123456 database_name > outfile_name.sql
(2)还原整个数据库。
在命令行选择一个数据库之后,直接执行 SQL 文件即可。
mysql> source file.sql;
(3)导出一个表到 SQL 文件。
# 命令格式
mysqldump -u 用户名 -p 密码 数据库名 表名>导出的文件名# 示例
mysqldump -u user_name -p pwd database_name tbl_name > outfile.sql
(4)导入 SQL 文件。
方法同还原整个数据库。
(5)将数据表导出到 CSV 文件。
# 命令格式
SELECT * FROM [TABLE] INTO OUTFILE '[FILE]';# 或
SELECT * FROM [TABLE] INTO OUTFILE '[FILE]' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'; # 示例
SELECT * FROM student INTO OUTFILE "student.csv";
如果不指明输出文件的输出目录,默认输出至数据库文件的存储目录。可使用命令find / -name student.csv
来查看具体位置。
如果使用指定csv文件输出目录的话,报如下错误:
ERROR 1 (HY000): Can't create/write to file (Errcode: 13)
,错误的原因是所在目录没有写权限,给所在的目录增加写权限即可。
(6)导入 CSV 文件。
# 命令格式
LOAD DATA INFILE 'file' INTO TABLE [TABLE]; # 或
LOAD DATA INFILE 'file' INTO TABLE [TABLE] FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';# 示例
LOAD DATA INFILE 'file.csv' INTO TABLE student;
导入 CSV 文件时有几点需要注意。
- 指定 csv 文件时使用绝对路径,否则 MySQL 默认从数据库存储的目录寻找。
- 在导入时,如果出现如下错误:
ERROR 13 (HY000) at line 1: Can't get stat of '/fullpath/file.csv' (Errcode: 13)
检查之后并非文件没有可读权限,请使用LOAD DATA LOCAL INFILE
。
MySQL客户端与服务端在同一台主机时,加不加 LOCAL 是一样的,因为,因为默认从服务器端读取文件。
MySQL客户端与服务端不在同一台主机时,即使用本 MySQL 客户端将本地数据导入远程 MySQL,需要加 LOCAL。
- 默认域分隔符为Tab,空格或其它分隔符需显示指定。
(7)导入 EXCEL 文件。
同导入 CSV 文件的方法一致。注意,导入文件时,都需要提前建立好与文件内各个段对应好的数据表,并且文件的路径需要使用引号括起来,双引号和单引号都可以。
(8)导出远程 SELECT 结果集到本地。
使用如下方法不可行,因为这个语句并不是在MySQL客户端,而是在MySQL服务器上执行的,通常用于服务器管理员在服务器机器上进行数据备份使用,由于MySQL客户端账号并没有访问服务器机器本身的权限,所以这个SQL执行不会成功。即使有权限,SELECT 结果集会被导出到MySQL服务端,而非本地。
mysql -h10.10.10.10 -ucrazyant -p123456 -P3306 -e "SELECT * FROM tbl_name WHERE condition INTO OUTFILE '/tmp/file.txt'"
正确方法,使用重定向的方式,将 SELECT 结果导出到本地。
mysql -h10.10.10.10 -ucrazyant -p123456 -P3306 -e "SELECT * FROM tbl_name WHERE condition" > /tmp/file.txt
参考文献
MySQL 8.0 Reference Manual :: 13.2.7 INSERT Statement
MySQL 8.0 Reference Manual :: 13.2.12 REPLACE Statement
MySQL 8.0 Reference Manual :: 13.2.2 DELETE Statement
MySQL 8.0 Reference Manual :: 13.2.9 LOAD DATA Statement
相关文章:
MySQL DML 数据操作
文章目录 1.插入记录INSERTREPLACE 2.删除记录3.修改记录4.备份还原数据参考文献 1.插入记录 INSERT 使用 INSERT INTO 语句可以向数据表中插入数据。INSET INTO 有三种形式。 INSET INTO tablename SELECT...INSET INTO tablename SET column1value1,column2value2...INSET…...
服务端与网络相关知识
1. http/https 协议 1.0 协议缺陷: ⽆法复⽤链接,完成即断开,重新慢启动和 TCP 3 次握⼿head of line blocking : 线头阻塞,导致请求之间互相影响 1.1 改进: ⻓连接(默认 keep-alive ),复⽤host 字段指定对应的虚拟站点新增功…...

一分钟上手Vue VueI18n Internationalization(i18n)多国语言系统开发、国际化、中英文语言切换!
这里以Vue2为例子 第一步:安装vue-i18n npm install vue-i18n8.26.5 第二步:在src下创建js文件夹,继续创建language文件夹 在language文件夹里面创建zh.js、en.js、index.js这仨文件 这仨文件代码分别如下: zh.js export de…...

stm32 cubemx can通讯(1)回环模式
文章目录 前言一、cubemx配置二、代码1.过滤器的配置(后续会介绍)2.main.c3.主循环 总结 前言 介绍使用stm32cubemx来配置can,本节讲解一个简答,不需要stm32的can和外部连接,直接可以用于验证的回环模式。 所谓回环模…...

Python基础小项目
今天给大家写一期特别基础的Python小项目,欢迎大家支持,并给出自己的完善修改 (因为我写的都是很基础的,运行速率不是很好的 目录 1. 地铁票价题目程序源码运行截图 2. 购物车题目程序源码运行截图 3. 名片管理器题目程序源码运行…...

Python Opencv实践 - 在图像上绘制图形
import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png") print(img.shape)plt.imshow(img[:,:,::-1])#画直线 #cv.line(img,start,end,color,thickness) #参考资料:https://blog.csdn.ne…...
管理者应该编码,但不是在工作时
管理者应该编码吗?这个问题似乎没有一个明确的答案。这场辩论有支持者也有反对者,每一方都有自己的论点。我最近在工作中编写了一个副业项目,这让我重新评估了我在这个问题上的立场。经历了这些之后,我可以说,我的立场已经从管理…...

深度学习常用的python库学习笔记
文章目录 数据分析四剑客Numpyndarray数组和标量之间的运算基本的索引和切片数学和统计方法线性代数 PandasMatplotlibPIL 数据分析四剑客 Numpy Numpy中文网 ndarray 数组和标量之间的运算 基本的索引和切片 数学和统计方法 线性代数 Pandas Pandas中文网 Matplotlib Mat…...

C语言属刷题训练【第八天】
文章目录 🪗1、如下程序的运行结果是( )💻2、若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确引用的是( )🧿3、在下面的字符数组定义中,哪一个有语法错…...

阿里云PolarDB数据库倚天ARM架构详细介绍
阿里云云原生数据库PolarDB MySQL版推出倚天ARM架构,倚天ARM架构规格相比X86架构规格最高降价45%,PolarDB针对自研倚天芯片,从芯片到数据库内核全链路优化,助力企业降本增效。基于阿里云自研的倚天服务器,同时在数据库…...

pytest 编写规范
一、pytest 编写规范 1、介绍 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1、简单灵活,容易上手,文档丰富;2、支持参数化,可以细粒度地控制要测试的测试用例;3、能够…...
Vue.use和vue.component的区别
Vue.use 注册全局插件vue.use时会将自动将开发者 vue构造函数传入插件,vue.use参数必须是function或者object,object中必须有install方法vue.use会自动判断当前插件时候已经被注册过了,防止重复注册 Vue.component 注册全局组件 为什么有了Vue.component还要用Vue.use呢 V…...

张驰咨询:提高企业竞争力,六西格玛设计公司(DFSS)在行动
六西格玛设计公司(DFSS)是一种专业从事六西格玛设计的企业,其主要作用是为客户提供高效的六西格玛设计服务,以帮助客户实现高品质、低成本和高效率的产品开发过程。六西格玛设计公司通常拥有一支专业的团队,具有丰富的六西格玛设计经验和技术…...

影响 40% 用户,Ubuntu 发行版被曝 2 个安全漏洞
导读近日消息,Wiz 的研究专家 S. Tzadik 和 S. Tamari 近日在 Ubuntu 系统中发现了 2 个安全漏洞,可以提升本地权限,预估影响 40% 的 Ubuntu 用户。 根据博文内容,汇总两个漏洞内容如下: 追踪编号:CVE-202…...
SpringCache的介绍和入门案例
文章目录 概述常用注解入门案例 概述 Spring Cache是Spring框架提供的一个缓存抽象层,用于在应用程序中实现缓存的功能。它通过在方法执行前检查缓存中是否已经存在所需数据,如果存在则直接返回缓存中的数据,如果不存在则执行方法体…...

闪马智能又上榜!
近日,上海市经济和信息化委员会公布了2023年度上半年(第30批)市级企业技术中心拟认定企业名单。凭借在技术创新方面的突出成就,闪马智能上榜其中。 本次认定由上海市经济和信息化委员会组织开展,综合企业的地位和作用、…...
C++中的四种类型转换(Type Casting)方式
在C中,有四种常见的类型转换(Type Casting)方式,它们分别是: 一、静态转换(Static Cast): static_cast是最常见的类型转换方式,用于基本数据类型的转换、非多态类型之间…...

Linux系列:从0到1用Docker部署springboot项目
目录 1.前提条件 2.编写DockerFile镜像文件 3.打包SpringBoot项目 4.通过软件Xftp进行传输(*) 1.点击“文件-新建”编辑 5.操作远程主机 1.docker构建 2.容器运行 6.容器的关闭和删除 1.前提条件 Linux、docker、xftp的安装、一台可以访问的远…...

zabbix监控mysql数据库、nginx、Tomcat
文章目录 一.zabbix监控mysql数据库1.环境规划2.zabbix-server安装部署(192.168.198.17)3.zabbix-mysql安装部署(192.168.198.15)3.1 部署 zabbix 客户端3.2 服务端验证 zabbix-agent2 的连通性(192.168.198.17&#x…...
深入探索二叉树算法:理解、构建和应用C语言
引言 二叉树是计算机科学中的一种重要数据结构,它在各种算法和应用中都扮演着重要角色。本篇博客将带您深入探索二叉树的世界,从基本概念到高级应用,逐步展开二叉树的奥秘,助您更好地理解、构建和应用二叉树算法。 什么是二叉树…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...