【MySQL进阶之路丨第八篇】MySQL数据的插入及查询

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【MySQL进阶之路丨第八篇】MySQL数据的插入及查询

在上一篇中我们介绍了数据表的创建和删除;在开发中,了解数据库中数据的运行方式、运行逻辑是十分重要的。

这一篇我们使用命令行方式来帮助读者掌握MySQL数据的插入及查询。


1️⃣MySQL数据插入

在MySQL数据库中,使用 INSERT INTO 语句来插入数据。

而INSERT INTO语法有两种常见的格式,是需要我们掌握的:

1.插入单行数据:

INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);

例如,要向名为 “users” 的表中插入一条记录,包含id、name和email字段:

INSERT INTO users (id, name, email) VALUES (1, 'John', 'john@example.com');

注意:值与列的数据类型要相一致,我们不能在id列插入字符串,这是不合法的。

2.插入多行数据:

INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...), (值1, 值2, 值3, ...), ...;

例如,要向名为 “users” 的表中插入多条记录:

INSERT INTO users (id, name, email) VALUES 
(1, 'John', 'john@example.com'),
(2, 'Jane', 'jane@example.com'),
(3, 'Mike', 'mike@example.com');

这两种语法可以根据具体情况进行选择和使用。

此外,还可以使用SELECT语句将查询结果插入到表中:

INSERT INTO 表名 (列1, 列2, 列3, ...)
SELECT 查询语句;

例如,将另一个表中符合条件的记录插入到名为 “users” 的表中:

INSERT INTO users (id, name, email)
SELECT id, name, email FROM 另一个表 WHERE 条件;

再次提醒,插入数据时需要确保符合表结构和约束条件,否则可能会导致插入失败。

命令行插入

插入数据的方式有两种,一种是命令行插入,另一种是PHP脚本插入。

命令行插入会比PHP脚本插入更为简单,我们举个例子:

现在有一个class表,包含 id、学生名字和学生班级字段

如果要插入张三1班、李四2班、王五3班,我们可以分三次插入单行数据:

回显如下:

我们也可以一次性插入多行数据:

INSERT INTO class (id, name, class)
VALUES
  (1, '张三', '一班'),
  (2, '李四', '二班'),
  (3, '王五', '三班');

回显如下:

我们还可以使用SELECT语句将a表的数据插入到class表中:

INSERT INTO class (id, name, class)
SELECT id, name, class FROM a;

可以看到数据插入成功:

PHP脚本插入

我们可以使用PHP中的 mysqli_query() 函数 来执行 SQL INSERT INTO命令从而插入数据

语法如下:

mysqli_query(connection,query,resultmode);

参数说明:

connection: MySQL 数据库连接对象。可以使用 mysqli_connect() 函数创建连接,或者使用已经建立的连接对象。
query: 要执行的 SQL 查询语句。
resultmode(可选): 结果模式,指定查询结果的返回方式,默认为 MYSQLI_STORE_RESULT。

举个例子:

<?php
// 创建数据库连接
$conn = mysqli_connect('localhost', 'root', 'qiushuo', 'mysqlpractice');
// 检查连接是否成功
if (!$conn) {
    die("连接数据库失败: " . mysqli_connect_error());
}
// 要插入的数据
$id = 4;
$name = '王二';
$class = '四班';
// 构造插入语句
$query = "INSERT INTO class (id, name, class)
          VALUES ($id, '$name', '$class')";
// 执行插入语句
$result = mysqli_query($conn, $query);
// 检查插入是否成功
if ($result) {
    echo "数据插入成功!";
} else {
    echo "数据插入失败: " . mysqli_error($conn);
}
// 关闭数据库连接
mysqli_close($conn);
?>

运行该文件后,数据即可被插入到class表中。

该种方法读者可不用掌握,了解即可。


2️⃣MySQL数据查询

接着我们学习MySQL命令行数据查询

MySQL 数据库使用SQL SELECT语句来查询数据。

查询数据基本的 SELECT 语法:

SELECT column1, column2, ... FROM table_name;

通用的 SELECT 语法:

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]

结构说明:

column_name:列名,表示你要选择的数据列。

table_name:表名,表示你要从哪个数据表中查询数据。

WHERE Clause(可选):条件子句,用于筛选满足特定条件的行。你可以使用比较运算符和逻辑运算符来构建条件表达式。

LIMIT N(可选):限制返回的行数为 N 条。

OFFSET M(可选):从结果集中的第 M 行开始返回数据。

以下是一些示例说明:

1.查询指定列的数据:

SELECT column1, column2
FROM table_name;

这会返回 table_name 表中 column1 和 column2 列的所有行。

例如我们查询class表中name和class列:

SELECT name, class
   FROM class;

返回结果:

2.带有 WHERE 子句的条件查询:

SELECT column1, column2
FROM table_name
WHERE condition;

在 WHERE 子句中添加条件表达式,筛选出满足条件的行。

例如我们查询仅在二班的学生:

SELECT id,name,class
FROM class
WHERE class='二班';

返回结果:

3.带有 LIMIT 子句的限制行数查询:

SELECT column1, column2
FROM table_name
LIMIT 10;

这将返回 table_name 表中的前 10 行数据。

例如我们仅查询前两行数据:

SELECT id,name,class
FROM class
LIMIT 2;

返回结果:

4.带有 OFFSET 子句的分页查询:

SELECT column1, column2
FROM table_name
LIMIT 10 OFFSET 20;

这会返回 table_name 表中从第 21 行开始的 10 行数据,即返回结果集的第 21 到 30 行。

我们也可以用这种方法查询第一到第三行

SELECT id, name,class
FROM class
LIMIT 3 OFFSET 0;


3️⃣总结

以上为 【MySQL进阶之路丨第八篇】MySQL数据的插入及查询,带领读者学习数据的插入及查询原理,通过具体实操实现对MySQL数据库的深度理解。

后续将分享 【MySQL进阶之路丨第九篇】一文带你精通MySQL子句

我是秋说,我们下次见。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
12天前
|
NoSQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之如何将MySQL的CDC实时数据写入到Hudi
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
12天前
|
SQL 消息中间件 关系型数据库
实时计算 Flink版产品使用合集之 sql采集mysql能拿到before的数据吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
12天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之写doris,mysql字段变更,重新提交才能同步新字段数据吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
12天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之从MySQL同步数据到Doris时,历史数据时间字段显示为null,而增量数据部分的时间类型字段正常显示的原因是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1天前
|
SQL 关系型数据库 MySQL
【MySQL】复合查询
【MySQL】复合查询
|
8天前
|
关系型数据库 MySQL Java
MySQL表的进阶知识(下)
MySQL表的进阶知识
15 0
|
8天前
|
关系型数据库 MySQL 数据库
MySQL表的进阶知识(上)
MySQL表的进阶知识
20 0
|
8天前
|
消息中间件 存储 关系型数据库
【微服务】mysql + elasticsearch数据双写设计与实现
【微服务】mysql + elasticsearch数据双写设计与实现
|
9天前
|
SQL 分布式计算 关系型数据库
使用 Spark 抽取 MySQL 数据到 Hive 时某列字段值出现异常(字段错位)
在 MySQL 的 `order_info` 表中,包含 `order_id` 等5个字段,主要存储订单信息。执行按 `create_time` 降序的查询,显示了部分结果。在 Hive 中复制此表结构时,所有字段除 `order_id` 外设为 `string` 类型,并添加了 `etl_date` 分区字段。然而,由于使用逗号作为字段分隔符,当 `address` 字段含逗号时,数据写入 Hive 出现错位,导致 `create_time` 值变为中文字符串。问题解决方法包括更换字段分隔符或使用 Hive 默认分隔符 `\u0001`。此案例提醒在建表时需谨慎选择字段分隔符。
|
12天前
|
SQL 关系型数据库 MySQL
解决向MySQL中导入文件中的 数据时出现的问题~
解决向MySQL中导入文件中的 数据时出现的问题~