阅读本文并下载我们的免费备忘单,去使用开源的数据库吧。
当你写一个程序或配置一个服务时,你最终都要持久化存储信息。有时候,你只需要一个 INI 或者 YAML 配置文件就够了。而有时候,一个自定义格式的 XML 或者 JSON 或其他类似的文件会更好。
但也有时候你需要校验输入、快速查询信息、关联数据、通常还要熟练地处理你的用户的请求。这就是设计数据库的目的,而 MariaDB(由 MySQL 的原始开发人员开发的一个分支) 是一个极佳的选项。在本文中我使用的是 MariaDB,但这些信息同样适用于 MySQL。
通过编程语言与数据库进行交互是很普遍的。正因如此,出现了大量 Java、Python、Lua、PHP、Ruby、C++ 和其他语言的 SQL 库。然而,在使用这些库之前,理解数据库引擎做了什么以及为什么选择数据库是重要的对我们会很有帮助。本文介绍 MariaDB 和 mysql
命令来帮助你熟悉数据库处理数据的基本原理。
如果你还没有安装 MariaDB,请查阅我的文章 在 Linux 上安装 MariaDB。如果你没有使用 Linux,请参照 MariaDB 下载页面提供的指导方法。
与 MariaDB 交互
你可以使用 mysql
命令与 MariaDB 进行交互。首先使用子命令 ping
确认你的服务是运行着的,在提示后输入密码:
$ mysqladmin -u root -p ping
Enter password:
mysqld is alive
为了易于读者理解,打开一个交互式的 MariaDB 会话:
$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.
Commands end with ; or g.
[...]
Type 'help;' or 'h' for help.
Type 'c' to clear the current input statement.
MariaDB [(none)]>
你现在是在一个 MariaDB 子 shell 中,提示符是 MariaDB 提示符。普通的 Bash 命令在这里不能使用,只能用 MariaDB 命令。输入 help
(或 ?
)查看命令列表。这些是你的 MariaDB shell 的管理命令,使用它们可以定制你的 shell,但它们不属于 SQL 语言。
学习 SQL 基本知识
结构化查询语言是基于它们的能力定义的:一种通过有规则且一致的语法来查询数据库中的内容以得到有用的结果的方法。SQL 看起来像是普通的英文语句,有一点点生硬。例如,如果你登入数据库服务器,想查看有哪些库,输入 SHOW DATABASES;
并回车就能看到结果。
SQL 命令以分号作为结尾。如果你忘记输入分号,MariaDB 会认为你是想在下一行继续输入你的查询命令,在下一行你可以继续输入命令也可以输入分号结束命令。
MariaDB [(NONE)]> SHOW DATABASES;
+--+
| DATABASE |
+--+
| information_schema |
| mysql |
| performance_schema |
| test |
+--+
4 ROWS IN SET (0.000 sec)
上面的例子显示当前有四个数据库:information_schema
、mysql
、performance_schema
和 test
。你必须指定 MariaDB 使用哪个库,才能对该库使用查询语句。指定数据库的命令是 use
。当你选择了一个库后,MariaDB 提示框会切换为选择的库。
MariaDB [(NONE)]> USE test;
MariaDB [(test)]>
显示数据库的表
数据库里有表,与电子表格类似:有一系列的行(在数据库中称为记录)和列。一个行和一个列唯一确定一个字段。
查看一个数据库中可用的表(可以理解为多表单电子表格中的一页),使用 SQL 关键字 SHOW
:
MariaDB [(test)]> SHOW TABLES;
empty SET
test
数据库是空的,所以使用 use
命令切换到 mysql
数据库:
MariaDB [(test)]> USE mysql;
MariaDB [(mysql)]> SHOW TABLES;
++
| column_stats |
| columns_priv |
| db |
[...]
| time_zone_transition_type |
| transaction_registry |
| USER |
+++-+
| FIELD | TYPE | NULL | KEY | DEFAULT |
+-+--+-+-+-+-+-+-+-+-+-+--+--++++
| FIELD | TYPE | NULL | KEY | DEFAULT | Extra|
+--+--+--++++
把 linux
表中的唯一 ID 分配给每个成员。因为记录已经存在,使用 UPDATE
关键字而不是 INSERT
。尤其是当你想查询某行然后再更新某列值时。语法上,表达方式有点倒装,先更新后查询:
> UPDATE member SET os=1 WHERE name='Alice';
Query OK, 1 ROW affected (0.007 sec)
ROWS matched: 1 Changed: 1 Warnings: 0
要填充数据,请对其他名字重复执行这个过程。为了数据的多样性,在四行记录中分配三个不同的值。
连接表
现在这两个表彼此有了关联,你可以使用 SQL 来展示关联的数据。数据库中有很多种连接方式,你可以尽请尝试。下面的例子是关联 member
表中 os
字段和 linux
表中 id
字段:
SELECT * FROM member JOIN linux ON member.os=linux.id;
+++--+
| id | name | startdate | os | id | distro |
+++--+
| 1 | Alice | 2020-10-03 15:25:06 | 1 | 1 | Slackware |
| 2 | Bob | 2020-10-03 15:26:43 | 3 | 3 | Fedora |
| 4 | David | 2020-10-03 15:26:51 | 3 | 3 | Fedora |
| 3 | Carol | 2020-10-03 15:26:46 | 4 | 4 | Debian |
+++--+
4 ROWS IN SET (0.000 sec)
连接 os
和 id
字段。
在图形化的应用中,你可以想象 os
字段可以在下拉菜单中设置,值的来源是 linux
表中的 distro
字段。通过使用多个表中独立却有关联的数据,你可以保证数据的一致性和有效性,使用 SQL 你可以动态地关联它们。
下载 MariaDB 和 MySQL 备忘单
MariaDB 是企业级的数据库。它是健壮、强大、高效的数据库引擎。学习它是你向管理 web 应用和编写语言库迈出的伟大的一步。你可以下载 MariaDB 和 MySQL 备忘单,在你使用 MariaDB 时可以快速参考。
via: https://opensource.com/article/20/10/mariadb-mysql-cheat-sheet
作者:Seth Kenlon 选题:lujun9972 译者:lxbwolf 校对:wxy
发表回复