JavaRush /Java 博客 /Random-ZH /我们分析数据库和 SQL 语言。(第 2 部分)-“Java 项目从头到尾”
Roman Beekeeper
第 35 级

我们分析数据库和 SQL 语言。(第 2 部分)-“Java 项目从头到尾”

已在 Random-ZH 群组中发布
有关创建 Java 项目的系列文章中的一篇文章(其他材料的链接位于最后)。其目标是分析关键技术,结果是编写一个电报机器人。 “Java 项目从头到尾”:我们分析数据库和 SQL 语言。 第 2 - 1 部分祝亲爱的读者身体健康。今天我们会说一点,写更多,因为我们的手比我们的眼睛记得更好。您可能想知道:为什么我们使用 MySQL?例如,有相同的 PostgreSQL 和其他解决方案。这里一切都很简单。首先,它是免费的。其次,它有一个方便的UI界面(我们将在单独的文章中讨论)。第三,她对我来说很熟悉并且令人愉快。除了以上这些之外,MySQL也很常见。

检查作业

上次我给了一个任务——在我的机器上安装MySQL并登录它。通过控制台或其他方式。一切都完成了吗?"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 2那些做到这一点的人干得好!无论您在 JavaRush 中的级别如何,重要的是能够根据手册安装和配置工作所需的工具。我向你保证,这样的人会有很多。那些尝试过但没有成功的人也并不害怕。这种情况并不总是第一次发生:有时您需要休息一下,然后以新的力量再次尝试。谁自己安装了 MySQL - 在注释中写上“+”,这样我就知道有人在这样做。我自己也会这样做。由于我不再拥有 Windows 笔记本电脑,因此我将在 MacBook 上展示它。我认为安装过程不会有太大不同。如果您想使用英文手册自行安装,请点击此处

在 MacOS 上安装 MySQL

首先,进入以下链接,选择操作系统,可以是Windows、Ubuntu或MacOS,如下图所示:"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 3下载并启动。然而,一切并没有立即对我有利。事实证明,苹果不允许安装最新版本:"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 4当然,你可以禁用它,但 MacBook 正在工作,我不会乱搞它的设置。因此,通过反复试验,我找到了一个可以安装的版本——这就是5.7.21。要查找其他版本,请转到“存档”选项卡并选择所需的版本:"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 5接下来,运行下载的文件。点击下一步,下一步,下一步,但最后要小心!将有一个用户名和密码用于登录数据库。对我来说,它看起来像这样:"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 6这里表示将有一个名为root和密码Vac/zto=.24q的用户。这样就完成了安装。

登录MySQL命令行

要登录,您需要确保MySQL服务器已打开。为此,请转到“系统偏好设置”,在那里找到 MySQL 图标:"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 7转到它并查看必须首先打开服务器。为此,只需单击“启动 MySQL 服务器”即可。是的,您还可以选中该框,以便每次机器启动时服务器都会在后台启动。"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 8需要注意的是,我将在终端中以$符号开始所有请求,以明确说明。接下来,您需要通过命令行直接连接MySQL服务器。为此,请打开终端并写入: $ mysql 并且有两个选项:
  1. 如果响应是“ERROR 1045 (28000): Access returned for user 'roman_beskrovnyi'@'localhost' (using passwd: NO)”,那么这意味着服务器已安装并正在被调用。您只需传递正确的命令即可到它。
  2. 如果答案是command not find: mysql,没关系 - 只是没有到服务器的链接。为此,您需要使用 mysql 变量创建别名,因此我们编写以下行:

    $别名mysql=/usr/local/mysql/bin/mysql

    这仅对该终端会话有帮助。但我们不再需要了——我们绝对不会一直通过终端工作。

  3. MySQL没有安装,不要欺骗你的计算机。
