MySQL 数据库基础

ops/2025/2/25 11:17:38/

1. MySQL 数据库基础

在这一部分,我们将学习 MySQL 的基本概念和常见的数据库操作,帮助你掌握如何创建数据库、表,并进行数据的增、删、改操作。同时,我们还会探讨一些常见的错误示例及其原因,帮助你避免常见的陷阱。最后,我们还会介绍一些常见的面试问题及其解答,帮助你更好地理解和运用 MySQL。

1.1 数据库、表、字段、记录的概念
  • 数据库(Database)数据库是一个用来存储数据的容器。一个 MySQL 数据库可以包含多个表,数据会被存储在这些表中。
  • 表(Table):表是数据库中的基本结构,用来存储具体的数据。表由行和列组成,行称为记录,列称为字段。
  • 字段(Field):字段是表中的一列,每个字段都有一个名字,用来存储特定类型的数据(如:整数、字符串、日期等)。
  • 记录(Record):记录是表中的一行,每一行包含多个字段的具体值。

举个例子,假设你有一个 “users” 表,字段包括 “id”、“name”、“age” 和 “email”。每一行记录则表示一个用户的信息。

1.2 MySQL 客户端工具的使用(使用 DataGrip)

在前一篇文章中,我们已经介绍了如何通过 DataGrip 来连接和配置 MySQL 数据库。如果你还没有配置好 MySQL 数据库连接,请参考先前的文章进行配置。

一旦配置好 MySQL 连接,你可以开始通过 DataGrip 来进行各种数据库管理和操作,包括执行 SQL 查询、查看表结构、编辑数据等。以下是一些常见的操作和技巧:

  • 创建和执行 SQL 查询:你可以在 DataGrip 的查询窗口中输入 SQL 语句,并通过 Run 按钮来执行查询。
  • 数据库结构管理:DataGrip 提供了图形化界面,可以查看和修改表结构,如添加字段、修改字段类型等。
  • 数据编辑:你可以直接在 DataGrip 中查看和编辑表中的数据。

如果你有任何疑问,随时可以参考 DataGrip 的帮助文档或者使用内置的提示功能来帮助你快速掌握更多操作。

1.3 数据库的创建与删除
1.3.1 创建数据库

你可以通过 CREATE DATABASE 命令创建一个新的数据库。例如,创建一个名为 my_database数据库

CREATE DATABASE my_database;
1.3.2 删除数据库

要删除数据库,可以使用 DROP DATABASE 命令。请注意,删除数据库会删除所有的表和数据,所以要小心使用:

DROP DATABASE my_database;
1.4 表的创建与删除
1.4.1 创建表

使用 CREATE TABLE 命令来创建表。在创建表时,您需要定义表的字段及其数据类型。以下是一个创建 “users” 表的例子:

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),age INT,email VARCHAR(100)
);
  • id 字段是主键,使用 AUTO_INCREMENT 可以自动生成唯一的 ID。
  • nameemail 字段的类型是 VARCHAR(100),表示最多可以存储 100 个字符。
  • age 字段的类型是 INT,表示存储整数。
1.4.2 删除表

删除表的命令是 DROP TABLE,如下所示:

DROP TABLE users;

删除表后,表中的所有数据将丢失。

1.5 插入、更新、删除数据
1.5.1 插入数据(INSERT INTO)

使用 INSERT INTO 命令将数据插入表中。假设我们要向 users 表插入一条新记录:

INSERT INTO users (name, age, email)
VALUES ('Alice', 25, 'alice@example.com');

在这个例子中,我们插入了一个包含姓名、年龄和邮箱的记录。注意,我们没有插入 id 字段,因为它是 AUTO_INCREMENT 的,会自动生成。

1.5.2 更新数据(UPDATE)

使用 UPDATE 命令修改表中的现有数据。假设我们想修改 Alice 的年龄:

UPDATE users
SET age = 26
WHERE name = 'Alice';

SET 后面指定我们要更新的字段和新值,WHERE 用于限制哪些记录会被更新。如果不加 WHERE,所有记录都会被更新。

1.5.3 删除数据(DELETE)

使用 DELETE 命令删除表中的数据。例如,删除 nameAlice 的记录:

DELETE FROM users
WHERE name = 'Alice';

同样地,如果不加 WHERE 条件,所有记录将会被删除。


1.6 常见的错误示例与原因解析
  1. 插入数据时字段数量不匹配

    INSERT INTO users (name, age)
    VALUES ('Bob', 30);
    

    错误原因:我们没有为 email 字段提供值,而 email 字段并没有设置为可空(NOT NULL)。解决方法是为 email 提供一个值,或者修改表结构使其允许空值。

  2. 更新时忘记加 WHERE 条件

    UPDATE users
    SET age = 30;
    

    错误原因:这条命令会把所有用户的年龄都更新为 30。为避免这种错误,应始终加上 WHERE 条件以限制更新的范围。

  3. 删除数据时忘记加 WHERE 条件

    DELETE FROM users;
    

    错误原因:此命令会删除 users 表中的所有数据。使用时务必小心,确保加上适当的 WHERE 条件。

  4. 删除不存在的表

    DROP TABLE non_existent_table;
    

    错误原因:如果表 non_existent_table 不存在,MySQL 会抛出错误。可以使用 IF EXISTS 来避免这种错误:

    DROP TABLE IF EXISTS non_existent_table;
    

