尽管近年来出现了 mongodb、firebase 和 redis 等现代 Nosql 数据库,但 SQL 数据库在开发人员中仍然很受欢迎。
SQL(结构化查询语言)是用于与各种数据库中的数据交互的语言,包括 mysql、postgreSQL、Oracle 和 MS SQL Server 等流行数据库。
在本文中,您将学习开始使用 MySQL 所需的一切知识,MySQL 是一个开源数据库,为 wordpress 等内容管理系统、shopify 等电子商务平台以及 Twitter 等社交媒体平台提供支持。
您将了解 MySQL 的工作原理、关系数据库及其一些关键概念、如何使用命令行安装 MySQL 数据库并与之交互,以及在 MySQL 中创建、读取、更新和删除数据的现代 SQL 语法。
了解对象关系映射器 (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 中有多种数据类型,不同 SQL 数据库的数据类型也各不相同。
您还会注意到id接受整数值的键前面也有一个键。这表明id是用主键约束定义的。
因此,每一列上的值id不能为空,必须是唯一的。因此,两个或多个用户永远不会共享相同的主键,并且每一行都可以通过其主键来标识。
这些规则共同构成了用户表的模式。
让我们更深入地了解 MySQL 数据库中的约束。
约束条件
我们之前看到了主键约束,它确保指定键的值对于表中的每一列都是唯一的。
在 MySQL 中,约束是允许或限制将哪些值存储在表中的规则。它们有助于限制将插入表中的数据类型,确保表内数据的准确性和完整性。
MySQL中常用的约束如下:
NOT NULL: 确保列不能有 NULL 值
UNIQUE:确保列中的所有值彼此不同
PRIMARY KEY:NOT NULL 和 UNIQUE 的组合——唯一标识表中的每一行
FOREIGN KEY: 用于将两个表链接在一起
CREATE INDEX:用于非常快速地从数据库中创建和检索数据
CHECK:确保列中的值满足指定条件
DEFAULT:如果未指定值,则为列设置默认值
数据库规范化
为了添加更多上下文,我们假设用户表用于存储在线购物网站中的注册用户。
通常,在在线购物网站的数据库中,必须有一个产品表和一个购物车表。products将包含用户可用的所有产品,而carts将包含特定用户打算购买的特定商品,以及每件商品的数量。
到目前为止创建的所有表如下:
所有这些表都是唯一的实体。这意味着购物车表不需要存储有关用户的任何信息。
从技术上讲,没有什么能阻止我们将购物车数据合并到用户表中。毕竟,两组信息相互关联(用户拥有购物车)。但是,这种方法最终会导致表格变得拥挤,难以管理。
相反,我们通过创建一个单独的购物车表来存放所有与购物车相关的数据,从而采取了一种更可持续的方法。然后,我们通过在购物车表中放置外键user_id和来创建对其他表的引用。product_id
这样,购物车可以访问关于拥有购物车的用户和购物车中存在的产品的任何信息,尽管没有任何这些信息物理存储在其中。
这种在关系数据库中组合和链接表的方法称为规范化。我在本文中只谈到了规范化的基础知识——如果您正在为您的 Web 应用程序设计数据库架构,那么值得阅读更多关于规范化的内容。
安装和学习如何使用 MySQL
现在我们在更高层次上对 MySQL 和 MySQL 服务器有了一些了解,让我们开始在我们的系统上安装 MySQL。
要在您的系统上安装 MySQL,请转到 MySQL 社区下载页面并下载 MySQL 的安装程序。
下载完成后,运行安装程序并完成安装向导以安装 MySQL。
选择安装类型时,请确保包括 MySQL 服务器产品。我建议使用Developer Default选项。
在开始使用 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 );
对于users中的每一列,我们指定了该列的数据类型。我们还向id和email列添加了一堆约束。
运行该命令将在您的数据库中创建一个名为users的空但结构化的表。
在表中创建新记录
要在表中创建新记录,请使用INSERT INTO语句后跟要将值插入到的表:
INSERT INTO users(first_name, last_name, email, password) VALUES( 'Kingsley', 'Ubah', 'ubahthebuilder@gmail.com', '12345678' );
在第一个括号中,我们指定了要插入值的列。然后,在第二个括号中,我们按照正确的顺序指定了要插入的值。
运行该命令会将这些值插入到用户表中的指定列中。
因为我们把id字段设置为自增,所以会自动增加值。此外,时间戳由 MySQL 自动生成,因此我们无需自己指定。
从表中读取
要从数据库中查询数据,请使用该SELECT语句。
例如,如果我们想从users表中选择所有内容,我们使用以下语句:
SELECT * FROM users;
星号 ( *) 代表我们数据库中的所有内容。该语句将返回整个表以及每一列。
如果我们只想要列的子集,比如id和email,我们指定列来代替星号:
SELECT id, email FROM users;
在选择数据方面,我们的能力是无限的。
删除表
要从 MySQL 中完全删除表,请使用DROP后跟表名的语句:
DROP TABLE users;
现在,您在使用此命令时需要小心!它将永久删除用户表中的所有数据。另外,不要将它与DROP DATABASE删除整个数据库的语句混淆。
而已!现在您知道如何使用 MySQL 了!
MySQL 是一种开源关系数据库管理系统,即使在今天,它仍然为 Web 的重要部分提供支持。结构化查询语言或 SQL 用于在 MySQL 数据库中操作和存储数据。
在这篇文章中,我们回顾了 SQL 的一些关键概念,包括 ORM、模式、约束和数据库规范化。我们还回顾了 MySQL 的安装和设置过程。
最后,我们介绍了一些负责在 MySQL 中操作数据的 SQL 语句。
- 模式和数据类型
- 约束条件
- 数据库规范化
- 创建 MySQL 服务器和数据库
- 在数据库中创建表
- 在表中创建新记录
- 从表中读取
发表评论