接下来,我们使用安装期间提供的名称和密码并写入: $ mysql --user=root -p"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 9这里我们写入密码,我们会很高兴以这种形式:"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 10最后一行表示我们已登录 MySQL终端服务器。但这个root密码原来是一次性密码,需要更改为另一个密码。当然,出于安全原因。如果我们不更改此设置并尝试在服务器上创建新数据库,我们将收到以下响应:ERROR 1820 (HY000):在执行此语句之前,您必须使用 ALTER USER 语句重置密码"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 11可以说,他们是被迫的。好吧,对我们来说很难吗?让我们将密码设置得更简单(这仅适用于本地工作;对于实际工作,当然密码必须复杂)。假设root∫,就像用户名一样。要更改密码,您需要输入以下行: ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; 答案是这样的:"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 12为了确保一切正常,让我们尝试使用以下语法创建一个新数据库: $ CREATE DATABASE test_db; 要确保服务器上已创建这样的数据库,请编写命令: $ SHOW DATABASES; 结果我们得到以下结果:"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 13就这样了:) 不可能说它既简单又快速。因此,无论是谁亲自做的——都特别尊重。对于那些还没有安装过的人,不用担心,这里有所有类型安装的手册: 那里对一切的描述都很清楚。唯一的问题是一切都是英文的。现在我们用 SQL 编写第一行。

用 SQL 编写我们的第一行

正如您在上面可能已经注意到的,我们知道两个命令:
  1. CREATE DATABASE - 在服务器上创建数据库;
  2. 显示数据库- 显示服务器上所有已创建和可用的数据库。
我注意到 SQL 并不关心我们如何编写它们的命令 - 是否全部大写字母。然而,用大写字母书写命令被认为是良好的礼貌。接下来,要删除数据库,您需要编写命令DROP DATABASE database_name ; 其中database_name是我们要删除的数据库的名称。我们已经创建了一个名为test_db的测试数据库,所以让我们删除它。为此,我们编写: $ DROP DATABASE test; 值得注意的是,Query OK, 0 rows受影响(0.02秒)响应非常重要,因为它确认请求成功。此外,它还告诉您此查询更改了表中的行数以及更改的时间。"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 15一般来说,“DROP”一词负责删除某些内容。在这种情况下,我们删除了数据库。但这也可以用于其他目的(例如,删除表)。现在,相信我,检查结果,让我们看看还剩下多少个数据库: $ SHOW DATABASES; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 16我们可以看到,没有名为 test_db 的数据库。冠心病:D

创建自己的数据库和表

创建城市数据库:$ CREATE DATABASE城市; 要使用特定数据库,您需要登录该数据库。为此,请使用USE database_name命令,之后所有用于处理表的命令都将在此数据库中执行。$使用城市; 从响应中可以看出 -数据库已更改,到此数据库的转换成功。"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 17下一步是创建表。哪个?首先,让我们创建一个包含国家/地区的表。这是为什么?因为城市需要其所在国家的外键。而这些国家一般开始入库后即可获取(以下简称数据库)。正如我们在上一篇文章中所记得的,在描述国家/地区的表中,我们有两个字段 - ID 和名称,其中 ID 是唯一标识符,名称是国家/地区的名称。因此,创建这样一个数据库就像剥梨子一样容易。我们写:$ CREATE TABLE Country(id INT, name VARCHAR(30)); "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 18正如你所看到的,一切都很顺利。类比SHOW DATABASES,我们可以查看表列表: $ SHOW TABLES; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 19这是我们的桌子。现在让我们学习如何删除表。为此,我们编写: $ DROP TABLE Country; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 20需要注意的是,表或数据库一旦删除,就无法恢复!

使用表格

让我们恢复我们创建的表。为此,您只需重复已经做过的事情即可。要查看表结构,需要使用以下命令 - DESC table_name : $ DESC Country; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 21可以看到,这里记录了该表的所有信息。要向表中添加内容,您需要使用INSERT INTO table_name VALUES()命令。让我们为三个国家/地区添加三个记录: $ INSERT INTO Country VALUES (1, '乌克兰'); $ INSERT INTO 国家/地区值(2,“俄罗斯”); $ INSERT INTO Country VALUES (3, '白俄罗斯'); "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 22为了查看数据库中存储的内容,我们将使用一个简单的请求来获取数据。为此,我们要获取国家/地区表中所有字段的数据。仔细记住前面这句话,因为sql查询会是这样的: $ SELECT * FROM Country; 其中 * 表示您需要获取所有字段。"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 23这就是我们的美丽。如果我们只想获取特定字段,那不是问题:我们不写星号,而是写应该用逗号分隔的字段名称。自己尝试一下;)我们已经创建了一个表,但不知何故我们没有足够的信息。人口规模肯定不会有什么坏处,对吧?以及如何做呢?
  1. 向表架构添加一个新字段 - 人口。
  2. 更新现有条目。
