第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
相关文档:
系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......
SQL常用语句
SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作。
一、基础
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk ......
1、查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
2、查看表空间物理文件的名称及大小
select tablespace_ ......
CLR 用户定义函数只是在 .NET 程序集中定义的静态方法。CREATE FUNCTION 语句已扩展为支持创建 CLR
用户定义函数。
1、创建数据库项目
2、添加用户定义函数
以下是演示代码:
Code
using
System;
using
System.Data;
using
System.Data.SqlClient;
using
System.Data.Sql ......
递归的通用表表达式
递归的CTE是根据至少两个查询(或者称为两个成员)构建的,一个是非递归查询,也成为固定成员,只能调用一次,另外一个是递归查询,也成为递归成员(RM),可以反复调用,直到查询不再返回行。查询由UNION ALL运算符连接为一个单独的CTE。
--使用递归的通用表表达式
GO
CREATE TABLE CarParts
( ......