使用 JDBC 创建数据库对象 1

本文分析了 Java DataBase Connectivity (JDBC) ,一个在 Java 中以面向对象的方法来连接数据库的技术。它是对 ODBC API 进行的一种面向对象的封装和重新设计,它易于学习和使用,并且它能够使您编写不依赖供应商的代码,用以查询和操纵数据库。 JDBC 提供了一些相当低层的方法来存取数据库,同时也在相当高层提供了功能强大的对象来处理数据库。

什么是数据库?
数据库 是以某种文件结构存储的一系列信息表,这种文件结构使您能够访问这些表、选择表中的列、对表进行排序以及根据各种标准选择行。数据库通常有多个索引与这些表中的许多列相关联,所以我们能尽可能快地访问这些表。

在进行计算时,数据库比其它类型的结构更常用。您会发现在员工记录和薪资系统中数据库处于核心地位,在旅行计划系统中以及在产品生产和销售的整个过程中都可以发现数据库。

以员工记录为例,您可以设想一个含有员工姓名、地址、工资、扣税以及津贴等内容的表。让我们考虑一下这些内容可能如何组织在一起。您可以设想一个表包含员工姓名、地址和电话号码。您希望保存的其它信息可能包括工资、工资范围、上次加薪时间、下次加薪时间、员工业绩评定等内容。

这些内容是否应保存在一个表格中?几乎可以肯定不应该如此。不同类别的员工的工资范围可能没有区别;这样,您可以仅将员工类型储存在员工记录表中,而将工资范围储存在另一个表中,通过类型编号与这个表关联。考虑以下情况:

Key
Lastname 
SalaryType
SalaryType 
Min
Max
1
Adams
1
30000
45000
2
Johnson
2
45000
60000
3
Smyth
3
60000
75000
4
Tully
5
Wolff

SalaryType 列中的数据引用第二个表。我们可以想象出许多种这样的表,如用于存储居住城市和每个城市的税值、健康计划扣除金额等的表。每个表都有一个主键列(如上面两个表中最左边的列)和若干数据列。在数据库中建立表格既是一门艺术,也是一门科学。这些表的结构由它们的范式指出。我们通常说表属于第一、第二或第三范式,简称为 1NF2NF 3NF

第一范式:表中的每个表元应该只有一个值(永远不可能是一个数组)。(1NF)

第二范式:满足 1NF,并且每一个副键列完全依赖于主键列。这表示主键和该行中的剩余表元之间是 1 1 的关系。(2NF)

第三范式:满足 2NF,并且所有副键列是互相独立的。任何一个数据列中包含的值都不能从其他列的数据计算得到。(3NF)

现在,几乎所有的数据库都是基于第三范式 (3NF)”创建的。这意味着通常都有相当多的表,每个表中的信息列都相对较少。

从数据库中获取数据
假设我们希望生成一个包含员工及其工资范围的表,在我们设计的一个练习中将使用这个表。这个表格不是直接存在在数据库中,但可以通过向数据库发出一个查询来构建它。我们希望得到如下所示的一个表:

Name
Min
Max
Adams  $45,000.00  $60,000.00 
Johnson  $30,000.00  $45,000.00 
Smyth  $60,000.00  $75,000.00 
Tully  $30,000.00  $45,000.00 
Wolff  $45,000.00  $60,000.00 

或者,按照工资递增的顺序排序

Name
Min
Max
Tully  $30,000.00  $45,000.00 
Johnson  $30,000.00  $45,000.00 
Wolff  $45,000.00  $60,000.00 
Adams  $45,000.00  $60,000.00 
Smyth  $60,000.00  $75,000.00 

我们发现,获得这些表的查询形式如下所示


SELECT DISTINCTROW Employees.Name, SalaryRanges.Min, 
SalaryRanges.Max FROM Employees INNER JOIN SalaryRanges ON Employees.SalaryKey = SalaryRanges.SalaryKey
ORDER BY SalaryRanges.Min;
这种语言称为结构化查询语言,即 SQL (一般读作 "sequel" ),而且它是几乎目前所有数据库都可以使用的一种语言。这几年已颁布了若于 SQL 标准,而且大多数 PC 数据库支持大部分 ANSI 标准。 SQL-92 标准被认为是一种基础标准,而且已更新多次。然而,没有一种数据库可以完美地支持后来的 SQL
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wxyxl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值