第2 章 SQL 问题
2.1 本章目的
在本章中就在 HSQLDB 主页论坛或邮件列表中多次提出的问题进行解答,如果你打算在应
用程序中使用HSQLDB 的话,你应该阅读一下本章。
2.2 对SQL 标准的支持
1.8.0 版本的HSQLDB 支持SQL92、99 和2003 标准规定的SQL 方言。这意味着HSQLDB
中支持的标准特性(例如左外连接)的语法是由标准文本规定的。许多SQL92、99 甚至更
高级的特征在HSQLDB 中得到了支持,并且对SQL2003 标准的大多数以及一些可选的特性
进行支持。然而,对于某些标准的特性没有支持,所以HSQLDB 就没有做出支持各个级别
所有的标准特性的声明。
“SQL 语法”一章列出了HSQLDB 所支持的所有的关键字和语法。当书写有关HSQLDB 或者
转换现有的有关HSQLDB 的SQL DDL(数据定义语言)和DML(数据操作语言)语句的
时候,你应该查阅一下HSQLDB 所支持的语法,并对SQL 语句作出相应的修改。
SQL 标准中保留的关键字是不能作为表明或字段名使用的。例如,“POSITION”被作为与Java
中的String.indexOf()作用类似的函数加以保留。HSQLDB 目前并不限制使用它不支持其用
法的关键字或用户能够区分清楚的关键字。例如,“BEGIN”是HSQLDB 目前没有支持的关
键字,所以你也可使用它作为表或者列的名称。不过你应该避免使用这些保留字,因为在
HSQLDB 以后的版本中有可能支持这些保留字,否则将拒绝含有这些保留字表定义或查询
语句。全部SQL 保留字列表请参看org.hsqldb.Token 类。
HSQLDB 也支持一些SQL 标准之外的关键字和表达式作为性能的增强。像SELECT TOP 5
from .., SELECT LIMIT 0 10 from ... 或者 DROP TABLE mytable IF EXISTS 这样的表达
式都是HSQLDB 增强性能所支持。
所有被双引号标注的关键字可以被用做数据库对象。
2.3 约束和索引
2.3.1 主键约束
在 1.7.0 版本之前,一个CONSTRAINT <name> PRIMARY KEY(名为name 的主键约束)
被在内部翻译成一个唯一的索引,另外,一个隐藏列被添加到具有额外唯一索引的表上。从
1.7.0 开始,单一列主键和多列主键(single-column and multi-column PRIMARY KEY)约束都得
到支持。它们由主键列指定的唯一索引支持,而没有额外的隐藏列来维护它们的索引。
2.3.2 唯一性约束
根据 SQL 标准,一个单一列上的唯一性约束表示不允许存在两个相同的值(空值出外),也
就是说这样的列中可以一个或更多为空值(NULL)的行而不违反唯一性约束。
多个列(c1, c2, c
相关文档:
原文:http://www.blogjava.net/Unmi/archive/2009/01/05/249956.html
在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:
1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中
2. 建立数据库间的 dblink,然后用 create table B as select * from A ......
1。select * from a where a.rowid=(select min(b.rowid) from b where a.id=b.id);
create test1(
nflowid number primary key,
ndocid number,
drecvdate date);
insert into test1 values (1, 12301, sysdate) ;
insert into test1 values (2, 12301, sysdate);
select * from test1 order by drecvdate:
......
库位 货物编号 库存数
1 0101 50
1 0102 60
1 0103 50
2 0101 90
2 0103 100
2 0111 30
3 0101 12 ......
递归的通用表表达式
递归的CTE是根据至少两个查询(或者称为两个成员)构建的,一个是非递归查询,也成为固定成员,只能调用一次,另外一个是递归查询,也成为递归成员(RM),可以反复调用,直到查询不再返回行。查询由UNION ALL运算符连接为一个单独的CTE。
--使用递归的通用表表达式
GO
CREATE TABLE CarParts
( ......