PostgreSQL 散布中已包括以下各项的 postscript、HTML 格式 和 unix man-pages。如果你能上网,你可在以下地方找到下列文件∶ http://www.postgresql.org/docs
这是6.4 版的 PSQL 指令的一部分
在 /tools 目录中有一个手稿做这工作
使用 psql \h 指令
看 src/test 中的 regression 测试。你会找到 regress/sql 和 suite/*.sql 目录。
SQL 指导稿件在 src/tutorial 目录中
Morgan Kaufman Publisher 是其中一本最好的 SQL 书。这本书以 SQL92 为准。
Addison-Wesley Publishing company 也是一本好书。有关 SQL 的名作。
Stephen Cannan and Gerard Otten
McGraw-Hill Book Company Europe , Berkshire, SL6 2QL, England
Martin Gruber, Technical Editor: Joe Celko
SYBEX Inc.  2021 Challenger Drive Alameda, CA 94501
这本是资料库管理系统的圣经。这本书详细说明正规化 (normalization)、SQL、恢复 (recovery)、并行性 (concurrency)、保安、整合性 (integrity)、对原本的关联模式的延伸、现令话题如主从系统和物件导向模型。也包括大量参考资料以
供深入研究。向大部分用户推荐。
这本书详细说明关联式资料库、关系代数 (relational algebra)、关系演算 (calculus) 和正规化的理论。但它不包含现实世界的问题和较复杂的例子。向大部分用户推荐。
向大部分用户推荐。
这是过去数年有关资料库的论文集。它不是给一般用者看,而是进阶的学生(研究生)或资料库开发人员。
这是过去数年有关资料库的论文集。它不是给一般用者看,而是进阶的学生(研究生)或资料库开发人员。
这本书深入说明存取方法和储存技考。
它不是给一般用者看,而是进阶的学生(研究生)或资料库开发人员。
Wrox Press Ltd.
Unit 16, 20 James Road, Tyseley
Birmingham, B11 2BA, England
1995
Technology
QED and John Wiley
1991
说明建立经由 repository metamodels 的主从资料库应用程式的要求和 ANSI
标准 SQL 1993 的应用。
还有数以百计有关 SQL 的书!到书店看看吧。
ANSI/ISO SQL 规格文件可在下列网站找到∶
请参阅本文件的附录甲 Appendix A
SQL 1998 (SQL 3) 规格仍在开发中。参看本文件的“电子途径取得 SQL3 草案” SQL 1998
参看本文附录乙 Appendix B
这目录中包括一个 SQL-92 语言规格的时态延伸。这种新语言被名为 TSQL2。
这里的语言规格是这语言的最终版本。
可直接联络 TSQL2 的主席∶ Design Committee, Richard T.Snodgrass, Department of Computer Science, University of Arizona, Tucson, AZ 85721,
入会详情和 TSQL2 Language Design Committee 的电邮地址可在语言规格最後的 一章找到。这目录中的内容如下。
spec.dvi,.ps TSQL2 语言规格,一九九四年九月出版
bookspec.ps TSQL2 语言规格,内容如在 TSQL2 的书般,一九九五年十月 出版(请参阅下文)
sql3 提交给 ANSI 和 ISO SQL3 筹委会的修订建议
和语言规格一起,这里还收集了一些有关设计上的决定的评论、提供例子、和研究如何实践这语言的评论。这些评论原本是给 TSQL2 Language Design Committee 的建议。它们现在有另一个用处∶提供有关 TSQL2 构造的例子、推动设计时作出的大量决定、比较 TSQL2 和过去十五年有人提议过的大量语言。必须强调,请些评论目前不是 TSQL2 语言规格的一部分,而是对它的补充和发展。这语言规格已是 TSQL2 的最终决定。
这些评论,加上语言规格、数个索引和其他支援材料,已经集结成书∶
Snodgrass, R.T., editor, The TSQL2 Temporal Query Language, Kluwer Academic Publishers, 1995, 674+xxiv 页。
书中有一个节录了的评价,完整的评价在此目录中的 eval.ps 提供。
tl2tsql2.pl 档是一个把获接受的时态逻辑 (temporal logic) 翻译为 TSQL2 的 prolog 程式。这程式由 Michael Boehlen 写成。
各位可接触他以取得一份解释这翻译过程的论文。这是这程式的旧版本。新版本在 (the TimeDB and Tiger systems).这文章说明如何(合法地)取得一份 SQL-92 标准和怎样取得一份“现时的”SQL3 草案。
这标准版权所有, ANSI 标准的持有人为 ANSI,ISO 标准的持有人为 ISO。
现时有两(2)个 SQL 标准,分别由 ANSI 和 ISO 出版。这两份标准每个字都一模 一样,除了一些小节,如文件标题、页首、短句“International Standard”和 “American Standard”之类。
购买 SQL-92 标准
The ISO standard, ISO/IEC 9075:1992, Information Technology - Database Languages - SQL,目前(一九九三年三月)在 ANSI 有存货及可得到∶
     American National Standards Institute
     1430 Broadway
     New York, NY 10018 (USA)
     Phone (sales): +1.212.642.4900
如果你从 ANSI 购买任何一份文件,你需要给 7% 的手续费(即大约 US$9.10)。海外邮寄肯定会更贵。ANSI 要求所有单据都伴随一份公司订单的复印本,或者你可以美元寄一张美国的银行的支票,他们会在结了账後寄给你。(例外情况∶如果你的组织是 ANSI 的公司会员 (corporate member),ANSI 会把文件寄给你而向公司收钱。)
在美国国外,ISO 标准也可从作为 ISO (International Organization for Standardization) 或 IEC (International Electrotechnical Commission) 会员的本土国营机构(国定的标准组织)购买。国营机构及其地址的名单可从 ANSI 或其他国营机构取得。它们也可从 ISO 得到∶
     International Organization for Standardization
     Central Secretariat
     1, rue de Varembi
     CH-1211 Genhve 20
     Switzerland
     Global Engineering Documents
     2805 McGaw Ave
     Irvine, CA 92714 (USA)
     USA
     Phone (works from anywhere): +1.714.261.1455
     Phone (only in the USA): (800)854-7179
购买一份 SQL3 草案 (Working Draft)
你可从 ANSI X3 Secretariat, CBEMA (Computer and Business Equipment Manufacturers Association) 购买一份 SQL3 草案的复印本。他们意图确保能提供“最近”版本的 SQL3 草案,并以 US$60.00 至 US$65.00 出售。你可以以下途径接触 CBEMA。
     CBEMA, X3 Secretariat
     Attn: Lynn Barra
     1250 Eye St.
     Suite 200
     Washington, DC 20005 (USA)
电子径取得 SQL3 草案
最新版本(以写本文时为准)的 SQL3(ANSI 和 ISO)草案(和所有附件)可在以下站台以“anonymous ftp”或“ftpmail”得到∶
     gatekeeper.dec.com
  在
     /pub/standards/sql/
一般来说,你可找到类似名称的档案∶
     sql-bindings-mar94.ps
     sql-bindings-mar94.txt
     sql-cli-mar94.ps
     sql-cli-mar94.txt
     sql-foundation-mar94.ps
     sql-foundation-mar94.txt
     sql-framework-mar94.ps
     sql-framework-mar94.txt
     sql-psm-mar94.ps
     sql-psm-mar94.txt
另外,为照顾不能从 FTP 取得档案名单的读者,我们在目录中放置了一个名为
     ls
从 Ftp 直接获得档案
这是使用 FTP 的例子。它特别说明如何连接到 gatekeeper.dec.com,到达放置这些档案的目录,及把档案传送到你的电脑。要注意的的电脑要有上网功能。登入名称是‘ftp’,密码则是你的电邮地址(即所谓‘anonymous ftp’)。指令‘type binary’是用来确保收到的档案中没有位元被截去。‘get’一次取得一个档案。在命令稿中的注解会在角括号内 < 即是如此 >。
  % ftp gatekeeper.dec.com
  Connected to gatekeeper.dec.com.
  220- *** /etc/motd.ftp ***
       Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research.
       <...this goes on for a while...>
  220 gatekeeper.dec.com FTP server (Version 5.83 Sat ... 1992) ready.
  Name (gatekeeper.dec.com:<你的登入名称>): ftp  <anonymous 也能>
  331 Guest login ok, send ident as password.
  Password: <键入你的电邮地址>
  230 Guest login ok, access restrictions apply.
  Remote system type is UNIX.  <or whatever>
  Using binary mode to transfer files.
  ftp> cd pub/standards/sql
  250 CWD command successful.
  ftp> dir
  200 PORT command successful.
  150 Opening ASCII mode data connection for /bin/ls.
  total 9529
  -r--r--r--  1 root     system     357782 Feb 25 10:18 x3h2-93-081.ps
  -r--r--r--  1 root     system     158782 Feb 25 10:19 x3h2-93-081.txt
  -r--r--r--  1 root     system     195202 Feb 25 10:20 x3h2-93-082.ps
  -r--r--r--  1 root     system      90900 Feb 25 10:20 x3h2-93-082.txt
  -r--r--r--  1 root     system    5856284 Feb 25 09:55 x3h2-93-091.ps
  -r--r--r--  1 root     system    3043687 Feb 25 09:57 x3h2-93-091.txt
  226 Transfer complete.
  ftp> type binary
  200 Type set to I.
  ftp> get x3h2-93-082.txt
  200 PORT command successful.
  150 Opening BINARY mode data connection for x3h2-93-082.txt (90900 bytes).
  226 Transfer complete.
  90900 bytes received in 0.53 seconds (166.11 Kbytes/s)
  ftp> quit
  % <这档案已成为你的电脑中的 x3h2-93-082.txt>
Digital Equipment Corporation 和数间其他公司相似,提供 ftp email 服务。它可能需要数天才有回应,但它为不能直接上网的人提供了和 ftp 相等的服务。伺服器的地址为∶
ftpmail@decwrl.dec.com
以下命令稿会取得最新版本的 SQL3 文件的 PostScript 版∶
     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     binary
     compress
     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     binary
     compress
     uuencode
     chdir /pub/standards/sql
     get x3h2-93-091.ps
     quit
     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     chdir /pub/standards/sql
     get x3h2-93-091.ps
     quit
要取得任何不是 x3h2-93-091.ps 的档案,只需把“x3h2-93-091.ps”换为你想要的档案的名称。要取得所有档案的名单,把“x3h2-93-091.ps”换为“dir”。
这章是有关 SQL 标准和其当前情况的资料来源。
当前情况∶
目前正在进行开发工作,以改进 SQL 为,使它成为计算上完整的语言 (computationally complete language),以可用於持久、复杂的物件。这包括∶一般化和专门化等级 (generalization and specialization hierarchies)、多级继承 (multiple inheritance)、自订资料形态、激发 (triggers) 和判断 (assertions)、知识库系统支援 (support for knowledge based systems)、回递查询式 (recursive query expression) 和附加资料管理工具。它也包括抽象资料型态 (ADTs)、物件识别字 (object identifiers)、方法 (methods)、继承 (inheritance)、多型 (polymorphism)、包装 (encapsulation) 、和所有其他与物件资料管理有关的功能的规格。
一九九六年秋季,SQL3 数个部分进行了一次 ISO CD 不记名投票。这数部分是SQL/Framework、SQL/Foundation 和 SQL/Bindings。一如所料,投票结果是在收到约九百个评论下遭否决。一月下旬举行了一次 ISO DBL 编辑会议 (editing meeting),处理了大量在评论中提及或另外提交的问题解决方法。由於该次会议未能处理所有评论,会议将会延长。编辑会议的完成定於一九九七年七月,地点在伦敦。
据估计,在七月的编辑会议之後,会再提出对有关那些部分的 SQL 进行最後的 CD 投票。最後 CD 过程会花大约六个月,之後会有 DBL 编辑会议、DIS 投票和快捷的 IS 投票。
ISO 的程序在 SQL/92 之後改变了,所以 SQL 委员会仍在摸索这过程的详情。
如果事事顺利,SQL3 的这些部分会在 1998 年後期成为官方 ISO/IEC 标准,不过时间非常紧迫。
在一九九三年,ANSI 和 ISO 开发委员会决定把之後的 SQL 发展分为多部分的标准。这些部分包括∶
在美国,SQL3 的整体同时当作 ANSI 本土 (Domestic, "D") 专案和 ISO 专案处理。目前估计完成时间是一九九九年。
SQL/CLI 和 SQL/PSM 现正以最高速度处理,以作为 SQL-92 的修订。在美国,它们只被当作国际 (International, "I") 专案处理。 SQL/CLI 在一九九五年完成了。SQL/PSM 应该会在 1996 年未段完成。
除了 SQL3 外,还有一些附加的计划∶
标准委员会和过程 (Standards Committee and Process)
事实上,世上有多个 SQL 标准委员会。ISO 有一部分是一个国际 SQL 标准小组。多个国家都有以 SQL 为重点的委员会。这些国家(通常)派出代表参与 ISO/IEC JTC1/SC 21/WG3 DBL 会议。主动参与 ISO SQL 标准制定的国家是∶
NIST 确认 (NIST Validation)
在美国,SQL 的确认工作实践由 National Institute of Standards and Testing (NIST) 进行。NIST 目前有一套入门级 (entry level) SQL-92 的测试套件。NIST 确认要求的详情被定义为一项 Federal Information Processing Standard (FIPS)。目前对 SQL 的要求定义於 FIPS 127-2。本文件的 Postscript 和文字模式可从 NIST 取得。目前通过 SQL 确认的产品名单也可在 NIST 取得。
标准 SQL 刊物和文件 (Standard SQL Publications and Articles)
有两个版本的 SQL 标准。两个都可从 ANSI 取得∶
除封面和对其他标准的参考外,SQL 标准的两个版本完全一样。两个版本都可从以下 地方取得∶
     American National Standards Institute
     1430 Broadway
     New York, NY 10018
     USA
     Phone (sales): +1.212.642.4900
   * Technical Corrigendum 1:1994 to ISO/IEC 9075:1992
除标准外,也有关於 1992 SQL 标准的书。这些书提供一个比实际标准易理解的描述。
有关的标准 (Related Standards)
SQL 社群也对多个其他标准有兴趣。这节包括一些有关这些努力的指针。当更多资料在网上出现後,这个名单也会更长。
SQL3 努力的一个重要部分在 SQL 基金文件中∶
对物件导向能力有数个先决要求∶
这些能力已定义为 SQL/PSM 的一部分
现在有大量工作在炼制 SQL 物件模型,使它和 ODMG 提出的物件模型看齐。这努力在 X3H2 和 ISO DBL 文章中描述过∶容纳 SQL3 和 ODMG。在 SQL3/OQL Merger 最近的更新版也可得到。
SQL3 时间表
有关 SQL3 的工作正在进行,但最终标准还有待数月後才出现。
ANSI 版的标准的编排也差不多。
SQL/CLI 是一种对 SQL 资料库的呼叫级介面。它设计为支援包裹 (shrink-wrapped) 的应用程式。CLI 原本由 SQL Access Group (SAG) 的一个小组委员会创造。 SAG/CLI 规格在 1992 年以微软 Open DataBase Connectivity (ODBC) 规格公布。一九九三年,SAG 把 CLI 提交到 ANSI 和 ISO SQL 委员会中。(SQL Access Group 现已结合到 X/Open consortium 中。)
SQL/CLI 提供了以下事项的国际标准∶
SQL/CLI 时间表
对标准的开发过程,SQL/CLI 正以惊人的速度处理中。
SQL/PSM 籍以下功能扩充 SQL∶
除作为有价值的应用程式开发工具,SQL/PSM 为 SQL3 提供了物件导向能力的基础支援。
复句和储存程序
复句和储存程序为主从环境提供多种好处∶
程序语言延伸
程序语言籍流向控制和其他编程技巧为 SQL 加上传统程式语言的功能。
流向控制语句
程序语言延伸还包括其他编程技巧∶
此外,所有传统 SQL 语言都可包含在多句的程序中。
外部函数与程序呼叫
一个经常在大量资料库产品的 wish lists 中出现,而有部分实践到的特色,是呼叫用者所写,在资料库软件外的程序。
这功能的好处是它让资料库(因此包括资料库应用程式)使用丰富的程序和函数,数 量多得不能由一个标准组织定出。
SQL/PSM 时间表
SQL/PSM 发展迅速∶
为方便参考,程式语言的结合被抽出成独立的文件。目前的版本即是 SQL-92 的动态和嵌入结合 (dynamic and embedded bindings) 的节录。
程式语言结合仍有不同的问题有待解决。
对传统程式语言来说,资料型态和 SQL-92 的可以互相对应。不过, SQL 物件 和程式语言变数之间的对应必须定义。
对物件导向语言来说,目前的 SQL 资料型态、SQL 物件模型和物件导向程式语言之间 的对应关系必须定义。
物件模型需在公开这些之前稳定下来。
语言结合完成时会成为 SQL3 的一部分。
这规格会为总交易管理员 (global Transaction Manager) 和 SQL 资源管理员 (SQL Resource Manager) 之间应用程式介面 (API) 提供标准。它会根据 ISO/IEC 10026 的内容,“分散交易处理 (Distributed Transaction Processing)”标准化函数呼叫,SQL 资源管理员会用以支援分二阶段的确定 (two-phase commit)。基础的文件是自经 X/Open 批准而来自一份 X/Open 出版物,它清楚的指明 xa_close, xa_commit, xa_complete, xa_end, xa_forget, xa_open, xa_prepare, xa_recover, xa_rollback 和 xa_start 等多个函数,以 SQL 资料型态的输入和输出参数的语法。
ISO 目前正尝试尽快追上 (fast-tract) X/Open XA 规格。这个过程不经改变采用一个目前的业界规格。以 ISO SC21,JTC 1 等级的 XA 尽快追上投票在一九九五年四月二十七日开始,一九九五年十月二十七日结束。如果 XA 规格经 75% 票数和 2/3 的 JTC 1 p-members 批准,它会成为一个国际标准。如果经尽快追上投票批准,SQL/XA 可在 1996 年成为标准。
时态 SQL 处理和时间有关的资料。其概念是查询资料而知道它在一个特定时间的情况是有用的。时态 SQL 是一份由 Rick Snodgrass 在一九九四年十二月所写,描述这概念的文件。
X3 宣布确认一个新计划,ISO/IEC 9075 Part 7: SQL/Temporal 是一份关於 SQL/Temporal 的新闻稿
----------------------------------------------------------------------------
                                Temporal SQL
                                ************
Rick Snodgrass(TSQL2 委员会主席)
31-Dec-1994
有效时间 (Valid-time) 的支援超出一个时态 ADT 的能力。使用後者,一个栏位被指定为时态领域,如 DATE 或 INTERVAL(稍後会有例子)。籍著有效时间,表格的每行随著时间改变, 因为实际上改变了。联系到一个有效时间表格的某行的时间戳记 (timestamp),会被查询语言理解为该行中各栏数值的组合有效的时间。这个无须言明的时间戳记使得查询可以简单易明地表达出来。
The University of Arizona 的 Office of Appointed Personnel 在资料库中有些资料,包括雇员名字、目前薪金和目前职位。这些可用一个简单的表格表达出来。
        Employee(Name, Salary, Title)
        SELECT Salary
        FROM Employee
        WHERE Name = 'Bob'
        Employee(Name, Salary, Title, DateofBirth DATE)
        SELECT DateofBirth
        FROM Employee
        WHERE Name = 'Bob'
OAP 想把受雇历史电脑化。为此,他们加上两栏,一栏指出表示此行的资料何时开始有效, 另一指出资料何时失效。
Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE)
以资料模型 (data model) 说,这些新栏位和 DateofBirth 毫无分别。不过,它们的 存在产生多种结果。
要找出雇员目前的薪金会较为困难。
        SELECT Salary
        FROM Employee
        WHERE Name = 'Bob' AND Start <= CURRENT_DATE AND CURRENT_DATE <= Stop
Name    Salary  Title             DateofBirth   Start           Stop
----    ------  -----             -----------   -----           ----
Bob     60000   Assistant Provost 1945-04-09    1993-01-01      1993-05-30
Bob     70000   Assistant Provost 1945-04-09    1993-06-01      1993-09-30
Bob     70000   Provost           1945-04-09    1993-10-01      1994-01-31
Bob     70000   Professor         1945-04-09    1994-02-01      1994-12-31
                               图 1
Name    Salary  Start           Stop
----    ------  -----           ----
Bob     60000   1993-01-01      1993-05-30
Bob     70000   1993-06-01      1994-12-31
CREATE TABLE Temp(Salary, Start, Stop)
AS      SELECT Salary, Start, Stop
        FROM Employee;
        UPDATE Temp T1
        SET (T1.Stop) = (SELECT MAX(T2.Stop)
                         FROM Temp AS T2
                         WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start
                                AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop)
        WHERE EXISTS (SELECT *
                      FROM Temp AS T2
                      WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start
                                AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop)
        until no rows updated;
DELETE FROM Temp T1
WHERE EXISTS (SELECT *
              FROM Temp AS T2
              WHERE T1.Salary = T2.Salary
                        AND ((T1.Start > T2.Start AND T1.Stop <= T2.Stop)
                        OR (T1.Start >= T2.Start AND T1.Stop < T2.Stop))
第三种方法是使用 SQL 为表格开启一个游标 (cursor)。为每个薪金管理一个各段落的链表 (linked list)。这链表开始时需为空白。
DECLARE emp_cursor CURSOR FOR
        SELECT Salary, Title, Start, Stop
        FROM Employee;
OPEN emp_cursor;
loop:
        FETCH emp_cursor INTO :salary, :start, :stop;
        if no-data returned then goto finished;
        find position in linked list to insert this information;
        goto loop;
finished:
CLOSE emp_cursor;
如果游标是 ORDER BY Start,链表并非必要。
无论如何,一句简单的查询是不易用 SQL-92 的功能表达出这目的。使用 TSQL2 的 话这查询会很简单。
        SELECT Salary
        FROM Employee
一个更激进的方法是把纲目重整,把薪金、职级、出生日期资料分开,从而避开抽取 薪酬历史时遇到的问题。(为方便计,我们以後的讨论中不再考虑出生日期。)
        Employee1 (Name, Salary, Start DATE, Stop DATE)
        Employee2 (Name, Title, Start DATE, Stop DATE)
Name    Salary  Start           Stop
----    ------  -----           ----
Bob     60000   1993-01-01      1993-05-30
Bob     70000   1993-06-01      1993-12-31
Name    Title                   Start           Stop
----    ------                  -----           ----
Bob     Assistant Provost       1993-01-01      1993-09-30
Bob     Provost                 1993-10-01      1994-01-31
Bob     Professor               1994-02-01      1994-12-31
改变之後,取得雇员薪金资料变得简单。
        SELECT Salary, Start, Stop
        FROM Employee1
        WHERE Name = 'Bob'
SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee1.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
     AND Employee2.Start <= Employee1.Start AND Employee1.Stop < Employee2.Stop
UNION
SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee2.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
     AND Employee1.Start >= Employee2.Start AND Employee2.Stop < Employee1.Stop
        AND Employee1.Start < Employee2.Stop
UNION
SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee1.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
     AND Employee2.Start > Employee1.Start AND Employee1.Stop < Employee2.Stop
        AND Employee2.Start < Employee1.Stop
UNION
SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee2.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
     AND Employee2.Start > Employee1.Start AND Employee2.Stop < Employee1.Stop
        SELECT Employee1.Name, Salary, Dept
        FROM Employee1, Employee2
        WHERE Employee1.Name = Employee2.Name
现在 OAP 被问及最高薪酬是什麽?加上时间前,这很简单。
        SELECT MAX(Salary)
        FROM Employee
        SELECT Salary
        FROM Employee AS E1
        WHERE NOT EXISTS (SELECT *
                          FROM Employee AS E2
                          WHERE E2.Salary > E1.Salary)
CREATE TABLE Temp (Salary, Start, Stop)
AS      SELECT Salary, Start, Stop
        FROM Employee;
INSERT INTO Temp
        SELECT T.Salary, T.Start, E.Start
        FROM Temp AS T, Employee AS E
        WHERE E.Start >= T.Start AND E.Start < T.Stop AND E.Salary > T.Salary;
INSERT INTO Temp
        SELECT T.Salary, T.Stop, E.Stop
        FROM Temp AS T, Employee AS E
        WHERE E.Stop > T.Start AND E.Stop <= T.Stop AND E.Salary > T.Salary;
DELETE FROM Temp T
WHERE EXISTS (SELECT *
              FROM Employee AS E
              WHERE ((T.Start => E.Start AND T.Start < E.Stop)
                        OR (E.Start >= T.Start AND E.Start < T.Stop))
                    AND E.Salary > T.Salary;
第三个方法是尽量少用 SQL,而在主机上所用的语言中用游标找出最长的历史。
使用 TSQL2 再次简单直接。
        SELECT MAX(Salary)
        FROM Employee
大部分资料库应用程式都需要处理随时间改变的资料。有效时间在 SQL 并不支援。很多时态查询不是很以 SQL 模拟,就是需要把 SQL 嵌入到程序语言中,因为 SQL 在资料模型和查询语言结构中缺乏对有效时间的支援。
另一方面,我们示□出加上有效时间支援需要对 DBMS 施行作出一些改变,但能戏剧性地简单一些查询,并使其他查询变得有可能。将来也可於储存结构、索引方法的最佳化 (optimization)。而最佳化的策略可导致表现大幅提升。
随著 SQL3 的一个新部分支援随时间改变的资料,我们可以开□处理这类应用,改良 SQL3 处理时态资料的能力。
----------------------------------------------------------------------------
           Accredited Standards Committee* X3, Information Technology
NEWS RELEASE
文件编号∶       PR/96-0002
回覆∶       Barbara Bennett at bbennett@itic.nw.dc.us
             X3 宣布认可一个这专案, ISO/IEC 9075 Part 7:  SQL/Temporal
Washington D.C., 1996 年一月
----------------------------------------------------------------------------
如有查询,可邮寄往∶
        Chairman of X3H2,
        Dr. Donald R. Deutsch,
        Sybase, Inc., Suite 800,
        6550 Rock Spring
        Drive, Bethesda, MD  20817.
        Email: deutsch@sybase.com.
        X3 Secretariat at
        1250 Eye Street
        NW, Suite 200,
        Washington DC  20005.
        Email: x3sec@itic.nw.dc.us
        FAX:  (202)638-4922.
一个为建立用於多媒体应用程式的 SQL 物件函式库的新 ISO/IEC 国际标准化计划在一九九三年初期获批准进行。这个新标准化行动名为 SQL Multimedia (SQL/MM),它会用草拟中的 SQL3 规格中的抽象资料型态(ADT)规格和目标指定 SQL ADT 定义套装。 SQL/MM 目标为标准化科学和工程、全文和文件处理、管理多媒体物件,如影像、声音、动画、音乐和录像的物件函数库。它多数会提出一种用於其他 JTC1 标准组织(如有关文件的 SC18、影像的 SC24、照片和动作图像的 SC29)定义的物件的 SQL 语言结合 (binding)。
SQL/MM 的专案计划指出它会成为一份多部分标准,包含不定数量的部分。第一部分会是其他部分如何建成的框架。其他每个部分会专注於一个特定的 SQL 应用程式套件。以下为一九九四年八月存在的 SQL/MM 部分∶
有多个有关空间和地理资料的标准化的工作在进行中∶