1. 简介

本 HOWTO 指南将引导您完成 SQL Anywhere Studio 7.0.2 Linux 版的安装,以及 Adaptive Server Anywhere 数据库的基本操作和管理。

1.1. 本文档的新版本

本文档的最新版本应始终在 Linux 文档项目网站上找到 (http://www.linuxdoc.org/)。

1.2. 内容和读者

在本文档中,您将找到受支持的 Linux 发行版列表("第 2 节")。本文档面向具有中等经验的 Linux 或 UNIX 用户。熟悉关系数据库概念当然很有用,但不是必需的。"第 1.5 节" 包含关系数据库概念的摘要。

1.3. Adaptive Server Anywhere 的特性

Adaptive Server Anywhere (Adaptive Server Anywhere) 是 SQL Anywhere Studio 核心的完整 SQL 关系数据库管理系统。它非常适合用作嵌入式数据库、移动计算或工作组服务器,其特性包括以下几点:

一些更具体的功能包括:

有关 Adaptive Server Anywhere 的更多详细信息,请访问以下链接:

1.4. 注意事项

1.4.1. Alt 键和功能键

有时,在您运行 Interactive SQL 的终端中,Alt 键或 F1-F10 键可能无法正常工作。

要模拟 Alt 键,请按 Ctrl-A。然后按要与 Alt 键一起按下的任何键。例如,不用按 Alt-F,您应该按 Ctrl-A,然后按 F。

要模拟功能键,请按 Ctrl-F,然后按您要按下的功能键的数字。例如,不用按 F9,您应该按 Ctrl-F,然后按 9。对于 F10,请使用数字 0 键。

1.5. 什么是关系数据库?

如果您已经熟悉关系数据库,则可以跳过本节。

1.5.1. 定义

关系数据库管理系统 (RDBMS) 是一种用于存储和检索数据的系统,其中数据以表格形式组织。关系数据库由存储相互关联的数据的表集合组成。

如果这还不太明白,请继续阅读。

1.5.2. 示例

假设您有一些软件来跟踪销售订单,并且每个订单都以表格形式存储,称为 sales_order。它包含有关客户的信息(例如,她的姓名、地址和电话号码)、订单日期以及有关销售代表的信息(例如他的姓名、部门和办公室电话号码)。让我们把所有这些都放在一个表格中,包含一些订单的数据:

表 1. sales_order 表

客户姓名客户地址客户城市_州_邮编客户电话订单日期员工姓名员工部门员工电话
M. Devlin3114 Pioneer Ave.Rutherford, NJ 07070201555896619930316R. Overbey销售部5105557255
M. Devlin3114 Pioneer Ave.Rutherford, NJ 07070201555896619940405M. Kelly销售部5085553769
J. Gagliardo2800 Park Ave.Hull, PQ K1A 0H3819555953919940326M.Garcia销售部7135553431
E. Peros50 Market St.Rochester, NY 14624716555427519930603P. Chin销售部4045552341
E. Peros50 Market St.Rochester, NY 14624716555427519940127M.Garcia销售部7135553431
E. Peros50 Market St.Rochester, NY 14624716555427519940520J. Klobucher销售部7135558627

一切看起来都井井有条,但是存在相当多的冗余。M. Devlin 的名字出现了两次,连同他的地址和电话号码。E. Peros 的详细信息出现了三次。如果您仔细查看员工方面的信息,您会注意到 M. Garcia 也被重复了。

如果可以将这些信息分开,只存储一次而不是多次,那不是很好吗?从长远来看,这肯定会节省磁盘空间并提高灵活性。由于冗余数据输入被最小化,这也将减少错误数据进入数据库的机会,从而提高一致性。好吧,我们可以看到这里涉及三个不同的实体:客户、订单和员工。因此,让我们将每个人分类,并给他们分配识别号码,以便可以引用它们。

表 2. customer 表

ID姓名地址城市_州_邮编电话
101M. Devlin3114 Pioneer Ave.Rutherford, NJ 070702015558966
109J. Gagliardo2800 Park Ave.Hull, PQ K1A 0H38195559539
180E. Peros50 Market St.Rochester, NY 146247165554275

表 3. employee 表

ID姓名部门电话
299R. Overbey销售部5105557255
902M. Kelly销售部5085553769
667M.Garcia销售部7135553431
129P. Chin销售部4045552341
467J. Klobucher销售部7135558627

表 4. 新的 sales_order 表

ID客户 ID订单日期销售代表 ID
200110119930316299
258310119940405902
257610919940326667
208118019930603129
250318019940127667
264018019940520467

如您所见,每个客户的信息只存储一次,每个员工的信息也是如此。sales_order 表也小了很多。每一行,代表一个销售订单,都引用一个客户 ID 和一个员工 ID。

通过查找与客户 ID(唯一)对应的客户,可以找到关于该客户的所有必要数据,而无需在 sales_order 中重复。此外,还添加了一个 ID 列。其目的将在下一节中解释。

您可能会问,为什么要这样做?通过消除冗余,这种结构除了降低存储要求外,还减少了不一致性渗入的机会。如果您必须在旧的 sales_order 表中更改 E. Peros 的地址,您必须执行三次,这将花费三倍的时间,并给您三倍的机会犯错误。在较新的表中,您只需在 customer 表中更改她的地址一次即可。此外,通过仔细分离数据,您可以使访问控制更简单。

最后,您能发现另一个冗余吗?employee 表的部门列全部都是“销售部”。对于拥有多个部门的组织,您会希望添加一个部门表,并从部门 ID 列引用它。

1.5.3. 主键和外键

如上一节所述,您可以将一个表分成相互关联的表。但是,您如何将表相互关联呢?在关系数据库中,主键和外键帮助您将表链接在一起。主键是唯一标识表中每一行的列,外键定义两个单独表的行之间的关系。正确使用主键和外键将帮助您有效地保存信息,而不会产生过多的冗余。

每个表都应该有一个主键,以确保唯一标识每一行。这通常采用为每一行分配 ID 号的形式,如上一节的示例所示。id 列构成主键。

只要您可以保证特定列中数据的唯一性,那么该列就可以作为主键。例如,如果您只想每天在一个特定表中输入一个条目,则可以使用日期作为该表的主键。

表通过外键相互关联。在 sales_order 示例中,客户 ID 和销售代表列将分别称为 customer 表和 employee 表的外键。为了术语的缘故,您可能想知道在这种情况下,sales_order 表被称为外键表引用表,而 customer 表和 employee 表被称为主键表被引用表