首先,我们将使用ALTER TABLE table_name ADD COLUMN命令。总的来说,ALTER TABLE 是一组用于 DDL 操作的命令(还记得这是什么吗?在上一篇文章中)。顺便说一句,SELECT 指的是 DML 操作。让我们编写以下内容: $ ALTER TABLE Country ADD COLUMN Population INT; $ DESC 国家;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 24从图中可以看出,我们已成功向表中添加了一个新字段,并使用第二个命令检查该字段是否在架构中。第二步是更新表中的条目并分配值。让我们从维基百科中获取这个数字。并不是说我信任他们,但尽管如此,这是最快、最简单的方法。为此,请使用另一个 DML 命令。但首先,让我们说一下我们想要做什么:我们想要更新国家/地区表,使 id = 1 的记录中的 Population 字段等于 41806221。这个构造如下:UPDATE table_name SET table_row1 = value WHERE table_row2 = 值2; 在此基础上,我们写: $ UPDATE Country SET Population = 41806221 WHERE id = 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 25这里我们第一次使用了WHERE关键字。需要添加值进行过滤。比如这次我们说只需要对id等于1的字段(fields)进行更新(直到我们告诉sql这是主键——可能有好几个)。我们还可以指定一个条件,如 WHERE id > 2。如果我们根本没有指定过滤,则该值将被写入所有表记录。对于俄罗斯、白俄罗斯等国家,请自行更新;)现在让我们尝试从表中获取名称和人口字段的数据,前提是 id 大于 1。 $ SELECT name, Population FROM Country WHERE id >1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 26因此,我们只收到了我们自己想要的那些字段。使用 INSERT INTO 我们可以指定要添加哪些字段以及要保留哪些字段为空。为此,我们编写: $ INSERT INTO Country (name, Population) VALUES('Georgia', 1234566); 要检查发生了什么,让我们查看所有字段的列表: $ SELECT * FROM Country; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 27没有id,条目是坏的,人口当然是从头部取出的,所以你需要删除它。使用DELETE FROM table_name命令: $ DELETE FROM Country WHERE name = 'Georgia'; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 2 - 28这样我们就学会了如何从表中删除字段。

家庭作业

家庭作业如下:
  1. 您需要将 ID 字段中的主键(PRIMARY KEY)添加到国家/地区表架构中。
  2. 将另一个国家/地区添加到国家/地区表中 - 摩尔多瓦。
  3. 按照上篇文章的方案,创建一个表city,其中将包含所有描述的字段。字段名称如下:id、name、country_id、population。
  4. 向城市表添加主键。
  5. 向城市表添加外键。
这项任务很有趣,对于那些了解情况的人来说,它会很快且不复杂。对于那些还没有这样做的人,它将作为本文材料的极好强化。

让我们总结一下

我们在这篇文章中做了很多事情。首先,我们安装并启动MySQL数据库服务器。其次,我们学习了关键字和查询的完整列表,借助它们我们现在可以创建/删除数据库和表。我们学习了如何向表添加数据、更新和删除数据。以下是我们使用的所有命令及其描述:
  • 创建数据库数据库名称;- 创建一个新数据库
  • 显示数据库;— 查看数据库列表
  • 删除数据库数据库名;- 删除数据库
  • 使用数据库名称;- 在数据库中工作
  • CREATE TABLE 表名(id INT, ....); - 创建一个表
  • 显示表格;— 查看表列表
  • DESC TABLE 表名;— 参见表格
  • 删除表表名;- 删除表
  • INSERT INTO 表名 VALUES (); - 在表中添加一个字段
  • SELECT * FROM 表名 WHERE 表行 = 值;— WHERE后的条件下获取表中的字段
  • SELECT * FROM 表名;- 获取表中的所有字段
  • ALTER TABLE 表名 添加列 列名 COLUMN_TYPE;— 将新字段添加到表模式中
  • UPDATE talbe_name SET talbe_row1 = value1 WHERE table_row2 = value2; — 更新表中的记录:根据另一字段的条件设置一个字段的值
  • DELETE FROM table_name WHERE table_row1 = value1; — 在特定条件下从表中删除一个或多个字段。
我认为我们和你一起做得很好。我邀请所有喜欢我的工作的人订阅我的GitHub 帐户,我在其中发布我职业生涯中发生的有趣项目和进展。我邀请所有对开源感兴趣的人参与我的项目(存储库)。感谢大家的关注。请继续关注即将发布的下一篇有关数据库的文章。

该系列所有材料的列表位于本文开头。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION