JavaRush /Java 博客 /Random-ZH /第 1 部分:SQL 简介
Marat Sadykov
第 41 级

第 1 部分:SQL 简介

已在 Random-ZH 群组中发布

JDBC。在 IntelliJ IDEA 中连接数据库并创建 Java 控制台应用程序

介绍

本文开启了一个简短的系列,专门介绍Java 中与数据库交互的基础知识以及SQL 的介绍。许多程序都忙于处理和修改信息并使其保持最新。由于数据是程序逻辑中非常重要的一部分,因此通常为其分配单独的存储。其中的信息是结构化的,并受特殊规则的约束,以确保正确的处理和存储。使用特殊的查询语言——SQL(结构化查询语言)来访问和修改数据。
第 1 部分:SQL 简介 - 1
数据库管理系统是确保各种外部程序与数据和附加服务(日志记录、恢复、备份等)交互的软件,包括通过 SQL。也就是说,数据和使用它的外部程序之间的软件层。在这一部分中,我们将回答什么是 SQL、什么是 SQL 服务器的问题,并创建第一个与 DBMS 交互的程序。

数据库管理系统的类型

根据组织数据存储的方式,DBMS 有多种类型:
  • 分层的。数据以树结构组织。一个例子是文件系统,它从磁盘的根开始,然后随着不同类型的文件和不同嵌套程度的文件夹的分支而增长。
  • 网络。层次结构的一种修改,每个节点可以有多个父节点。
  • 面向对象。根据 OOP,数据以类/对象的形式组织,并具有它们的属性和交互原则。
  • 关系型。这种类型的 DBMS 的数据以表的形式组织。表格可以相互链接,其中的信息是结构化的。
在本系列文章中,我们将使用 H2 作为示例来了解关系 DBMS(最常见的 DBMS),并从头开始创建一个模拟类似于交换工作方式的应用程序。 问题:为什么不是 PostgreSQL、MySQL、MSSQL 或 Oracle? 答:为了不被安装一组单独的程序的问题分散注意力。进一步配置、创建数据库、在不同操作系统、版本中工作的复杂性。要使用 H2,您需要执行最少的操作。但没有什么可以阻止您将当前的 H2 JDBC 更改为其他制造商的关系 DBMS(仅服务器地址行和驱动程序类名称发生变化)。

SQL

外部程序以数据管理语言结构化查询语言生成对 DBMS 的查询。什么是 SQL?它与传统编程语言有何不同?SQL 的特征之一是声明性。也就是说,SQL是一种声明性语言。这意味着,当输入命令时,即向 SQL 服务器创建查询时,我们描述的是我们到底想要得到什么,而不是以什么方式得到。通过向服务器发送请求SELECT * FROM CUSTOMER(从 SQL 大致翻译为俄语:“从 COSTUMER 表中进行选择,该选择包含表中的所有行”),我们将收到所有用户的数据。服务器如何以及从哪里下载并生成我们感兴趣的数据并不重要。最主要的是正确地提出请求。
  • 什么是 SQL Server 以及它如何工作?与 DBMS 的交互遵循客户端-服务器原则。某些外部程序以 SQL 语言的运算符和命令的形式发送请求,DBMS 对其进行处理并发送响应。为简单起见,我们假设 SQL Server = DBMS。
如果您可以驾驶一种品牌的汽车,那么您很可能能够毫无问题地驾驶其他品牌的汽车。除了小细节外,驾驶的基本原理在任何地方都是相同的。对于不同制造商的 SQL 服务器也是如此 - 每个制造商都有自己的 SQL 版本,但都符合指定的标准(SQL92、SQL2003...)。我们将在 SQL92 框架内使用运算符和命令。 基本 SQL 语句分为以下几组:
  • 数据定义语言 ( DDL ) – 数据定义。创建数据库结构及其对象;
  • 数据操作语言(DML)——与数据的实际交互:插入、删除、修改和读取;
  • 事务控制语言(TCL)——事务管理;
  • 数据控制语言(DCL)——数据和数据库结构访问权限的管理。
在一系列文章中,我们将讨论前三组,特别关注 DML。

数据库连接

上世纪80年代,PC XT/AT类型的个人电脑占领了市场。这很大程度上是由于其设计的模块化。这意味着用户可以很容易地更改计算机的一个或另一个组件(处理器、显卡、磁盘等)。这个奇妙的特性一直保留到今天:我们更换显卡并更新驱动程序(有时它甚至会自动更新)。大多数情况下,此类操作不会发生任何不良情况,并且现有程序将继续在更新的系统上运行,而无需重新安装。这同样适用于使用 Java 和 DBMS 进行工作。为了标准化 SQL 服务器的工作,可以通过单点JDBC(Java 数据库连接)与其进行交互。它是用于使用 DBMS 的java.sql包的实现。所有流行 SQL 服务器的制造商都为其发布了 JDBC 驱动程序。考虑下图。该应用程序使用java.sql中的类实例。然后我们传递必要的命令来检索/修改数据。接下来java.sql通过jdbc驱动与DBMS进行交互,并将完成的结果返回给我们。 第 1 部分:SQL 简介 - 2 要切换到其他制造商的 DBMS,通常更改 JDBC 并执行基本设置就足够了。程序的其余部分不变。

第一个节目

让我们进入实际部分。让我们使用JetBrains IntelliJ IDEA IDE创建一个 Java 项目。请注意,终极版包含一个用于处理 SQL 和数据库的出色工具 - Data Grip。然而,大多数用户都是付费的。因此,出于教育目的,我们只能使用公开的IntelliJ IDEA Community Edition。所以:
  1. 启动 IDE 并创建一个新项目:
    第 1 部分:SQL 简介 - 3

  2. 选择一个Java项目,指明SDK版本(示例中为JDK8,但这并不重要):
    第 1 部分:SQL 简介 - 4

  3. 在下一步中,选择控制台应用程序作为类型:
    第 1 部分:SQL 简介 - 5

  4. 我们指出项目名称及其在磁盘上的位置(我专门为此创建了一个单独的目录):
    第 1 部分:SQL 简介 - 6

  5. 让我们将 IDE 放在一边,从www.h2database.com下载使用H2 DBMS所需的JDBC 文件(下载独立于平台的 ZIP):
    第 1 部分:SQL 简介 - 7

  6. 我们进入下载的文件(我们对h2\bin路径下的jar 文件感兴趣,稍后我们将需要它,复制它):
    第 1 部分:SQL 简介 - 8

  7. 我们返回 IDE 并在项目的根目录中创建目录:db,其中包含 DBMS 数据的文件; lib – 这是 JDBC JAR 库:
    第 1 部分:SQL 简介 - 9

  8. 将步骤6中的 jar 文件移动到lib目录,并将其作为库添加到项目中:
    第 1 部分:SQL 简介 - 10

  9. 让我们将 java 文件src/sql/demo重命名为StockExchange.java(以防您忘记,我们将模拟一个简单的“交换”),更改其内容并运行:
    第 1 部分:SQL 简介 - 11
现在我们可以连接到 DBMS 或断开连接。每个步骤都会反映在控制台中。当您首次连接到 DBMS 时,会创建一个数据库文件stockExchange.mv.db

代码解析

实际代码:
package sql.demo;

import java.sql.*;

public class StockExchangeDB {
    // Блок объявления констант
    public static final String DB_URL = "jdbc:h2:/c:/JavaPrj/SQLDemo/db/stockExchange";
    public static final String DB_Driver = "org.h2.Driver";

    public static void main(String[] args) {
        try {
            Class.forName(DB_Driver); //Проверяем наличие JDBC драйвера для работы с БД
            Connection connection = DriverManager.getConnection(DB_URL);//соединениесБД
            System.out.println("Соединение с СУБД выполнено.");
            connection.close();       // отключение от БД
            System.out.println("Отключение от СУБД выполнено.");
        } catch (ClassNotFoundException e) {
            e.printStackTrace(); // обработка ошибки  Class.forName
            System.out.println("JDBC драйвер для СУБД не найден!");
        } catch (SQLException e) {
            e.printStackTrace(); // обработка ошибок  DriverManager.getConnection
            System.out.println("Ошибка SQL !");
        }
    }
}

常量块:

  1. DB_Driver:这里我们定义了驱动程序的名称,例如可以通过单击连接的库并在当前项目的 lib 目录中展开其结构来找到该驱动程序的名称。
  2. DB_URL:我们的数据库地址。由冒号分隔的数据组成:
  3. 协议=jdbc
  4. 供应商(制造商/名称)DBMS=h2
  5. DBMS 的位置,在我们的例子中是文件的路径 (c:/JavaPrj/SQLDemo/db/stockExchange)。对于网络 DBMS,此处还额外指示远程服务器的名称或 IP 地址、TCP/UDP 端口号等。

错误处理:

在我们的代码中调用方法可能会返回错误,您应该注意。在此阶段,我们只需在控制台中报告它们即可。请注意,使用 DBMS 时的错误最常见的是SQLException

操作逻辑:

  1. Class.forName (DB_Driver) – 我们确保相应的 JDBC 驱动程序可用(我们之前下载并安装过)。
  2. DriverManager.getConnection (DB_URL) – 建立 DBMS 连接。使用传递的地址,JDBC 本身将确定 DBMS 的类型和位置,并返回一个 Connection,我们可以使用它与数据库进行通信。
  3. connection.close() – 关闭与 DBMS 的连接并完成程序的工作。
在本系列的下一部分中,我们将熟悉 DDL 运算符和 SQL 数据类型,并创建数据库的初始结构并用表填充它。 第二部分 第三部分
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION