【重学 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 表中插入两行新记录。

注意事项

  1. 列名可选:如果你为所有列提供了值,并且值的顺序与表中列的顺序完全一致,你可以省略列名。但是,这通常不推荐,因为这样做会降低 SQL 语句的可读性,并且如果表结构发生变化,SQL 语句可能会出错。

  2. 数据类型匹配:确保你插入的值与列的数据类型相匹配。例如,不要将字符串插入到整数列中。

  3. 处理约束:如果你的表有约束(如主键约束、唯一约束、非空约束等),确保你插入的数据不违反这些约束。

  4. 使用事务:如果你的操作涉及多条 INSERT 语句,并且你需要确保它们要么全部成功,要么全部失败,你可以考虑使用事务。

  5. 安全性:在将用户输入的数据插入到数据库之前,始终要进行适当的验证和清理,以防止 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;

其他插入数据的方式

  1. INSERT INTO SELECT

    从一个表中选择数据并插入到另一个表中。语法如下:

    INSERT INTO table_name1 (column1, column2, ...)
    SELECT columnA, columnB, ...
    FROM table_name2
    WHERE condition;
    
  2. INSERT IGNORE

    当存在主键冲突或其他约束时,忽略此次插入操作。语法与基本的INSERT INTO相同,只是在INSERT后加上IGNORE关键字。

  3. REPLACE INTO

    如果主键存在,则替换已有记录,否则插入新记录。语法与基本的INSERT INTO类似,只是在INSERT后加上REPLACE关键字。

  4. 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, ...;
    

注意事项

  1. 在插入数据之前,请确保已经连接到MySQL数据库,并且选择了要操作的数据库。
  2. 插入的数据必须与目标表的列类型和约束相匹配。如果插入的数据出现错误,MySQL将会返回错误消息。
  3. 对于LOAD DATA INFILE语句,需要确保MySQL服务器对指定文件有读取权限,且文件路径对于MySQL服务器是可访问的。如果文件位于服务器本地,可以使用相对路径或绝对路径;如果文件位于远程服务器,需要先将文件上传到MySQL服务器可访问的路径下。

通过以上方式,可以在MySQL数据库中方便地添加数据。在实际应用中,可以根据具体需求选择合适的数据插入方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/886292.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单链表的增删改查(数据结构)

之前我们学习了动态顺序表,今天我们来讲一讲单链表是如何进行增删改查的 一、单链表 1.1、单链表概念 概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 1.2、链表与顺序表的…

python的几个基本数据类型及其相关操作(字符串str,元组tuple,列表list,字典dict)

一、str及其相关操作 1、字符串的基本方法 字符串的索引、获取字符串长度、利用index获取索引位置,统计某字符在字符串中出现的次数。用法如下方代码。 python的变量在创建时不需要声明其数据类型,他会自动识别变量后的数据类型,所以创建一…

(undone) 阅读 MapReduce 论文笔记

参考:https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf 摘要:简单介绍了 MapReduce 是在大型分布式系统上工作的 Introduction 的内容总结: 1.介绍背景:为什么我们需要分布式系统?MapReduce 的意义是哪些 2.简…

运动耳机哪个牌子的好?5大质量不凡的运动耳机测评力荐!

在快节奏的生活中,无论是晨跑、健身还是户外探险,音乐都成了许多人不可或缺的陪伴。运动耳机,作为一种专为运动场景设计的音频设备,旨在提供高质量音频体验的同时,保证佩戴的舒适度和运动的安全性。 (上图为…

YOLOv11改进 | 主干篇 | YOLOv11引入MobileNetV4

1. MobileNetV4介绍 1.1 摘要: 我们推出了最新一代的 MobileNet,称为 MobileNetV4 (MNv4),具有适用于移动设备的通用高效架构设计。 在其核心,我们引入了通用倒瓶颈(UIB)搜索块,这是一种统一且…

小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态

随着信息技术的飞速发展,企业在处理海量数据时所面临的挑战日益严峻。特别是在年轻娱乐领域,用户行为的多样性和数据量的激增对数据存储与分析技术提出了更高的要求。在此背景下,小川凭借其前瞻性的技术视野,选择了MongoDB作为其数…

AlmaLinux 9 安装mysql8.0.38

文件下载 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.39-linux-glibc2.12-x86_64.tar 选择合适系统版本 下载后解压 tar -xvf mysql-8.0.39-linux-glibc2.12-x86_64.tar解压后里面有三个文件夹 使用mysql-8.0.39-linux-glibc2.12-x86_64.tar.xz即可&#xff0c…

Redis中String类型的常用命令(append,getrenge,setrange等命令)

Redis----String命令 前言.常见的String存储类型. 常见命令1. set 命令2. get 命令3. mget命令与mset命令4. setnx命令5. setex与psetex命令6. incr与incrby与incrbyfloat命令7. decr与decrby命令8. append命令9. getrange和setrange命令10. strlen命令. 前言. 常见的String存…

【Kubernetes】常见面试题汇总(四十五)

目录 102.使用 Kubernetes 时可以采取的最佳安全措施是什么? 103.什么是联合集群? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目…

高中教辅汇总【35GB】

文章目录 一、资源概览二、资源亮点三、获取方式 一、资源概览 这份教辅资源汇总,精心搜集了高中各学科的海量教辅资料,总容量高达35GB,覆盖了语文、数学、英语、物理、化学、生物、历史、地理、政治等所有必修及选修科目。从基础知识点到难…

插槽slot在vue中的使用

介绍 在 Vue.js 中,插槽(slot)是一种用于实现组件内容分发的功能。通过插槽,可以让父组件在使用子组件时自定义子组件内部的内容。插槽提供了一种灵活的方式来组合和复用组件。 项目中有很多地方需要调用一个组件,比…

【H2O2|全栈】关于CSS(9)CSS3扩充了哪些新鲜的东西?(二)

目录 CSS3入门 前言 准备工作 伪元素补充 :before :after 文本溢出属性 转换效果 预告和回顾 后话 CSS3入门 前言 本系列博客主要介绍CSS相关的知识点。 这一期主要介绍以下几个CSS3的知识点: 伪元素补充文本溢出属性转换 没有基础的朋友&#xff…

【Docker】配置文件

问题 学习Docker期间会涉及到docker的很多配置文件,可能会涉及到的会有: /usr/lib/systemd/system/docker.service 【docker用于被systemd管理的配置文件】 /etc/systemd/system/docker.service.d【覆盖配置文件的存放处】 /etc/systemd/system/mul…

网页前端开发之Javascript入门篇(4/9):循环控制

Javascript循环控制 什么是循环控制? 答:其概念跟 Python教程 介绍的一样,只是语法上有所变化。 参考流程图如下: 其对应语法: var i 0; // 设置起始值 var minutes 15; // 设置结束值(15分钟…

VMware Aria Operations for Networks 6.13 发布,新增功能概览

VMware Aria Operations for Networks 6.13 - 网络和应用监控工具 请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-networks/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org VMware Aria Oper…

Golang | Leetcode Golang题解之第440题字典序的第K小数字

题目&#xff1a; 题解&#xff1a; func getSteps(cur, n int) (steps int) {first, last : cur, curfor first < n {steps min(last, n) - first 1first * 10last last*10 9}return }func findKthNumber(n, k int) int {cur : 1k--for k > 0 {steps : getSteps(cu…

Llama 系列简介与 Llama3 预训练模型推理

1. Llama 系列简介 1.1 Llama1 由 Meta AI 发布&#xff0c;包含 7B、13B、33B 和 65B 四种参数规模的开源基座语言模型 数据集&#xff1a;模型训练数据集使用的都是开源的数据集&#xff0c;总共 1.4T token 模型结构&#xff1a;原始的 Transformer 由编码器&#xff08…

C++入门基础 (超详解)

文章目录 前言1. C关键字2. C的第一个程序3. 命名空间3.1 namespace的定义3.2 命名空间的嵌套3.3 命名空间使用3.4 查找优先级总结 4. C输入和输出4.1 标准输入输出 (iostream库)4.2 文件输入输出 (fstream库)4.3 字符串流 (sstream库)4.4 C格式化输出4.5 std::endl和\n的区别 …

56 门控循环单元(GRU)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录门控循环单元&#xff08;GRU&#xff09;门控隐状态重置门和更新门候选隐状态隐状态 从零开始实现初始化模型参数定义模型训练与预测 简洁实现小结练习 门控循环单元&#xff08;GRU&#xff09; 之前我们讨论了如何在循环神经网络中计算梯…

生信初学者教程(二十三):REF+SVM筛选候选标记物

文章目录 介绍加载R包导入数据准备数据机器学习特征筛选数据分割基础模型Recursive Feature Elimination特征筛选调参最终分类模型测试集验证标记基因输出结果总结介绍 采用了REF(Recursive Feature Elimination) 结合 SVM(Support Vector Machine) 的方法,对差异基因(参…