1.7 常见的面试题及解答
  1. MySQL 中的 PRIMARY KEYUNIQUE 有什么区别?

    • PRIMARY KEY:主键是表中的唯一标识,它不能为空,每个表只能有一个主键。
    • UNIQUE:唯一约束也要求字段值唯一,但可以有多个唯一约束,且可以为空(除非明确设置 NOT NULL)。
  2. 什么是外键(Foreign Key)?
    外键是一个表中的字段,它指向另一个表的主键。外键约束确保两个表之间的数据一致性。例如,在 orders 表中,user_id 字段可以是 users 表的外键,确保每个订单都属于一个有效的用户。

  3. 什么是事务(Transaction)?
    事务是一组 SQL 操作,必须全部成功执行,或者全部失败。事务保证了数据库的一致性和完整性。事务通常包括四个特性:ACID(原子性、一致性、隔离性、持久性)。

  4. MySQL 中的 JOIN 有哪些类型?

    • INNER JOIN:只返回两个表中匹配的记录。
    • LEFT JOIN:返回左表的所有记录和右表中匹配的记录。
    • RIGHT JOIN:返回右表的所有记录和左表中匹配的记录。
    • FULL OUTER JOIN:返回两个表中所有的记录,匹配的部分会显示,未匹配的部分则显示 NULL

小结

在这一部分,我们介绍了 MySQL 的基本概念,包括数据库、表、字段、记录等,学习了如何使用 MySQL 客户端工具(如 DataGrip)来管理和操作数据库。我们还了解了如何创建和删除数据库和表,以及如何通过 SQL 命令进行数据的插入、更新和删除。

通过这些基础操作的学习,你可以在 MySQL 中进行常见的数据操作,同时避免一些常见的错误。掌握了这些基础,你将在开发过程中更加得心应手,能够更高效地进行数据存储和管理。


http://www.ppmy.cn/ops/161185.html

相关文章

Visual Studio C++中MT、MTd、MD、MDd都是什么

在 Visual Studio 的 C/C 运行时库配置中,MT、MTd、MD、MDd 是控制程序如何链接 C/C 标准库和运行时库的关键选项。它们的区别如下: 1. 基本分类 选项含义MT多线程静态链接 Release 版运行时库 (Multithreaded, Static Link)MTd多线程静态链接 Debug 版…

Node.js 中 child_process 模块教程

Node.js 中 child_process 模块教程 简介 Node.js 的 child_process 模块提供了在 Node.js 应用程序中创建和管理子进程的能力。这个功能对于执行系统命令、运行外部程序、以及充分利用多核 CPU 资源都非常有用。 主要方法 1. spawn() spawn() 方法用于启动一个新进程来执…

【MySQL】表的增删查改(CRUD)(上)

个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 CRUD:Create(新增数据)、Retrieve(查询数据)、Update(修改数据)、Delete(修改数据…

PyTorch gather 方法详解:作用、应用场景与示例解析(中英双语)

PyTorch gather 方法详解:作用、应用场景与示例解析 在深度学习和自然语言处理(NLP)任务中,我们经常需要从高维张量中提取特定索引的数据。 PyTorch 提供的 torch.gather 方法可以高效地从张量的指定维度收集数据,广泛…

利用LangChain实现BabyAGI

文章目录 BabyAGI介绍环境与工具向量存储构建任务链 本文将利用LangChain实现BabyAGI。通过本文内容,读者可以更加直观地看到每一步骤的运行情况,并且也可以在自己的环境中进行实验。 BabyAGI介绍 BabyAGI是由Yohei Nakajima在2023年5月发布的一个自治的…

视频大小怎么计算?视频码率是什么,构成视频清晰度的核心要素!

前言: 最近对高清视频比较感兴趣,码率是一个提及很多的词语,所以也就来了解一下码率。 1:含义 视频码率(Bitrate)是衡量视频数据在单位时间内传输或处理的数据量,通常以 比特每秒(…

kafka基本知识

什么是 Kafka? Apache Kafka 是一个开源的分布式流处理平台,最初由 LinkedIn 开发,后来成为 Apache 软件基金会的一部分。Kafka 主要用于构建实时数据管道和流处理应用程序。它能够高效地处理大量的数据流,广泛应用于日志收集、数…

详解 @符号在 PyTorch 中的矩阵乘法规则

详解 符号在 PyTorch 中的矩阵乘法规则 在 PyTorch 和 NumPy 中, 符号被用作矩阵乘法运算符,它本质上等价于 torch.matmul() 或 numpy.matmul(),用于执行张量之间的矩阵乘法。 在本篇博客中,我们将深入探讨: 运算符…