关系型数据库一般需要一套指令去操作或者查询数据库,最常见的操作命令就是结构化查询语言SQL。

JDBC

Java数据库连接 (JDBC) 是标准应用程序编程接口 (API) 的Java规范,它允许Java程序访问数据库管理系统。JDBC API 由一组用Java编程语言编写的接口和类组成,后面会有介绍。

使用这些标准接口和类,程序员可以编写连接到数据库的应用程序,发送以结构化查询语言 (SQL) 编写的查询,并处理结果。

由于 JDBC 是一种标准规范,只要实现并提供该特定 DBMS 的驱动,使用 JDBC的Java程序可以连接到任何数据库管理系统 (DBMS)。

驱动分类

JDBC API 定义了程序员用来连接数据库和发送查询的 Java接口和类。JDBC 驱动程序为特定的 DBMS 供应商实现这些接口和类。

使用 JDBC API 的 Java 程序在实际连接到数据库之前为特定 DBMS 加载指定的驱动程序。然后DriverManager类将所有 API 调用发送到加载的驱动程序。

有四种类型的 JDBC 驱动程序:

  1. JDBC-ODBC桥加ODBC驱动,也叫Type 1驱动将 JDBC API 调用转换为 Microsoft ODBC 调用,然后传递给 ODBC 驱动程序ODBC 二进制代码必须加载到使用这种类型驱动程序的每台客户端计算机上。ODBC 是开放式数据库连接的首字母缩写。

  2. Native-API,部分是Java驱动,也叫Type 2驱动将 JDBC API 调用转换为 DBMS 特定的客户端 API 调用与桥驱动程序一样,这种类型的驱动程序需要在每台客户端计算机上加载一些二进制代码。

  3. JDBC-Net,纯Java驱动,也叫Type 3驱动将 JDBC API 调用发送到中间层服务器,中间层服务器将调用转换为特定于 DBMS 的网络协议然后将翻译后的调用发送到特定的 DBMS。

  4. 本机协议,纯 Java 驱动程序,也称为 Type 4 驱动程序将 JDBC API 调用直接转换为 DBMS 特定的网络协议,无需中间层此驱动程序允许客户端应用程序直接连接到数据库服务器。

我们通常所说的就是第四种,纯Java 驱动程序,不需要做任何转化,通过驱动程序直接通过网络协议和数据库通信,网络协议一般是TCP或者安全的SSL、HTTP等。

JDBC通过URL指定要连接的目标数据库,url的格式一般是

jdbc:<数据库类型>[:<连接方式/协议等>]://<数据库资源地址>?<参数列表>

比如jdbc:mysql://localhost:3306?socketTimeout=30000,这类前面都是jdbc:xxx://两段式的

通常也会遇到三段式的,最典型的就是Oracle,比如jdbc:oracle:thin:@192.168.5.64:1521:FR,实际上第三段thin是一种连接方式,如果连接方式是oci,就是jdbc:oracle:oci:@192.168.5.64:1521:FR;

还有比如jdbc:h2:tcp://localhost/temp/xxx,或者jdbc:h2:file:/temp/xxx就是使用tcp协议访问或者文件协议访问。

问题

  1. 程序数据集通过调用数据库私有API查询数据,算JDBC吗?

  2. json数据集采用特殊的语法查询结果,和SQL的本质区别是什么?

  3. JDBC是java提供的吗?驱动是java提供的吗?

SQL

SQL的官方定义是前面说过的Structured Query Language 结构化查询语句,是一种标准化的编程语言,用于管理关系型数据库并对其中的数据执行各种操作。

SQL 最初创建于 1970 年代,不仅经常被数据库管理员使用,而且还被编写数据集成脚本的开发人员和希望设置和运行分析查询的数据分析师使用。

SQL根据用途可以分为

  • DDL定义数据库,比如创建schema、表,修改表和索引结构等等;

  • DML操作数据库,添加、更新和删除数据行;

  • DQL查询数据库,查询结果;

  • DCL控制数据库,比如权限控制等;

SQL 查询和其他操作采用以语句形式编写的命令形式,并聚合到程序中,使用户能够从数据库表中添加、修改或检索数据。

偷得浮生半日闲,心情半佛半神仙。