搜索
首页后端开发php教程踏上您的 MySQL 之旅

尽管近年来出现了 MongoDB、Firebase 和 Redis 等现代 NoSQL 数据库,但 SQL 数据库在开发人员中仍然非常受欢迎。

SQL(结构化查询语言)是一种用于与各种数据库中的数据交互的语言,包括 MySQL、PostgreSQL、Oracle 和 MS SQL Server 等流行数据库。

在本文中,您将了解开始使用 MySQL 所需的一切知识,MySQL 是一个开源数据库,为 WordPress 等内容管理系统、Shopify 等电子商务平台以及 Twitter 等社交媒体平台提供支持。

您将了解 MySQL 的工作原理、关系数据库及其一些关键概念、如何使用命令行安装 MySQL 数据库并与之交互,以及用于创建、读取、更新和删除数据的现代 SQL 语法在 MySQL 中。

了解对象关系映射器 (ORM)

大多数使用关系数据库的开发人员实际上并不编写原始 SQL。更常见的是,他们使用执行对象关系映射或 ORM 的库。

这些库基本上使您的数据库表看起来像站点服务器端的对象,因此您可以使用您选择的任何面向对象的编程语言来轻松操作数据。

ORM 的示例包括 Sequelize (JavaScript)、Eloquent (Laravel)、SQLAlchemy (Python) 和 Active Record (Ruby on Rails)。

ORM 无需编写原始 SQL 代码。相反,您可以利用面向对象编程的知识来创建、读取、更新和删除 SQL 数据库上的数据。 ORM 使关系数据库的使用更加简单、直观。

关系数据库管理系统 (RDMS)

本质上,关系数据库管理系统由两个主要组件组成:数据库和查询语言。

数据库本身只是表的集合。在每个表中,您的实际数据都按列和行组织,与电子表格相同。关系数据库中的表可以根据每个表通用的数据进行链接或关联。

查询语言用于操作和读取数据库中的数据。对于大多数关系数据库,用于操作数据的查询语言是 SQL 的变体。

SQL 数据库中的一些关键概念

如果你想学习如何使用MySQL,我们必须先了解一些基本概念,以便以可视化的方式解释以下SQL数据库概念,我将使用一个名为的数据库可视化工具DrawSQL。首先,我们将了解架构和数据类型。

架构和数据类型

您可以将架构视为定义表的整体结构及其与其他表的关系的蓝图。

例如,考虑以下用户表的架构:

踏上您的 MySQL 之旅
用户表

在上面的表格图中,您会注意到每一行都是一个字典,其中键代表数据库中的列,值代表可以存储在其中的数据类型。

MySQL中有多种数据类型,不同的SQL数据库数据类型也不同。

您还会注意到接受整数值的 id 键前面也有一个键。这表明 id 是使用主键约束定义的。

因此每一列的id的值不能为空,且必须唯一。因此,两个或多个用户永远不能共享相同的主键,并且每一行都可以通过其主键来标识。

这些规则共同构成了users 表的架构。

让我们更深入地了解 MySQL 数据库中的约束。

约束

我们之前看到了主键约束,它确保指定键的值对于表中的每一列都是唯一的。

在 MySQL 中,约束是允许或限制表中存储哪些值的规则。它们有助于限制将插入表中的数据类型,确保表内数据的准确性和完整性。

MySQL 中常用以下约束:

  • NOT NULL:确保列不能有 NULL 值
  • UNIQUE:确保列中的所有值都彼此不同
  • 主键:NOT NULL 和UNIQUE 的组合——唯一标识表中的每一行
  • 外键:用于将两个表链接在一起
  • CREATE INDEX:用于快速创建数据库并从数据库检索数据
  • CHECK:确保列中的值满足指定条件
  • DEFAULT:如果未指定值,则为列设置默认值

数据库规范化

为了添加更多上下文,我们假设用户表用于存储在线购物网站中的注册用户。

通常,在线购物网站的数据库中必须有一个产品表和一个购物车表。 产品将包含用户可用的所有产品,购物车将包含特定用户打算购买的特定商品以及每件商品的数量。 p>

到目前为止创建的所有表格如下:

踏上您的 MySQL 之旅

所有这些表都是唯一的实体。例如,这意味着 carts 表不需要存储有关用户的任何信息。

从技术上讲,没有什么可以阻止我们将购物车数据合并到用户表中。毕竟,两组信息都是相互关联的(用户拥有购物车)。然而,这种方法最终会导致表拥挤,从而非常难以管理。

相反,我们采取了更可持续的方法,创建一个单独的购物车表来存储所有与购物车相关的数据。然后,我们通过将外键 user_idproduct_id 放置在 carts 表中来创建对其他表的引用。

这样,购物车就可以访问有关拥有购物车的用户以及购物车中存在的产品的任何信息,尽管其中没有实际存储任何此类信息。

这种在关系数据库中组合和链接表的方法称为规范化。我在本文中只涉及了规范化的基础知识 - 如果您正在为 Web 应用程序设计数据库模式,那么值得阅读更多有关规范化的内容。

安装并学习如何使用 MySQL

现在我们已经对 MySQL 和 MySQL 服务器有了更高层次的了解,让我们通过在我们的系统上安装 MySQL 来进行实践。

要在系统上安装 MySQL,请转至 MySQL 社区下载页面并下载 MySQL 安装程序。

下载完成后,运行安装程序并完成安装向导以安装 MySQL。

选择安装类型时,请确保包含 MySQL 服务器产品。我建议使用开发人员默认选项。

在 MySQL 入门的设置过程中,系统会要求您创建用户名和密码。请务必记住这些,因为稍后您将需要它们来连接到数据库。

成功安装后,您应该可以从命令行访问 MySQL 服务器命令。

但是,要从命令行使用 MySQL,您首先需要验证自己的身份。运行以下命令,并在占位符中填写您的用户名:

mysql -u <your username> -p

系统将提示您输入管理员密码,如果这两个详细信息均正确,您将被授予从命令行访问 MySQL 的权限。

请记住,MySQL 的默认用户名是root,默认密码为空。

MySQL 如何处理常见 SQL 操作?

创建 MySQL 服务器和数据库

要在 MySQL 中创建数据库,我们使用 CREATE DATABASE 语句,后跟数据库名称:

CREATE DATABASE shopping_site;

语句是告诉系统做某事的代码。 SQL 语句始终以分号结尾。大写的单词是保留的 SQL 关键字,SQL 将解释它们来执行某些操作。

运行上述命令将在 MySQL 中创建一个名为 shopping_site 的空数据库。

要查看 MySQL 实例中存在的所有数据库,请运行 SHOW DATABASE

在数据库中创建表

要在新数据库中创建表,请使用 CREATE TABLE 语句,后跟表名称和包含我们要在此表中包含的列列表的括号:

CREATE TABLE users(
    id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(255),
    last_name VARCHAR(255),
    email VARCHAR(255) UNIQUE NOT NULL,
    password VARCHAR(255),
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

对于用户中的每一列,我们指定了该列的数据类型。我们还向 idemail 列添加了一系列约束。

运行该命令将在数据库中创建一个名为users的空但结构化的表。

在表中创建新记录

要在表中创建新记录,请使用 INSERT INTO 语句,后跟要插入值的表:

INSERT INTO users(first_name, last_name, email, password)
VALUES(
    'Kingsley',
    'Ubah',
    'ubahthebuilder@gmail.com',
    '12345678'
);

在第一个括号中,我们指定了要插入值的列。然后,在第二个括号中,我们按照正确的顺序指定要插入的值。

运行该命令会将这些值插入到users表中的指定列中。

因为我们将id字段设置为自动递增,所以该值会自动添加。另外,时间戳是MySQL自动生成的,所以我们不需要自己指定。

从表中读取

要从数据库查询数据,请使用 SELECT 语句。

例如,如果我们想从 users 表中选择所有内容,我们可以使用以下语句:

SELECT * FROM users;

星号 (*) 代表我们数据库中的所有内容。该语句将返回整个表以及每一列。

如果我们只需要列的子集,例如 idemail,我们可以指定列来代替星号:

SELECT id, email FROM users;

在选择数据方面,我们的能力是无限的。

删除表格

要从 MySQL 中完全删除表,请使用 DROP 语句,后跟表名称:

DROP TABLE users;

现在,使用此命令时需要小心!它将永久删除users表中的所有数据。另外,不要将其与 DROP DATABASE 语句混淆,该语句会删除整个数据库。

就是这样!现在您知道如何使用 MySQL!

MySQL 是一个开源关系数据库管理系统,即使在今天,它仍然为网络的重要部分提供支持。结构化查询语言或 SQL 用于在 MySQL 数据库中操作和存储数据。

在这篇文章中,我们回顾了 SQL 的一些关键概念,包括 ORM、模式、约束和数据库规范化。我们还回顾了 MySQL 的安装和设置过程。

最后,我们介绍了一些负责在 MySQL 中操作数据的 SQL 语句。

以上是踏上您的 MySQL 之旅的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
哪些常见问题会导致PHP会话失败?哪些常见问题会导致PHP会话失败?Apr 25, 2025 am 12:16 AM

PHPSession失效的原因包括配置错误、Cookie问题和Session过期。1.配置错误:检查并设置正确的session.save_path。2.Cookie问题:确保Cookie设置正确。3.Session过期:调整session.gc_maxlifetime值以延长会话时间。

您如何在PHP中调试与会话相关的问题?您如何在PHP中调试与会话相关的问题?Apr 25, 2025 am 12:12 AM

在PHP中调试会话问题的方法包括:1.检查会话是否正确启动;2.验证会话ID的传递;3.检查会话数据的存储和读取;4.查看服务器配置。通过输出会话ID和数据、查看会话文件内容等方法,可以有效诊断和解决会话相关的问题。

如果session_start()被多次调用会发生什么?如果session_start()被多次调用会发生什么?Apr 25, 2025 am 12:06 AM

多次调用session_start()会导致警告信息和可能的数据覆盖。1)PHP会发出警告,提示session已启动。2)可能导致session数据意外覆盖。3)使用session_status()检查session状态,避免重复调用。

您如何在PHP中配置会话寿命?您如何在PHP中配置会话寿命?Apr 25, 2025 am 12:05 AM

在PHP中配置会话生命周期可以通过设置session.gc_maxlifetime和session.cookie_lifetime来实现。1)session.gc_maxlifetime控制服务器端会话数据的存活时间,2)session.cookie_lifetime控制客户端cookie的生命周期,设置为0时cookie在浏览器关闭时过期。

使用数据库存储会话的优点是什么?使用数据库存储会话的优点是什么?Apr 24, 2025 am 12:16 AM

使用数据库存储会话的主要优势包括持久性、可扩展性和安全性。1.持久性:即使服务器重启,会话数据也能保持不变。2.可扩展性:适用于分布式系统,确保会话数据在多服务器间同步。3.安全性:数据库提供加密存储,保护敏感信息。

您如何在PHP中实现自定义会话处理?您如何在PHP中实现自定义会话处理?Apr 24, 2025 am 12:16 AM

在PHP中实现自定义会话处理可以通过实现SessionHandlerInterface接口来完成。具体步骤包括:1)创建实现SessionHandlerInterface的类,如CustomSessionHandler;2)重写接口中的方法(如open,close,read,write,destroy,gc)来定义会话数据的生命周期和存储方式;3)在PHP脚本中注册自定义会话处理器并启动会话。这样可以将数据存储在MySQL、Redis等介质中,提升性能、安全性和可扩展性。

什么是会话ID?什么是会话ID?Apr 24, 2025 am 12:13 AM

SessionID是网络应用程序中用来跟踪用户会话状态的机制。1.它是一个随机生成的字符串,用于在用户与服务器之间的多次交互中保持用户的身份信息。2.服务器生成并通过cookie或URL参数发送给客户端,帮助在用户的多次请求中识别和关联这些请求。3.生成通常使用随机算法保证唯一性和不可预测性。4.在实际开发中,可以使用内存数据库如Redis来存储session数据,提升性能和安全性。

您如何在无状态环境(例如API)中处理会议?您如何在无状态环境(例如API)中处理会议?Apr 24, 2025 am 12:12 AM

在无状态环境如API中管理会话可以通过使用JWT或cookies来实现。1.JWT适合无状态和可扩展性,但大数据时体积大。2.Cookies更传统且易实现,但需谨慎配置以确保安全性。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器