【重学 MySQL】五十、添加数据
【重学 MySQL】五十、添加数据
- 使用INSERT INTO语句添加数据
- 基本语法
- 示例
- 插入多行数据
- 注意事项
- 使用LOAD DATA INFILE语句批量添加数据
- 其他插入数据的方式
- 注意事项
在MySQL中,添加数据是数据库操作中的基本操作之一。
使用INSERT INTO语句添加数据
使用 INSERT INTO
语句是向 MySQL 数据库表中添加数据的最基本和最常用的方法之一。
基本语法
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
table_name
是你想要插入数据的表的名称。(column1, column2, column3, ...)
是你想要插入数据的列的名称。这些列名必须用逗号分隔,并且列名的顺序不重要,但必须与 VALUES 子句中值的顺序相匹配。VALUES (value1, value2, value3, ...)
是你要插入的相应列的值。这些值也必须用逗号分隔,并且值的顺序必须与列名的顺序相匹配。
示例
假设你有一个名为 employees
的表,结构如下:
CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(100),hire_date DATE
);
你想要向这个表中插入一条新记录。你可以使用如下的 INSERT INTO
语句:
INSERT INTO employees (first_name, last_name, email, hire_date)
VALUES ('John', 'Doe', 'john.doe@example.com', '2023-10-01');
这条语句将向 employees
表中插入一条新记录,其中 first_name
列为 ‘John’,last_name
列为 ‘Doe’,email
列为 ‘john.doe@example.com’,hire_date
列为 ‘2023-10-01’。由于 id
列是 AUTO_INCREMENT
,它会自动生成一个唯一的值。
插入多行数据
你也可以一次性插入多行数据,如下所示:
INSERT INTO employees (first_name, last_name, email, hire_date)
VALUES
('Jane', 'Smith', 'jane.smith@example.com', '2023-10-02'),
('Alice', 'Johnson', 'alice.johnson@example.com', '2023-10-03');
这条语句将向 employees
表中插入两行新记录。
注意事项
-
列名可选:如果你为所有列提供了值,并且值的顺序与表中列的顺序完全一致,你可以省略列名。但是,这通常不推荐,因为这样做会降低 SQL 语句的可读性,并且如果表结构发生变化,SQL 语句可能会出错。
-
数据类型匹配:确保你插入的值与列的数据类型相匹配。例如,不要将字符串插入到整数列中。
-
处理约束:如果你的表有约束(如主键约束、唯一约束、非空约束等),确保你插入的数据不违反这些约束。
-
使用事务:如果你的操作涉及多条 INSERT 语句,并且你需要确保它们要么全部成功,要么全部失败,你可以考虑使用事务。
-
安全性:在将用户输入的数据插入到数据库之前,始终要进行适当的验证和清理,以防止 SQL 注入攻击。
通过遵循这些步骤和注意事项,你可以有效地使用 INSERT INTO
语句向 MySQL 数据库表中添加数据。
使用LOAD DATA INFILE语句批量添加数据
当需要快速地从文件中加载大量数据到表中时,可以使用LOAD DATA INFILE语句。语法如下:
LOAD DATA INFILE 'filename.csv' INTO TABLE table_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
其中,filename.csv是要加载的文件名,table_name是要将数据插入的目标表,FIELDS TERMINATED BY ','指定字段分隔符,ENCLOSED BY '"'指定字段值被引号包围,LINES TERMINATED BY '\n’指定行分隔符,IGNORE 1 ROWS用于忽略文件中的标题行。
示例:
假设有一个名为users的表,且已经准备好一个名为data.csv的CSV文件,内容如下:
name,age,email
Alice,25,alice@example.com
Bob,30,bob@example.com
可以使用以下SQL语句将数据从data.csv文件中加载到users表中:
LOAD DATA INFILE 'data.csv' INTO TABLE users
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
其他插入数据的方式
-
INSERT INTO SELECT
从一个表中选择数据并插入到另一个表中。语法如下:
INSERT INTO table_name1 (column1, column2, ...) SELECT columnA, columnB, ... FROM table_name2 WHERE condition;
-
INSERT IGNORE
当存在主键冲突或其他约束时,忽略此次插入操作。语法与基本的INSERT INTO相同,只是在INSERT后加上IGNORE关键字。
-
REPLACE INTO
如果主键存在,则替换已有记录,否则插入新记录。语法与基本的INSERT INTO类似,只是在INSERT后加上REPLACE关键字。
-
INSERT INTO … ON DUPLICATE KEY UPDATE
当主键冲突时执行更新操作,否则执行插入。语法如下:
INSERT INTO table_name (column1, column2, ..., unique_key_column) VALUES (value1, value2, ..., unique_value) ON DUPLICATE KEY UPDATE column1=value1, column2=value2, ...;
注意事项
- 在插入数据之前,请确保已经连接到MySQL数据库,并且选择了要操作的数据库。
- 插入的数据必须与目标表的列类型和约束相匹配。如果插入的数据出现错误,MySQL将会返回错误消息。
- 对于LOAD DATA INFILE语句,需要确保MySQL服务器对指定文件有读取权限,且文件路径对于MySQL服务器是可访问的。如果文件位于服务器本地,可以使用相对路径或绝对路径;如果文件位于远程服务器,需要先将文件上传到MySQL服务器可访问的路径下。
通过以上方式,可以在MySQL数据库中方便地添加数据。在实际应用中,可以根据具体需求选择合适的数据插入方式。
相关文章:

【重学 MySQL】五十、添加数据
【重学 MySQL】五十、添加数据 使用INSERT INTO语句添加数据基本语法示例插入多行数据注意事项 使用LOAD DATA INFILE语句批量添加数据其他插入数据的方式注意事项 在MySQL中,添加数据是数据库操作中的基本操作之一。 使用INSERT INTO语句添加数据 使用 INSERT IN…...

硬货!Zabbix监控AIX系统服务案例
本文将介绍如何使用Zabbix自定义键值脚本方式监控AIX 系统IBM CICS中间件进程服务以及日志文件等信息。 Customer Information Control System (CICS) Transaction Server 是 IBM 针对 z/OS 的多用途事务处理软件。这是一个功能强大的应用程序服务器,用于大型和小型…...

python常见面试题
1、什么是Python?为什么它会如此流行? Python是一种解释的、高级的、通用的编程语言。 Python的设计理念是通过使用必要的空格与空行,增强代码的可读性。 它之所以受欢迎,就是因为它具有简单易用的语法。 ▍2、为什么Python执…...

低功耗接地故障控制器D4145
一、概述 D4145 是一个接地故障断路器。它能够检测到不良的接地条件,譬如装置接触到水时,它会在有害或致命的电击发生之前将电路断开。 D4145能检测并保护从火线到地线,从零线到地线的故障.这种简单而传统的电路设计能够确保其应用自如和长时间的可靠性。…...
SpringMVC的处理流程
深入理解 SpringMVC 的请求处理流程:从用户请求到视图渲染的八个步骤 SpringMVC 是当前流行的基于 Java 的 Web 框架之一,它通过前端控制器 DispatcherServlet 将用户的 HTTP 请求统一接收并处理,随后将请求分发到具体的处理器(通…...

SpringBoot统一日志框架
在项目开发中,日志十分的重要,不管是记录运行情况还是定位线上问题,都离不开对日志的分析。 1.日志框架的选择 市面上常见的日志框架有很多,它们可以被分为两类:日志门面(日志抽象层)和日志实…...

vue-live2d看板娘集成方案设计使用教程
文章目录 前言v1.1.x版本:vue集成看板娘(暂不使用,在v1.2.x已替换)集成看板娘实现看板娘拖拽效果方案资源备份存储 当前最新调研:2024.10.2开源方案1:OhMyLive2D(推荐)开源方案2&…...
springboot接口如何支持400并发量
Spring Boot 本身并不直接限制并发量,但是你可以通过配置来优化应用以处理更多的并发请求。以下是一些关键配置和优化技巧: 服务器连接配置(application.properties 或 application.yml): # 服务器连接数配置 server.tomcat.max…...
Verilog中的: `+:` 和 `-:`
: 和 -: 标准解释 logic [15:0] down_vect; logic [0:15] up_vect;down_vect[lsb_base_expr : width_expr] up_vect [msb_base_expr : width_expr] down_vect[msb_base_expr -: width_expr] up_vect [lsb_base_expr -: width_expr]举例 reg [31:0] dword; reg [7:0] byte0…...
为何四次挥手要等待2MSL
参考文章:https://zhuanlan.zhihu.com/p/204988465 A主动关闭连接一方,B是被动关闭一方 我们假设A发送了ACK报文后过了一段时间t之后B才收到该ACK,则有 0 < t < MSL。因为A并不知道它发送出去的ACK要多久对方才能收到,所以…...

C++——模拟实现list
1.初步实现结点和链表 namespace jxy {template<class T>struct list_node{T _data;list_node<T>* _prev;list_node<T>* _next;list_node(const T& x T()):_data(x),_prev(nullptr),_next(nullptr){}};template<class T>class list//list的框架本…...
React中useState、useReducer与useRef
useState 详解 useState 是 React 函数组件中用于管理组件状态的 Hook。它提供了一种简洁的方式来在函数组件中添加状态,并在状态改变时触发组件重新渲染。以下是 useState 的详细解析: 一、基本概念 useState 是一个函数,它接收一个初始状…...

ReGCL Rethinking Message Passingin Graph Contrastive Learning
AAAI24 推荐指数: #paper/⭐ 总体说:利用梯度对对比正负样本加权的。个人觉得和与正负样本加权没有区别,读完之后不想做笔记了。...

ubutun安装ffmpeg
安装依赖 sudo apt-get install yasm sudo apt-get install libsdl1.2-dev sudo apt-get install libsdl2-dev 下载安装 tar -zxvf filename.gz ./configure --enable-shared --prefix/usr/local/ffmpeg make -j4 sudo make install 添加路径 路径/usr/local/ffmpeg…...

Vue的基本用法及模板语法
Vue.js使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue实例的数据。所有 Vue.js的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。 在底层的实现上,Vue将模板编译成虚拟 DOM 渲染函数。结合响应系…...
Redis数据库与GO完结篇:redis操作总结与GO使用redis
一、redis操作总结 由于写redis命令的时候有提示符,所以下表只给出命令名称 数据类型操作简介字符串GET, SET, MGET, MSET, SETEX,DEL最基本的数据类型,存储任意二进制数据,支持简单操作和原子计数。适合存储重复数据。哈希HSET, HGET, HDE…...
《重生到现代之从零开始的C语言生活》—— 动态内存管理
动态内存分配 我们在开辟内存的时候就是 int a 3;这样 但是这样开的空间大小是固定的,且大小不能调整 但是如果我们用动态内存开辟的话,就可以自己申请和释放空间、 malloc 是C语言提供的一个开辟动态空间的函数 void* malloc (size_t size);//si…...

四、Spring Boot集成Spring Security之登录登出业务逻辑
Spring Boot集成Spring Security之登录登出业务逻辑 一、概要说明二、基于内存的用户名密码1、默认用户名密码2、自定义用户名密码3、为方便测试添加测试接口TestController 三、登录登出重要概念介绍四、登录业务逻辑1、登录业务相关过滤器2、访问业务请求处理流程①、访问业务…...

pipe和pipefd
Linux 中 pipe 的详细介绍 在 Linux 中,pipe 是一个系统调用,用于创建一个管道,这是一种用于进程间通信(IPC)的机制。管道允许两个进程之间进行单向数据传输,通常是一个进程向管道写入数据,而另…...

无人机之飞控仿真技术篇
一、无人机飞控仿真技术的定义 无人机飞控仿真技术主要是指飞行控制系统仿真,它是以无人机的运动情况为研究对象,面向对象的复杂系统仿真。通过该技术,可以模拟无人机的飞行过程,评估飞行控制系统的性能,优化飞行参数&…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...