Transact-SQL 用户指南
Adaptive Server® Enterprise
15.0
文档 ID:DC32970-01-1500-01
最后修订日期:2005 年 10 月
版权所有 ©1987-2006 Sybase, Inc. 保留所有权利。
本出版物适用于 Sybase 软件和任何后续版本,除非在新版本或技术声明中另有说明。此文档中的信息如有更改,恕不另行
通知。此处说明的软件按许可协议提供,其使用和复制必须符合该协议的条款。
若要订购附加文档,美国和加拿大的客户请拨打客户服务部门电话 (800) 685-8225 或发传真至 (617) 229-9845。
持有美国许可协议的其它国家 / 地区的客户可通过上述传真号码与客户服务部门联系。所有其他国际客户请与 Sybase 子公司
或当地分销商联系。仅在定期安排的软件发布日期提供升级。未经 Sybase, Inc. 的事先书面许可,本书的任何部分不得以任
何形式、任何手段 (电子的、机械的、手动、光学的或其它手段)进行复制、传播或翻译。
Sybase、Sybase 徽标、ADA Workbench、Adaptable Windowing Environment、Adaptive Component Architecture、Adaptive Server、
Adaptive Server Anywhere、 Adaptive Server Enterprise、 Adaptive Server Enterprise Monitor、 Adaptive Server Enterprise
Replication、 Adaptive Server Everywhere、 Adaptive Warehouse、 Afaria、 Answers Anywhere、 Anywhere Studio、 Application
Manager、AppModeler、APT Workbench、APT-Build、APT-Edit、APT-Execute、APT-Translator、APT-Library、AvantGo Mobile
Delivery、 AvantGo Mobile Inspection、 AvantGo Mobile Marketing Channel、 AvantGo Mobile Pharma、 AvantGo Mobile Sales、
AvantGo Pylon、 AvantGo Pylon Application Server、 AvantGo Pylon Conduit、 AvantGo Pylon PIM Server、 AvantGo Pylon Pro、
Backup Server、 BizTracker、 ClearConnect、 Client-Library、 Client Services、 Convoy/DM、 Copernicus、 Data Pipeline、 Data
Workbench、 DataArchitect、 Database Analyzer、 DataExpress、 DataServer、 DataWindow、 DataWindow .NET、 DB-Library、
dbQueue、Developers Workbench、DirectConnect、DirectConnect Anywhere、Distribution Director、e-ADK、E-Anywhere、e-Biz
Impact、 e-Biz Integrator、 E-Whatever、 EC Gateway、 ECMAP、 ECRTP、 eFulfillment Accelerator、 Embedded SQL、 EMS、
Enterprise Application Studio、Enterprise Client/Server、Enterprise Connect、Enterprise Data Studio、Enterprise Manager、Enterprise
SQL Server Manager、 Enterprise Work Architecture、 Enterprise Work Designer、 Enterprise Work Modeler、 eProcurement
Accelerator、EWA、Financial Fusion、Financial Fusion Server、Gateway Manager、GlobalFIX、iAnywhere、iAnywhere Solutions、
ImpactNow、 Industry Warehouse Studio、 InfoMaker、 Information Anywhere、 Information Everywhere、 InformationConnect、
InternetBuilder、iScript、Jaguar CTS、jConnect for JDBC、M2M Anywhere、Mach Desktop、Mail Anywhere Studio、Mainframe
Connect、Maintenance Express、Manage Anywhere Studio、M-Business Channel、M-Business Network、M-Business Server、MDI
Access Server、MDI Database Gateway、media.splash、MetaWorks、mFolio、Mirror Activator、MySupport、Net-Gateway、Net-
Library、New Era of Networks、ObjectConnect、ObjectCycle、OmniConnect、OmniSQL Access Module、OmniSQL Toolkit、Open
Biz、Open Client、Open ClientConnect、Open Client/Server、Open Client/Server Interfaces、Open Gateway、Open Server、Open
ServerConnect、Open Solutions、Optima++、PB-Gen、PC APT Execute、PC DB-Net、PC Net Library、PocketBuilder、Pocket
PowerBuilder、 Power++、 power.stop、 PowerAMC、 PowerBuilder、 PowerBuilder Foundation Class Library、 PowerDesigner、
PowerDimensions、PowerDynamo、PowerScript、PowerSite、PowerSocket、Powersoft、PowerStage、PowerStudio、PowerTips、
Powersoft Portfolio、Powersoft Professional、PowerWare Desktop、PowerWare Enterprise、ProcessAnalyst、QAnywhere、Rapport、
RemoteWare、RepConnector、Replication Agent、Replication Driver、Replication Server、Replication Server Manager、Replication
Toolkit、Report-Execute、Report Workbench、Resource Manager、RFID Anywhere、RW-DisplayLib、RW-Library、S-Designor、
SDF、 Search Anywhere、 Secure SQL Server、 Secure SQL Toolset、 Security Guardian、 SKILS、 smart.partners、 smart.parts、
smart.script、SOA Anywhere、SQL Advantage、SQL Anywhere、SQL Anywhere Studio、SQL Code Checker、SQL Debug、SQL
Edit、SQL Edit/TPU、SQL Everywhere、SQL Modeler、SQL Remote、SQL Server、SQL Server Manager、SQL SMART、SQL
Toolset、SQL Server/CFT、SQL Server/DBM、SQL Server SNMP SubAgent、SQL Station、SQLJ、STEP、SupportNow、S.W.I.F.T.
Message Format Libraries、Sybase Central、Sybase Client/Server Interfaces、Sybase Financial Server、Sybase Gateways、Sybase
IQ、Sybase MPP、Sybase SQL Desktop、Sybase SQL Lifecycle、Sybase SQL Workgroup、Sybase User Workbench、SybaseWare、
Syber Financial、SyberAssist、SybFlex、SyBooks、System 10、System 11、System XI(徽标)、SystemTools、Tabular Data Stream、
TradeForce、Transact-SQL、Translation Toolkit、UltraLite、UltraLite.NET、UNIBOM、Unilib、Uninull、Unisep、Unistring、URK
Runtime Kit for UniCode、VisualWriter、VQL、WarehouseArchitect、Warehouse Control Center、Warehouse Studio、Warehouse
WORKS、Watcom、Watcom SQL、Watcom SQL Server、Web Deployment Kit、Web.PB、Web.SQL、WebSights、WebViewer、
WorkGroup SQL Server、 XA-Library、 XA-Server、 XcelleNet 和 XP Server 是 Sybase, Inc. 的商标。
Unicode 和 Unicode 徽标是 Unicode, Inc. 的注册商标。
本书中使用的所有其它公司名和产品名均可能是相应公司的商标或注册商标。
Use, duplication, or disclosure by the government is subject to the restrictions set forth in subparagraph (c)(1)(ii) of DFARS 52.227-7013
for the DOD and as set forth in FAR 52.227-19(a)-(d) for civilian agencies.
Sybase, Inc., One Sybase Drive, Dublin, CA 94568。
目录
关于本手册 ........................................................................................................................... xix
第 1 章
SQL 构件块 ...................................................................................... 1
Adaptive Server 中的 SQL .............................................................. 1
查询、数据修改和命令 ............................................................. 2
表、列和行 ............................................................................... 2
关系操作 ................................................................................... 3
编译对象 ................................................................................... 3
命名约定 .......................................................................................... 5
SQL 数据字符 ........................................................................... 5
SQL 语言字符 ........................................................................... 6
标识符 ....................................................................................... 7
Adaptive Server 中的表达式 .......................................................... 13
算术表达式和字符表达式 ........................................................ 13
关系表达式和逻辑表达式 ........................................................ 19
Transact-SQL 扩展 ........................................................................ 20
compute 子句 ......................................................................... 21
控制流语言 ............................................................................. 21
存储过程 ................................................................................. 21
扩展存储过程 .......................................................................... 22
触发器 ..................................................................................... 22
缺省值和规则 .......................................................................... 22
错误处理和 set 选项 ............................................................... 23
SQL 的其它 Adaptive Server 扩展 .......................................... 24
符合 ANSI 标准 ............................................................................. 25
美国联邦信息处理标准 (FIPS) 标志程序 ................................. 26
链式事务和隔离级别 ............................................................... 26
标识符 ..................................................................................... 27
SQL 标准样式的注释 .............................................................. 27
右截断字符串 .......................................................................... 27
update 和 delete 语句所要求的权限 ....................................... 28
算术错误 ................................................................................. 28
同义关键字 ............................................................................. 29
空值处理 ................................................................................. 29
Transact-SQL 用户指南
iii
目录
第 2 章
第 3 章
iv
Adaptive Server 登录帐号 ............................................................. 29
组成员资格 ............................................................................. 30
角色成员资格 .......................................................................... 30
有关您的 Adaptive Server 帐号的信息 ................................... 31
口令更改 ................................................................................. 31
远程登录名 ............................................................................. 32
isql 实用程序 ................................................................................. 33
缺省数据库 ............................................................................. 34
使用 isql 的基于网络的安全服务 ............................................. 35
isql 注销 .................................................................................. 35
pubs2 和 pubs3 样本数据库 .......................................................... 36
样本数据库内容 ...................................................................... 36
查询:从表中选择数据 .................................................................... 39
什么是查询? ................................................................................. 39
select 语法 .............................................................................. 40
使用 select 子句选择列 .................................................................. 41
使用 select * 选择所有列 ........................................................ 41
选择特定列 ............................................................................. 42
重新安排列顺序 ...................................................................... 43
在查询结果中重命名列 ........................................................... 43
使用表达式 ............................................................................. 44
选择 text、 unitext、 image 和值 ............................................ 50
选择列表摘要 .......................................................................... 52
利用 distinct 消除重复查询结果 ..................................................... 53
利用 from 子句指定表 .................................................................... 55
使用 where 子句选择行 ................................................................. 56
比较运算符 ............................................................................. 57
范围 (between 和 not between) .......................................... 58
列表 (in 和 not in) ................................................................ 60
匹配模式 ........................................................................................ 63
匹配字符串:like .................................................................... 63
字符串和引号 .......................................................................... 69
“未知”值:NULL ................................................................. 69
带有逻辑运算符的连接条件 .................................................... 74
使用集合、分组和排序 .................................................................... 77
使用集合函数 ................................................................................. 77
集合函数和数据类型 ............................................................... 79
count 与 count(*) .................................................................... 80
带有 distinct 的集合函数 ......................................................... 81
空值和集合函数 ...................................................................... 82
Adaptive Server Enterprise
目录
将查询结果分组:group by 子句 ................................................... 83
group by 语法 ......................................................................... 84
group by 和 SQL 标准 ............................................................ 84
用 group by 对组进行嵌套 ...................................................... 85
使用 group by 在查询中引用其它列 ........................................ 85
使用外部连接和集合扩展列 .................................................... 89
表达式和 group by .................................................................. 91
在嵌套集合中使用 group by .................................................... 92
空值和 group by ...................................................................... 93
where 子句和 group by ........................................................... 94
group by 和 all ........................................................................ 95
不带 group by 的集合 ............................................................. 96
选择数据组:having 子句 .............................................................. 97
having、 group by 和 where 子句如何交互作用 ..................... 99
使用不带 group by 的 having ................................................ 101
对查询结果进行排序:order by 子句 ........................................... 103
order by 和 group by ............................................................. 105
与 select distinct 一起使用的 order by 和 group by .............. 106
汇总数据组:compute 子句 ......................................................... 107
行集合和 compute ................................................................ 110
在 compute 后指定多列 ........................................................ 111
使用多个 compute 子句 ........................................................ 112
将集合应用于多列 ................................................................. 113
在同一 compute 子句中使用不同集合 .................................. 114
生成总和:不带 by 的 compute ............................................ 115
组合查询:union 运算符 .............................................................. 116
union 查询的准则 .................................................................. 118
将 union 与其它 Transact-SQL 命令一起使用 ...................... 121
连接:从若干表中检索数据 .......................................................... 123
连接如何工作 ............................................................................... 124
连接语法 ............................................................................... 124
连接和关系模型 .................................................................... 125
如何使连接结构化 ....................................................................... 125
from 子句 .............................................................................. 127
where 子句 ........................................................................... 128
如何处理连接 ............................................................................... 130
等值连接和自然连接 .................................................................... 130
使用其它条件的连接 .................................................................... 132
未基于等同性的连接 .................................................................... 132
自连接和相关名 ........................................................................... 134
不均等连接 .................................................................................. 135
不均等连接和子查询 ............................................................. 137
连接两个以上的表 ....................................................................... 138
第 4 章
Transact-SQL 用户指南
v
目录
第 5 章
外部连接 ...................................................................................... 140
内部表和外部表 .................................................................... 140
外部连接限制 ........................................................................ 141
用于外部连接的视图 ............................................................. 141
ANSI 内部和外部连接 ........................................................... 142
ANSI 外部连接 ...................................................................... 147
Transact-SQL 外部连接 ........................................................ 158
空值如何影响连接 ....................................................................... 162
确定要连接的表列 ....................................................................... 163
子查询:在其它查询中使用查询 ................................................... 165
子查询工作方式 ........................................................................... 165
子查询语法 ........................................................................... 166
子查询限制 ........................................................................... 166
使用子查询的示例 ................................................................. 167
限定列名 ............................................................................... 168
带相关名的子查询 ................................................................. 169
多重嵌套 ............................................................................... 170
update、 delete 和 insert 语句中的子查询 ........................... 171
条件语句中的子查询 ............................................................. 172
用子查询替代表达式 ............................................................. 172
子查询类型 .................................................................................. 173
表达式子查询 ........................................................................ 174
定量判定子查询 .................................................................... 177
与 in 连用的子查询 ............................................................... 183
与 not in 连用的子查询 ......................................................... 185
使用包含 NULL 的 not in 的子查询 ....................................... 186
与 exists 连用的子查询 ......................................................... 186
与 not exists 连用的子查询 ................................................... 189
使用 exists 查找交集与差集 .................................................. 190
使用 SQL 派生表的子查询 .................................................... 191
使用相关子查询 ........................................................................... 191
包含 Transact-SQL 外部连接的相关子查询 .......................... 192
带相关名的相关子查询 ......................................................... 193
带比较运算符的相关子查询 .................................................. 194
在 having 子句中的相关子查询 ............................................. 195
vi
Adaptive Server Enterprise
第 6 章
第 7 章
目录
使用和创建数据类型 ..................................................................... 197
Transact-SQL 数据类型的工作原理 ............................................ 197
使用系统提供的数据类型 ............................................................. 198
精确数值类型:整数 ............................................................. 200
精确数值类型:小数 ............................................................. 200
近似数值数据类型 ................................................................. 201
货币数据类型 ........................................................................ 202
日期和时间数据类型 ............................................................. 202
字符数据类型 ........................................................................ 203
二进制数据类型 .................................................................... 207
bit 数据类型 .......................................................................... 209
timestamp 数据类型 ............................................................. 209
sysname 和 longsysname 数据类型 ..................................... 209
数据类型之间的转换 .................................................................... 210
混合型算术和数据类型层次 ......................................................... 210
使用 money 数据类型 ........................................................... 212
确定精度和标度 .................................................................... 213
创建用户定义的数据类型 ............................................................. 213
使用 identity 属性创建用户定义的数据类型 .......................... 214
指定长度、精度和标度 ......................................................... 214
指定空值类型 ........................................................................ 215
将规则和缺省值与用户定义的数据类型相关联 ..................... 215
创建具有 IDENTITY 属性的用户定义的数据类型 ................. 215
从用户定义的数据类型创建 IDENTITY 列 ............................ 216
删除用户定义的数据类型 ...................................................... 216
获取有关数据类型的信息 ............................................................. 217
添加、更改和删除数据 ................................................................. 219
简介 ............................................................................................. 219
权限 ...................................................................................... 220
参照完整性 ........................................................................... 220
事务 ...................................................................................... 220
使用样本数据库 .................................................................... 221
数据类型输入规则 ....................................................................... 221
char、nchar、unichar、univarchar、varchar、nvarchar、unitext
和 text ............................................................................ 221
日期和时间 ........................................................................... 222
binary、 varbinary 和 image ................................................. 227
money 和 smallmoney .......................................................... 227
float、 real 和 double precision ............................................ 228
decimal 和 numeric ............................................................... 228
整数类型及其无符号形式 ...................................................... 229
timestamp ............................................................................. 229
Transact-SQL 用户指南
vii
目录
第 8 章
添加新数据 .................................................................................. 230
insert 语法 ............................................................................ 230
使用 values 添加新行 ........................................................... 231
插入数据到指定列 ................................................................. 231
使用 select 添加新行 ............................................................ 239
更改现有数据 ............................................................................... 243
update 语法 .......................................................................... 243
将 set 子句用于 update ......................................................... 244
将 where 子句用于 update .................................................... 245
将 from 子句用于 update ...................................................... 246
使用连接执行更新 ................................................................. 246
更新 IDENTITY 列 ................................................................ 247
更改 text、 unitext 和 image 数据 ................................................ 247
删除数据 ...................................................................................... 249
将 from 子句用于 delete ....................................................... 249
从 IDENTITY 列删除 ............................................................. 250
删除表中的所有行 ....................................................................... 251
truncate table 语法 ............................................................... 251
创建数据库和表 ............................................................................. 253
何为数据库和表? ....................................................................... 253
强制实现数据库的数据完整性 ............................................... 254
数据库中的权限 .................................................................... 255
使用和创建数据库 ....................................................................... 256
选择数据库:use .................................................................. 257
创建用户数据库:create database ....................................... 257
quiesce database 命令 ......................................................... 259
变更数据库的大小 ....................................................................... 260
删除数据库 .................................................................................. 261
创建表 ......................................................................................... 261
每个表的最大列数 ................................................................. 261
创建表示例 ........................................................................... 262
选择表名 ............................................................................... 263
将表创建于不同的数据库中 .................................................. 263
create table 语法 .................................................................. 264
使用 IDENTITY 列 ................................................................ 265
允许在列中使用空值 ............................................................. 268
使用临时表 ........................................................................... 270
viii
Adaptive Server Enterprise