求sqlserver存储过程 转换成 oracle存储过程的简便方法,工具也行

w3kmaster 2004-11-18 12:06:02
原项目用sqlserver2000库,有100多个存储过程,现在要迁移到oracle上面,有没有什么工具可以方便地转换存储过程和表结构啊?
...全文
183 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
w3kmaster 2004-11-20
  • 打赏
  • 举报
回复
自己up
w3kmaster 2004-11-19
  • 打赏
  • 举报
回复
select count(*) from sysobjects where xtype='P' and status>0
这条语句是统计库里用户存储过程的数量吧?我统计出来的和我自己用手数的好像不一样,少了几十个
zjcxc 2004-11-19
  • 打赏
  • 举报
回复
--至于查看存储过程结构的问题,可以在你的数据库中创建上面的存储过程,然后用下面的语句调用

--这样即可以打印出数据库中所有的存储过程(包括脚本),同时对于加密的存储过程,还可以解密

--对所有的存储过程解密
declare tb cursor for
select name from sysobjects where xtype='P' and status>0 and name<>'sp_decrypt'

declare @name sysname
open tb
fetch next from tb into @name
while @@fetch_status=0
begin
print '/*-------存储过程 ['+@name+'] -----------*/'
exec sp_decrypt @name
fetch next from tb into @name
end
close tb
deallocate tb
zjcxc 2004-11-19
  • 打赏
  • 举报
回复
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_decrypt]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_decrypt]
GO

/*--破解函数,过程,触发器,视图.仅限于SQLSERVER2000

--作者:J9988--*/
/*--调用示例

--解密指定存储过程
exec sp_decrypt 'AppSP_test'
--*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP_DECRYPT]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SP_DECRYPT]
GO

CREATE PROCEDURE sp_decrypt(@objectName varchar(50))
AS
begin
set nocount on
--CSDN:j9988 copyright:2004.04.15
--V3.1
--破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器
--修正上一版视图触发器不能正确解密错误
--发现有错,请E_MAIL:CSDNj9988@tom.com
begin tran
declare @objectname1 varchar(100),@orgvarbin varbinary(8000)
declare @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)
DECLARE @OrigSpText1 nvarchar(4000), @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)
declare @i int,@status int,@type varchar(10),@parentid int
declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int
select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@ObjectName)

create table #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)
insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments WHERE id = object_id(@objectName)
select @number=max(number) from #temp
set @k=0

while @k<=@number
begin
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
begin
if @type='P'
set @sql1=(case when @number>1 then 'ALTER PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'ALTER PROCEDURE '+ @objectName+' WITH ENCRYPTION AS '
end)

if @type='TR'
begin
declare @parent_obj varchar(255),@tr_parent_xtype varchar(10)
select @parent_obj=parent_obj from sysobjects where id=object_id(@objectName)
select @tr_parent_xtype=xtype from sysobjects where id=@parent_obj
if @tr_parent_xtype='V'
begin
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTERD OF INSERT AS PRINT 1 '
end
else
begin
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
end

end
if @type='FN' or @type='TF' or @type='IF'
set @sql1=(case @type when 'TF' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
end)

if @type='V'
set @sql1='ALTER VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'

set @q=len(@sql1)
set @sql1=@sql1+REPLICATE('-',4000-@q)
select @sql2=REPLICATE('-',8000)
set @sql3='exec(@sql1'
select @colid=max(colid) from #temp where number=@k
set @n=1
while @n<=CEILING(1.0*(@colid-1)/2) and len(@sQL3)<=3996
begin
set @sql3=@sql3+'+@'
set @n=@n+1
end
set @sql3=@sql3+')'
exec sp_executesql @sql3,N'@sql1 nvarchar(4000),@ varchar(8000)',@sql1=@sql1,@=@sql2

end
set @k=@k+1
end

set @k=0
while @k<=@number
begin

if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
begin
select @colid=max(colid) from #temp where number=@k
set @n=1

while @n<=@colid
begin
select @OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #temp WHERE colid=@n and number=@k

SET @OrigSpText3=(SELECT ctext FROM syscomments WHERE id=object_id(@objectName) and colid=@n and number=@k)
if @n=1
begin
if @type='P'
SET @OrigSpText2=(case when @number>1 then 'CREATE PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'CREATE PROCEDURE '+ @objectName +' WITH ENCRYPTION AS '
end)


if @type='FN' or @type='TF' or @type='IF'
SET @OrigSpText2=(case @type when 'TF' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
end)

if @type='TR'
begin

if @tr_parent_xtype='V'
begin
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTEAD OF INSERT AS PRINT 1 '
end
else
begin
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
end

end

if @type='V'
set @OrigSpText2='CREATE VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'

set @q=4000-len(@OrigSpText2)
set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)
end
else
begin
SET @OrigSpText2=REPLICATE('-', 4000)
end
SET @i=1

SET @resultsp = replicate(N'A', (datalength(@OrigSpText1) / 2))

WHILE @i<=datalength(@OrigSpText1)/2
BEGIN

SET @resultsp = stuff(@resultsp, @i, 1, NCHAR(UNICODE(substring(@OrigSpText1, @i, 1)) ^
(UNICODE(substring(@OrigSpText2, @i, 1)) ^
UNICODE(substring(@OrigSpText3, @i, 1)))))
SET @i=@i+1
END
set @orgvarbin=cast(@OrigSpText1 as varbinary(8000))
set @resultsp=(case when @encrypted=1
then @resultsp
else convert(nvarchar(4000),case when @status&2=2 then uncompress(@orgvarbin) else @orgvarbin end)
end)
print @resultsp

set @n=@n+1

end

end
set @k=@k+1
end

drop table #temp
rollback tran
end
zjcxc 2004-11-19
  • 打赏
  • 举报
回复
没通用的办法,毕竟SQL和oracle语法不同.
mgsray 2004-11-19
  • 打赏
  • 举报
回复
除了用手数,有什么办法知道一个sqlserver库里有几个存储过程呢?存储过程的数量
use 数据库名
go
select * from sysobjects where type='p' --每一个的详细信息
select count(1) from sysobjects where type='p' --总数
kookboy 2004-11-19
  • 打赏
  • 举报
回复
手工转,没什么好办法
zlp321002 2004-11-18
  • 打赏
  • 举报
回复
好不好改啊??
SQLSERVER2000和ORCAL最大区别是什么啊?
还有要注意什么啊??
我最近也和楼主遇到差不多的问题。。
谢谢大家详细解答!!!!
davorsuker39 2004-11-18
  • 打赏
  • 举报
回复
一个一个改吧!!!
mgsray 2004-11-18
  • 打赏
  • 举报
回复
也许会有这样的工具,但是可能性不大,因为语法和结构大相径庭
txlicenhe 2004-11-18
  • 打赏
  • 举报
回复
难搞了,估计得一个个改。
w3kmaster 2004-11-18
  • 打赏
  • 举报
回复
除了用手数,有什么办法知道一个sqlserver库里有几个存储过程呢?存储过程的数量
w3kmaster 2004-11-18
  • 打赏
  • 举报
回复
哪位大哥介绍个好点的办法啊?
w3kmaster 2004-11-18
  • 打赏
  • 举报
回复
这样会累死人的
介绍就不多说了,下边是部分目录,觉得有用的话就顶一个C:.│ sqlserver2000.txt│ ├─第01章│ 1.9.1 设置内存选项.sql│ 1.9.2(2) 使用文件及文件组.sql│ 1.9.2(3) 调整tempdb数据库的文件属性.sql│ ├─第02章│ │ 2.1 日期概念理解中的一些测试.sql│ │ 2.2.4 CONVERT在日期转换中的使用示例.sql│ │ 2.3.3 SET DATEFORMAT对日期处理的影响.sql│ │ 2.3.4 SET LANGUAGE对日期处理的影响示例.sql│ │ 2.4.1 日期格式化处理.sql│ │ 2.4.2 日期推算处理.sql│ │ 2.4.3 特殊日期加减函数.sql│ │ 2.5.1 查询指定日期段内过生日的人员.sql│ │ 2.5.2 生成日期列表的函数.sql│ │ 2.5.3 工作日处理函数(标准节假日).sql│ │ 2.5.3 工作日处理函数(自定义节假日).sql│ │ 2.5.4 计算工作时间的函数.sql│ │ │ └─其他│ 交叉表.sql│ 任意两个时间之间的星期几的次数-横.sql│ 任意两个时间之间的星期几的次数-纵.sql│ 复杂年月处理.sql│ 统计--交叉表+日期+优先.sql│ ├─第03章│ │ 3.2 各种字符串分拆处理函数.sql│ │ 3.3 各种字符串合并处理示例.sql│ │ 3.4.1 分段截取函数.sql│ │ 3.4.2 分段更新函数.sql│ │ 3.4.3 IP地址处理函数.sql│ │ 3.5.1 字符串比较函数.sql│ │ 3.5.2 字符串并集&交集处理示例.sql│ │ 3.5.3 字符串分拆并统计的处理示例.sql│ │ 3.5.5 字符串处理示例--列车车次查询.sql│ │ 3.6.2 字符串在编号查询中的应用示例及常见问题.sql│ │ 3.6.3 动态参数的存储过程示例.sql│ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql│ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql│ │ 3.7.4 text与image字段转换处理示例.sql│ │ 3.7.5 ntext字段的REPLACE处理示例.sql│ │ │ └─其他│ varbinary转换成字符串.sql│ 关键字搜索.sql│ 分解公式.sql│ 字符串分拆--格式化.sql│ 得到一个字符串在另一个字符串中出现的次数.sql│ 数字转换成十六进制.sql│ 比较第一与第二个字符串,是否有连续的5个字符相同.sql│ 生成查询的模糊匹配字符串.sql│ 简繁转换.sql│ 统计一个表中某个字符出现最多的字母.sql│ 非法字符串处理.sql│ ├─第04章│ │ 4.1.5 在各种处理中应用排序规则的示例.sql│ │ 4.2.1 排序规则在拼音处理中的应用.sql│ │ 4.2.2 排序规则在全角与半角处理中的应用.sql│ │ │ └─其他│ 生成GB2312汉字表.sql│ 生成GBK汉字表.sql│ 自动获取汉字笔画.sql│ ├─第05章│ │ 5.1.1 SET IDENTITY_INSERT 中的几个问题.sql│ │ 5.1.1 修改标识值的示例.sql│ │ 5.1.1 标识列与普通列互相转换的示例.sql│ │ 5.2.1 查表法按日期生成流水号的示例.sql│ │ 5.2.1 查表法生成流水号的示例.sql│ │ 5.2.2 使用编号表按日期生成流水号的示例.sql│ │ 5.2.2 使用编号表生成流水号的示例.sql│ │ 5.2.3 生成纯字母随机编号的示例(仅大小或者小写).sql│ │ 5.2.3 生成纯字母随机编号的示例(大小写混合).sql│ │ 5.2.3 生成纯数字随机编号的示例.sql│ │ 5.3.2 融合了补号处理的编号生成处理示例.sql│ │ 5.3.3 使用UPDATE进编号重排的处理示例.sql│ │ 5.3.3 使用临时表进编号重排的处理示例.sql│ │ 5.3.3 使用子查询进编号重排的处理示例.sql│ │ 5.3.3 名次查询的处理示例.sql│ │ 5.4.1 查询已用编号分布情况的示例(临时表法).sql│ │ 5.4.1 查询已用编号分布情况的示例(子查询法).sql│ │ 5.4.2 查询缺号分布情况的示例.sql│ │ 5.4.3 返回已用编号、缺号分布字符串的处理示例.sql│ │ 5.4.4 缺勤天数统计的处理示例.sql│ │ │ └─其他│ -补位法.sql│ 以另一个表的字段做默认值.sql│ 以另一表的字段生成编号.sql│ 关联部门流水号.sql│ 十六进制.sql│ 学号.sql│ 开票统计--涉及到连号处理.sql│ 新编号查询示例(分类查询).sql│ 新编号查询示例.sql│ 日期流水号.sql│ 材料流水号.sql│ 流水号.sql│ 箱编号连号处理.sql│ 类别自动生成编号示例.sql│ 自已做标识列的例子.sql│ 触发器自动维护已用&未用编号.sql│ 连续编号.sql│ 防止重复的示例.sql│ 项目编号=各项目独立流水号&各年不同.sql│ ├─第06章│ │ 6.1.1 NULL对IN的查询的影响及解决示例.sql│ │ 6.1.2 各种联接的使用示例.sql│ │ 6.1.2 多表联结导致记录重复的示例.sql│ │ 6.1.3 使用UNION实现库存报表的示例.sql│ │ 6.1.5 按指定上下限区间进数据统计的示例.sql│ │ 6.1.6 随机出题的示例.sql│ │ 6.2.1 ROLLUP实现的分级汇总示例(定义各汇总列标题).sql│ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序及汇总列标题处理).sql│ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序处理).sql│ │ 6.2.1 ROLLUP实现的分级汇总示例.sql│ │ 6.2.1 UNION ALL实现的分级汇总示例.sql│ │ 6.3.1 简单的交叉报表处理示例.sql│ │ 6.3.2 多列转换为的交叉报表处理示例.sql│ │ 6.3.3 值动态变化的交叉报表处理示例(转换多列).sql│ │ 6.3.3 值动态变化的交叉报表处理示例.sql│ │ 6.3.4 化解字符串不能超过8000的方法.sql│ │ 6.3.5 特殊的交叉报表处理示例.sql│ │ 6.4.1 库存明细帐处理示例(包含结存数).sql│ │ 6.4.1 库存明细帐处理示例.sql│ │ 6.4.2 同期及上期数据对比处理示例.sql│ │ 6.4.3 动态分组处理示例.sql│ │ 6.4.4 排榜处理示例.sql│ │ │ └─其他│ 交叉表--复杂名次.sql│ 交叉表-优先级处理.sql│ 交叉表分析.sql│ 分级汇总.sql│ 分组交叉表.sql│ 列转.sql│ 固定列报表.sql│ 复杂交叉表.sql│ 复杂交叉表1.sql│ 多栏显示.sql│ 日期+星期+时间.sql│ 格式化报表.sql│ 横转竖-1.sql│ 横转竖-字段名.sql│ 横转竖-生成字段名.sql│ 横转竖.sql│ 列互换的复杂交叉表.sql│ 限制列数的交叉表.sql│ ├─第07章│ │ 7.1 splitpage.asp│ │ 7.2.1 TOP n 实现的通用分页存储过程.sql│ │ 7.2.2 字符串缓存实现的通用分页存储过程.sql│ │ 7.2.3 临时表缓存实现的通用分页存储过程.sql│ │ 7.2.4 使用系统存储过程实现的通用分页存储过程.sql│ │ 7.3.1 实现随机分页的通用分页存储过程.sql│ │ 7.3.2 根据分类表实现的分页存储过程.sql│ │ │ └─其他│ sp_cursor.sql│ 基本方法.sql│ ├─第08章│ │ 8.1.2 树形数据分级汇总示例.sql│ │ 8.1.3 树形数据编号重排的通用存储过程.sql│ │ 8.1.3 树形数据编号重排示例.sql│ │ 8.1.4 实现编码规则调整处理的通用存储过程.sql│ │ 8.1.4 生成编码规则调整处理T-SQL语句的函数.sql│ │ 8.1.5 删除节点处理的通用存储过程.sql│ │ 8.1.5 移动节点处理的通用存储过程.sql│ │ 8.2.2 树形数据层次显示处理示例.sql│ │ 8.2.2 树形数据广度排序处理示例.sql│ │ 8.2.2 树形数据深度排序处理示例(模拟单编号法).sql│ │ 8.2.2 树形数据深度排序处理示例(递归法).sql│ │ 8.2.3 查找指定节点的所有子节点的示例函数.sql│ │ 8.2.4 查找指定节点的所有父节点的示例函数.sql│ │ 8.2.5 校验插入指定结点是否导致编码循环的示例函数.sql│ │ 8.2.5 校验表中数据是否有循环编码的通用存储过程.sql│ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql│ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例.sql│ │ 8.2.7 实现删除指定结点及所有子节点的处理触发器.sql│ │ 8.2.8 逐级汇总示例(循环逐级累计法).sql│ │ 8.2.8 逐级汇总示例(用户定义函数法).sql│ │ 8.3.1 产品配件清单查询示例.sql│ │ 8.3.2 最短乘车路线查询示例.sql│ │ │ └─其他│ xml菜单.sql│ 宝塔形数据的处理-1.sql│ 宝塔形数据的处理.sql│ 树形数据生成xml.sql│ ├─第09章│ │ 9.1.3 访问外部数据源方法总结.sql│ │ 9.5.1 二进制文件存取示例(T-SQL).sql│ │ 9.5.1 二进制文件存取示例(VB&VBA).vbs│ │ a.txt│ │ Schema.ini│ │ │ └─其他│ bcp-数据导入导出(全).sql│ bcp-数据导入导出-二进制文件.sql│ bcp-数据导出为文件.sql│ bcp表数据存为XML.sql│ SQL Server到Oracle连接服务器的实现.sql│ SQL Server到SQLBASE连接服务器的实现.sql│ SQL Server到SYBASE连接服务器的实现.sql│ sql导出mysql.sql│ textcopy实现文件存取.sql│ Vb程序实现文件存取.sql│ 导入文本文件时如何指定字段类型.sql│ 导出northwind中Employees的图像.sql│ 将某个目录上的Excel表,导入到数据库中.sql│ 数据导入导出基本方法.sql│ 用ASP上传&下载文件.sql
《精通SQ:结构化查询语言详解》全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle讲解,很有代表性。 全书共包括大小实例317个,突出了速学速查的特色。《精通SQ:结构化查询语言详解》内容丰富,讲解通俗易懂,具有很强的实用性和可操作性。 目录 第1章 数据库与SQL基础  1.1 数据库的基本概念  1.1.1 数据库的由来  1.1.2 数据库系统的概念  1.2 数据库系统的结构、组成及工作流程 1.2.1 数据库的体系结构  1.2.2 数据库系统的组成  1.2.3 数据库的工作流程  1.3 数据库的发展  1.3.1 第一代数据库  1.3.2 第二代数据库  1.3.3 新一代数据库技术的研究和发展  1.4 关系数据库  1.4.1 关系模型  1.4.2 Codd十二法则  1.4.3 范式  1.5 SQL语言基础  1.5.1 SQL的历史  1.5.2 SQL语言的组成 1.5.3 SQL语句的结构  1.5.4 SQL的优点  1.5.5 SQL的执  1.6 SQL环境  1.6.1 环境  1.6.2 SQL的层次结构  1.6.3 客户程序和服务程序系统  1.6.4 SQL环境中对象的命名规则  第2章 主要的关系数据库与SQL  2.1 SQL Server  2.1.1 SQL Server的结构  2.1.2 数据库访问标准化接口-ODBC  2.1.3 使用查询分析器执SQL语句  2.2 Transact-SQL  2.2.1 Transact-SQL 概述  2.2.2 Transact-SQL的主要组成  2.2.3 Transact-SQL的一些重要命令  2.3 Oracle数据库  2.3.1 Oracle数据库软件组成 2.3.2 Oracle数据库体系结构  2.3.3 Oracle数据库系统结构 2.3.4 使用SQL*Plus执SQL语句 2.4 PL/SQL简介  2.4.1 PL/SQL的特点  2.4.2 PL/SQL程序结构 第3章 创建、修改和删除表 3.1 表的基础知识  3.1.1 表的基本结构  3.1.2 表的种类  3.2 SQL数据类型  3.2.1 字符型数据 3.2.2 数字型数据  3.2.3 日期数据类型 3.2.4 二进制数据类型 3.2.5 文本和图形数据类型  3.2.6 自定义数据类型  3.3 表的创建(CREATE)  3.3.1 创建基本表  3.3.2 非空约束  3.3.3 DEFAULT指定缺省值  3.4 表的修改  3.4.1 增加新列 3.4.2 删除列  3.4.3 修改列  3.5 表的删除与重命名  3.5.1 重命名表  3.5.2 删除表  3.6 创建、删除数据库  3.6.1 数据库的创建  3.6.2 SQL Server中数据库的创建 3.6.3 删除数据库  第4章 索引与视图的创建 4.1 索引的基础知识 4.1.1 索引的概念  4.1.2 索引的结构  4.2 索引的创建与销毁  4.2.1 基本创建语法  4.2.2 本章实例用到的实例表 4.2.3 创建简单的非簇索引 4.2.4 多字段非簇索引的创建  4.2.5 使用UNIQUE关键字创建惟一索引  4.2.6 使用CLUSTERDE关键字创建簇索引 4.2.7 索引的销毁  4.2.8 使用索引的几点原则  4.3 视图的基础知识  4.3.1 视图简介  4.3.2 视图的优缺点  4.4 视图的创建与销毁  4.4.1 基本创建语法  4.4.2 创建简单的视图  4.4.3 利用视图简化表的复杂连接  4.4.4 利用视图简化复杂查询 4.4.5 视图的销毁  4.4.6 使用视图的几点原则  第5章 简单的查询  5.1 查询的基本结构  5.1.1 SELECT语句的结构  5.1.2 SELECT语句的执步骤  5.2 列的查询  5.2.1 本章用到的实例表  5.2.2 单列查询  5.2.3 使用DISTINCT去除重复信息  5.2.4 多列查询  5.2.5 查询所有的列 5.3 排序查询结果 5.3.1 单列排序  5.3.2 多列排序 5.3.3 采用序号进多列排序 5.3.4 反向排序  5.4 使用WHERE子句定义搜索条件查询  5.4.1 WHERE子句单条件查询 5.4.2 单值比较运算符 5.4.3 BETWEEN运算符范围筛选 5.4.4 NULL值的判断 第6章 复杂搜索条件查询  6.1 本章用到的实例表  6.2 组合查询条件  6.2.1 AND运算符  6.2.2 OR运算符  6.2.3 AND、OR运算符的组合使用  6.3 IN运算符  6.3.1 IN运算符的使用  6.3.2 IN运算符与OR运算符  6.4 NOT运算符 6.4.1 使用NOT运算符  6.4.2 NOT运算符与运算符  6.5 使用LIKE进模糊查询 6.5.1 LIKE运算符  6.5.2 “%”通配符 6.5.3 “_”通配符 6.5.4 “[]”通配符  6.5.5 使用ESCAPE定义转义符  第7章 连接符、数值运算与函数  7.1 本章实例用到的表 7.2 连接符 7.2.1 连接符的应用  7.2.2 使用别名 7.3 数值运算  7.3.1 数学运算符的种类 7.3.2 数学运算符的运用  7.3.3 使用CAST表达式转换数据类型  7.3.4 使用CASE表达式  7.4 函数  7.4.1 有关函数的说明  7.4.2 字符处理函数  7.4.3 算术运算函数  7.4.4 日期时间函数  7.4.5 CONVERT()函数转换日期、时间 第8章 聚合分析与分组  8.1 聚合分析的基本概念  8.1.1 聚合分析  8.1.2 聚合函数  8.2 聚合函数的应用  8.2.1 和函数-SUM()  8.2.2 计数函数-COUNT()  8.2.3 最大/最小值函数-MAX()/MIN()  8.2.4 均值函数-AVG()  8.2.5 聚合分析的重值处理  8.2.6 聚合函数的组合使用  8.3 组合查询  8.3.1 GROUP BY子句创建分组  8.3.2 GROUP BY子句根据多列组合  8.3.3 ROLLUP运算符和CUBE运算符  8.3.4 GROUP BY子句中的NULL值处理  8.3.5 HAVING子句  8.3.6 HAVING子句与WHERE子句  8.3.7 SELECT语句各查询子句总结  第9章 多表查询  9.1 本章用到的实例表  9.2 表的基本连接  9.2.1 连接表的目的 9.2.2 简单的二表连接 9.2.3 多表连接 9.2.4 使用表别名 9.2.5 采用JOIN关键字建立连接 9.3 表的连接类型  9.3.1 自连接  9.3.2 自然连接(NATURAL JOIN)  9.3.3 内连接(INNER JOIN) 9.3.4 外连接(OUTER JOIN)  9.3.5 交叉连接(CROSS JOIN)  9.4 UNION与UNION JOIN  9.4.1 关系的集合运算  9.4.2 UNION运算符  9.4.3 ORDER BY子句排序UNION运算结果  9.4.4 对多表进UNION运算  9.4.5 UNION JOIN 连接表  9.5 表连接的其他应用及注意问题  9.5.1 连接表进聚合运算  9.5.2 多表连接的综合运用  9.5.3 多表连接注意事项  第10章 子查询  10.1 创建和使用返回单值的子查询  10.1.1 在多表查询中使用子查询  10.1.2 在子查询中使用聚合函数  10.2 创建和使用返回多的子查询  10.2.1 IN子查询  10.2.2 IN子查询实现集合交和集合差运算 10.2.3 EXISTS子查询  10.2.4 EXISTS子查询实现两表交集  10.2.5 SOME/ALL子查询  10.2.6 UNIQUE子查询  10.3 相关子查询  10.3.1 使用IN引入相关子查询  10.3.2 比较运算符引入相关子查询 10.3.3 在HAVING子句中使用相关子查询  10.4 嵌套子查询  10.5 使用子查询创建视图  10.6 树查询 第11章 数据插入操作  11.1 插入单记录  11.1.1 基本语法  11.1.2 整插入  11.1.3 NULL值的插入 11.1.4 惟一值的插入  11.1.5 特定字段数据插入  11.1.6 通过视图插入 11.2 插入多记录 11.2.1 由VALUES关键字引入多数据插入  11.2.2 使用SELECT语句插入值 11.3 表中数据的复制  11.3.1 基本语法  11.3.2 应用实例  11.4 从外部数据源导入、导出数据  11.4.1 Access数据库数据的导出  11.4.2 Access数据库数据的导入  11.4.3 SQL Server数据库数据导出  11.4.4 SQL Server数据库数据导入  第12章 数据的更新和删除  12.1 更新表中的数据  12.1.1 UPDATE语句的基本语法 12.1.2 UPDATE语句更新列值  12.1.3 利用子查询更新多的值 12.1.4 依据外表值更新数据 12.1.5 分步更新表 12.2 删除表中的数据  12.2.1 DELETE语句基本语法  12.2.2 DELETE语句删除单数据  12.2.3 DELETE语句删除多数据  12.2.4 DELETE语句删除所有  12.2.5 TRUNCATE TABLE语句 12.3 通过视图更新表  12.3.1 可更新视图的约束  12.3.2 通过视图更新表数据  12.3.3 通过视图删除表数据  第13章 安全性控制  13.1 SQL安全模式  13.1.1 授权ID  13.1.2 SQL的安全对象和权限 13.1.3 授权图  13.2 角色管理  13.2.1 CREATE语句创建角色  13.2.2 DROP语句删除角色  13.2.3 GRANT语句授予角色  13.2.4 REVOKE语句取消角色  13.3 权限管理  13.3.1 GRANT语句授予权限  13.3.2 REVOKE语句取消权限 13.3.3 SELECT权限控制 13.3.4 INSERT权限控制  13.3.5 UPDATE权限控制 13.3.6 DELETE权限控制  13.4 SQL Server安全管理  13.4.1 SQL Server登录认证 13.4.2 SQL Server用户ID的管理 13.4.3 SQL Server权限管理  13.4.4 SQL Server角色管理  13.5 Oracle安全管理  13.5.1 Oracle中用户、资源、概要文件、模式的概念 13.5.2 Oracle中的用户管理  13.5.3 Oracle中的资源管理  13.5.4 Oracle中的权限管理 13.5.5 Oracle中的角色管理  第14章 完整性控制 14.1 完整性约束简介  14.1.1 数据的完整性  14.1.2 完整性约束的类型  14.2 与表有关的约束  14.2.1 列约束与表约束的创建  14.2.2 NOT NULL(非空)约束 14.2.3 UNIQUE(惟一)约束  14.2.4 PRIMARY KEY(主键)约束 14.2.5 FOREIGN KEY(外键)约束 14.2.6 CHECK(校验)约束 14.3 深入探讨外键与完整性检查  14.3.1 引用完整性检查  14.3.2 MATCH子句  14.3.3 更新、删除操作规则 14.4 域约束与断言 14.4.1 域与域约束 14.4.2 利用断言创建多表约束 14.5 SQL Server中的完整性控制  14.5.1 创建规则(Rule) 14.5.2 规则的绑定与松绑 14.5.3 创建缺省值(Default)  14.5.4 缺省值的绑定与松绑  第15章 存储过程与函数  15.1 SQL中的存储过程与函数  15.2 SQL Server 中的流控制语句  15.2.1 BEGIN...END语句 15.2.2 IF...ELSE语句  15.2.3 WHILE、BREAK和CONTINUE语句 15.2.4 DECLARE语句 15.2.5 GOTO label语句 15.2.6 RETURN语句  15.2.7 WAITFOR语句  15.2.8 PRINT语句  15.2.9 注释 15.3 SQL Server中的存储过程和函数  15.3.1 系统存储过程  15.3.2 使用CREATE PROCEDURE创建存储过程 15.3.3 使用EXECUTE语句调用存储过程  15.3.4 使用CREATE FUNCTION创建函数  15.3.5 使用Enterprise Manager创建存储过程和函数 15.3.6 修改和删除存储过程和函数  15.4 Oracle中的流控制语句  15.4.1 条件语句  15.4.2 循环语句  15.4.3 标号和GOTO  15.5 Oracle数据库中的存储过程  15.5.1 存储过程的创建与调用  15.5.2 Oracle存储过程和函数的管理 第16章 SQL触发器  16.1 触发器的基本概念  16.1.1 触发器简介  16.1.2 触发器执环境 16.2 SQL Server中的触发器  16.2.1 SQL Server触发器的种类  16.2.2 使用CREATE TRIGGER命令创建触发器 16.2.3 INSERT触发器  16.2.4 DELETE触发器  16.2.5 UPDATE触发器  16.2.6 INSTEAD OF触发器  16.2.7 嵌套触发器  16.2.8 递归触发器  16.2.9 SQL Server中触发器的管理  16.3 Oracle数据库中触发器的操作  16.3.1 Oracle触发器类型  16.3.2 触发器的创建 16.3.3 创建系统触发器  16.3.4 触发器的触发次序和触发谓词的使用  16.3.5 Oracle触发器的管理  第17章 SQL中游标的使用  17.1 SQL游标的基本概念  17.1.1 游标的概念  17.1.2 游标的作用及其应用 17.2 SQL游标的使用 17.2.1 使用DECLARE CURSOR语句创建游标  17.2.2 使用OPEN/CLOSE语句打开/关闭游标  17.2.3 使用FETCH语句检索数据  17.2.4 基于游标的定位DELETE语句  17.2.5 基于游标的定位UPDATE语句 17.3 SQL Server中游标的扩展  17.3.1 Transact_SQL扩展DECLARE CURSOR语法  17.3.2 @@CURSOR_ROWS全局变量确定游标的数  17.3.3 @@FETCH_STATUS全局变量检测FETCH操作的状态 17.3.4 游标的关闭与释放 17.3.5 游标变量  17.3.6 使用系统过程管理游标  17.4 Oracle中游标的使用  17.4.1 显式游标与隐式游标 17.4.2 游标的属性  17.4.3 %TYPE、%ROWTYPE定义记录变量  17.4.4 参数化游标  17.4.5 游标中的循环  17.4.6 游标变量 17.5 小结  第18章 事务控制与并发处理 18.1 SQL事务控制  18.1.1 事务控制的引入  18.1.2 事务的特性  18.1.3 SQL中与事务有关的语句  18.2 事务控制的具体实现 18.2.1 开始事务  18.2.2 SET CONSTRAINTS语句设置约束的延期执  18.2.3 终止事务  18.3 并发控制 18.3.1 并发操作的问题 18.3.2 事务隔离级别  18.3.3 SET TRANSACTION设置事务属性  18.4 SQL Server中的并发事务控制  18.4.1 锁的分类  18.4.2 SQL Server中表级锁的使用  18.4.3 设置隔离级别实现并发控制 18.4.4 死锁及其预防  18.5 Oracle中的并发事务控制  18.5.1 通过加锁避免写数据丢失 18.5.2 设置只读事务(READ ONLY)  18.5.3 Oracle中的隔离级别  第19章 嵌入式SQL  19.1 SQL的调用  19.1.1 直接调用SQL 19.1.2 嵌入式SQL  19.1.3 SQL调用层接口(CLI)  19.2 嵌入式SQL的使用  19.2.1 创建嵌入式SQL语句  19.2.2 SQL通信区  19.2.3 主变量  19.2.4 嵌入式SQL中使用游标  19.3 检索、操作SQL数据  19.3.1 不需要游标的SQL DML操作 19.3.2 使用游标的SQL DML操作 19.3.3 动态SQL技术  19.4 SQL Server中嵌入式SQL的编译运 19.4.1 嵌入式SQL代码  19.4.2 预编译文件  19.4.3 设置Visual C++ 6.0连接  19.4.4 编译运程序  19.5 Oracle中嵌入式SQL的编译运  19.5.1 嵌入式SQL代码 19.5.2 预编译文件  19.5.3 设置Visual C++ 6.0编译环境  19.5.4 编译运程序  附录A SQL保留字  附录B 常用的SQL命令  附录C 关于运环境的说明  C.1 SQL Server 2000  C.1.1 直接访问  C.1.2 从企业管理器访问 C.2 Oracle系统
第1章 数据库与sql基础 1 1.1 数据库的基本概念 1 1.1.1 数据库的由来 1 1.1.2 数据库系统的概念 3 1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 数据库的工作流程 5 1.3 数据库的发展 6 1.3.1 第一代数据库 7 1.3.2 第二代数据库 7 1.3.3 新一代数据库技术的研究和发展 7 1.4 关系数据库 8 1.4.1 关系模型 8 1.4.2 codd十二法则 9 1.4.3 范式 10 1.5 sql语言基础 11 1.5.1 sql的历史 11 1.5.2 sql语言的组成 12 1.5.3 sql语句的结构 13 .1.5.4 sql的优点 13 1.5.5 sql的执 14 1.6 sql环境 15 1.6.1 环境 15 1.6.2 sql的层次结构 15 1.6.3 客户程序和服务程序系统 17 1.6.4 sql环境中对象的命名规则 18 第2章 主要的关系数据库与sql 21 2.1 sql server 21 2.1.1 sql server的结构 21 2.1.2 数据库访问标准化接口—odbc 22 2.1.3 使用查询分析器执sql语句 22 2.2 transact-sql 24 2.2.1 transact-sql 概述 24 2.2.2 transact-sql的主要组成 25 2.2.3 transact-sql的一些重要命令 26 2.3 oracle数据库 29 2.3.1 oracle数据库软件组成 29 2.3.2 oracle数据库体系结构 29 2.3.3 oracle数据库系统结构 30 2.3.4 使用sql*plus执sql语句 31 2.4 pl/sql简介 32 2.4.1 pl/sql的特点 32 2.4.2 pl/sql程序结构 33 第3章 创建、修改和删除表 37 3.1 表的基础知识 37 3.1.1 表的基本结构 37 3.1.2 表的种类 38 3.2 sql数据类型 39 3.2.1 字符型数据 39 3.2.2 数字型数据 40 3.2.3 日期数据类型 41 3.2.4 二进制数据类型 43 3.2.5 文本和图形数据类型 44 3.2.6 自定义数据类型 44 3.3 表的创建(create) 46 3.3.1 创建基本表 46 3.3.2 非空约束 47 3.3.3 default指定缺省值 49 3.4 表的修改 50 3.4.1 增加新列 50 3.4.2 删除列 51 3.4.3 修改列 53 3.5 表的删除与重命名 55 3.5.1 重命名表 55 3.5.2 删除表 56 3.6 创建、删除数据库 56 3.6.1 数据库的创建 56 3.6.2 sql server中数据库的创建 57 3.6.3 删除数据库 58 第4章 索引与视图的创建 61 4.1 索引的基础知识 61 4.1.1 索引的概念 61 4.1.2 索引的结构 61 4.2 索引的创建与销毁 63 4.2.1 基本创建语法 63 4.2.2 本章实例用到的实例表 64 4.2.3 创建简单的非簇索引 66 4.2.4 多字段非簇索引的创建 69 4.2.5 使用unique关键字创建惟一索引 70 4.2.6 使用clusterde关键字创建簇索引 71 4.2.7 索引的销毁 73 4.2.8 使用索引的几点原则 73 4.3 视图的基础知识 74 4.3.1 视图简介 74 4.3.2 视图的优缺点 74 4.4 视图的创建与销毁 75 4.4.1 基本创建语法 75 4.4.2 创建简单的视图 75 4.4.3 利用视图简化表的复杂连接 78 4.4.4 利用视图简化复杂查询 79 4.4.5 视图的销毁 81 4.4.6 使用视图的几点原则 82 第5章 简单的查询 83 5.1 查询的基本结构 83 5.1.1 select语句的结构 83 5.1.2 select语句的执步骤 84 5.2 列的查询 84 5.2.1 本章用到的实例表 85 5.2.2 单列查询 85 5.2.3 使用distinct去除重复信息 86 5.2.4 多列查询 87 5.2.5 查询所有的列 88 5.3 排序查询结果 89 5.3.1 单列排序 89 5.3.2 多列排序 90 5.3.3 采用序号进多列排序 91 5.3.4 反向排序 92 5.4 使用where子句定义搜索条件查询 93 5.4.1 where子句单条件查询 93 5.4.2 单值比较运算符 94 5.4.3 between运算符范围筛选 96 5.4.4 null值的判断 97 第6章 复杂搜索条件查询 99 6.1 本章用到的实例表 99 6.2 组合查询条件 100 6.2.1 and运算符 100 6.2.2 or运算符 101 6.2.3 and、or运算符的组合使用 103 6.3 in运算符 104 6.3.1 in运算符的使用 104 6.3.2 in运算符与or运算符 105 6.4 not运算符 106 6.4.1 使用not运算符 106 6.4.2 not运算符与[]运算符 108 6.5 使用like进模糊查询 109 6.5.1 like运算符 109 6.5.2 “%”通配符 110 6.5.3 “_”通配符 112 6.5.4 “[]”通配符 114 6.5.5 使用escape定义转义符 115 第7章 连接符、数值运算与函数 117 7.1 本章实例用到的表 117 7.2 连接符 118 7.2.1 连接符的应用 118 7.2.2 使用别名 119 7.3 数值运算 121 7.3.1 数学运算符的种类 121 7.3.2 数学运算符的运用 122 7.3.3 使用cast表达式转换数据类型 123 7.3.4 使用case表达式 124 7.4 函数 126 7.4.1 有关函数的说明 126 7.4.2 字符处理函数 126 7.4.3 算术运算函数 131 7.4.4 日期时间函数 133 7.4.5 convert()函数转换日期、时间 136 第8章 聚合分析与分组 139 8.1 聚合分析的基本概念 139 8.1.1 聚合分析 139 8.1.2 聚合函数 139 8.2 聚合函数的应用 140 8.2.1 和函数—sum() 140 8.2.2 计数函数—count() 140 8.2.3 最大/最小值函数—max()/min() 143 8.2.4 均值函数—avg() 145 8.2.5 聚合分析的重值处理 147 8.2.6 聚合函数的组合使用 148 8.3 组合查询 148 8.3.1 group by子句创建分组 149 8.3.2 group by子句根据多列组合 150 8.3.3 rollup运算符和cube运算符 151 8.3.4 group by子句中的null值处理 153 8.3.5 having子句 153 8.3.6 having子句与where子句 154 8.3.7 select语句各查询子句总结 156 第9章 多表查询 157 9.1 本章用到的实例表 157 9.2 表的基本连接 158 9.2.1 连接表的目的 158 9.2.2 简单的二表连接 159 9.2.3 多表连接 161 9.2.4 使用表别名 162 9.2.5 采用join关键字建立连接 163 9.3 表的连接类型 163 9.3.1 自连接 163 9.3.2 自然连接(natural join) 166 9.3.3 内连接(inner join) 167 9.3.4 外连接(outer join) 170 9.3.5 交叉连接(cross join) 176 9.4 union与union join 177 9.4.1 关系的集合运算 177 9.4.2 union运算符 178 9.4.3 order by子句排序union运算结果 180 9.4.4 对多表进union运算 181 9.4.5 union join 连接表 183 9.5 表连接的其他应用及注意问题 183 9.5.1 连接表进聚合运算 183 9.5.2 多表连接的综合运用 185 9.5.3 多表连接注意事项 186 第10章 子查询 187 10.1 创建和使用返回单值的子查询 187 10.1.1 在多表查询中使用子查询 187 10.1.2 在子查询中使用聚合函数 188 10.2 创建和使用返回多的子查询 190 10.2.1 in子查询 190 10.2.2 in子查询实现集合交和集合差运算 191 10.2.3 exists子查询 192 10.2.4 exists子查询实现两表交集 194 10.2.5 some/all子查询 195 10.2.6 unique子查询 197 10.3 相关子查询 198 10.3.1 使用in引入相关子查询 198 10.3.2 比较运算符引入相关子查询 200 10.3.3 在having子句中使用相关子查询 201 10.4 嵌套子查询 203 10.5 使用子查询创建视图 204 10.6 树查询 205 第11章 数据插入操作 209 11.1 插入单记录 209 11.1.1 基本语法 209 11.1.2 整插入 209 11.1.3 null值的插入 211 11.1.4 惟一值的插入 212 11.1.5 特定字段数据插入 213 11.1.6 通过视图插入 214 11.2 插入多记录 216 11.2.1 由values关键字引入多数据插入 217 11.2.2 使用select语句插入值 217 11.3 表中数据的复制 220 11.3.1 基本语法 221 11.3.2 应用实例 221 11.4 从外部数据源导入、导出数据 222 11.4.1 access数据库数据的导出 223 11.4.2 access数据库数据的导入 225 11.4.3 sql server数据库数据导出 227 11.4.4 sql server数据库数据导入 230 第12章 数据的更新和删除 233 12.1 更新表中的数据 233 12.1.1 update语句的基本语法 233 12.1.2 update语句更新列值 234 12.1.3 利用子查询更新多的值 237 12.1.4 依据外表值更新数据 238 12.1.5 分步更新表 239 12.2 删除表中的数据 240 12.2.1 delete语句基本语法 240 12.2.2 delete语句删除单数据 240 12.2.3 delete语句删除多数据 241 12.2.4 delete语句删除所有 242 12.2.5 truncate table语句 242 12.3 通过视图更新表 243 12.3.1 可更新视图的约束 243 12.3.2 通过视图更新表数据 243 12.3.3 通过视图删除表数据 245 第13章 安全性控制 249 13.1 sql安全模式 249 13.1.1 授权id 249 13.1.2 sql的安全对象和权限 250 13.1.3 授权图 251 13.2 角色管理 251 13.2.1 create语句创建角色 252 13.2.2 drop语句删除角色 252 13.2.3 grant语句授予角色 252 13.2.4 revoke语句取消角色 253 13.3 权限管理 254 13.3.1 grant语句授予权限 254 13.3.2 revoke语句取消权限 255 13.3.3 select权限控制 256 13.3.4 insert权限控制 258 13.3.5 update权限控制 258 13.3.6 delete权限控制 259 13.4 sql server安全管理 260 13.4.1 sql server登录认证 260 13.4.2 sql server用户id的管理 261 13.4.3 sql server权限管理 263 13.4.4 sql server角色管理 266 13.5 oracle安全管理 268 13.5.1 oracle中用户、资源、概要文件、模式的概念 269 13.5.2 oracle中的用户管理 269 13.5.3 oracle中的资源管理 274 13.5.4 oracle中的权限管理 277 13.5.5 oracle中的角色管理 278 第14章 完整性控制 281 14.1 完整性约束简介 281 14.1.1 数据的完整性 281 14.1.2 完整性约束的类型 281 14.2 与表有关的约束 282 14.2.1 列约束与表约束的创建 282 14.2.2 not null(非空)约束 282 14.2.3 unique(惟一)约束 284 14.2.4 primary key(主键)约束 285 14.2.5 foreign key(外键)约束 287 14.2.6 check(校验)约束 289 14.3 深入探讨外键与完整性检查 290 14.3.1 引用完整性检查 290 14.3.2 match子句 291 14.3.3 更新、删除操作规则 293 14.4 域约束与断言 295 14.4.1 域与域约束 295 14.4.2 利用断言创建多表约束 296 14.5 sql server中的完整性控制 296 14.5.1 创建规则(rule) 297 14.5.2 规则的绑定与松绑 298 14.5.3 创建缺省值(default) 299 14.5.4 缺省值的绑定与松绑 300 第15章 存储过程与函数 303 15.1 sql中的存储过程与函数 303 15.2 sql server 中的流控制语句 304 15.2.1 begin…end语句 304 15.2.2 if…else语句 304 15.2.3 while、break和continue语句 304 15.2.4 declare语句 306 15.2.5 goto label语句 306 15.2.6 return语句 307 15.2.7 waitfor语句 307 15.2.8 print语句 308 15.2.9 注释 308 15.3 sql server中的存储过程和函数 308 15.3.1 系统存储过程 308 15.3.2 使用create procedure创建存储过程 309 15.3.3 使用execute语句调用存储过程 310 15.3.4 使用create function创建函数 312 15.3.5 使用enterprise manager创建存储过程和函数 315 15.3.6 修改和删除存储过程和函数 317 15.4 oracle中的流控制语句 319 15.4.1 条件语句 319 15.4.2 循环语句 320 15.4.3 标号和goto 322 15.5 oracle数据库中的存储过程 322 15.5.1 存储过程的创建与调用 322 15.5.2 oracle存储过程和函数的管理 324 第16章 sql触发器 325 16.1 触发器的基本概念 325 16.1.1 触发器简介 325 16.1.2 触发器执环境 325 16.2 sql server中的触发器 326 16.2.1 sql server触发器的种类 326 16.2.2 使用create trigger命令创建触发器 326 16.2.3 insert触发器 328 16.2.4 delete触发器 329 16.2.5 update触发器 330 16.2.6 instead of触发器 332 16.2.7 嵌套触发器 334 16.2.8 递归触发器 336 16.2.9 sql server中触发器的管理 338 16.3 oracle数据库中触发器的操作 340 16.3.1 oracle触发器类型 340 16.3.2 触发器的创建 341 16.3.3 创建系统触发器 342 16.3.4 触发器的触发次序和触发谓词的使用 343 16.3.5 oracle触发器的管理 346 第17章 sql中游标的使用 349 17.1 sql游标的基本概念 349 17.1.1 游标的概念 349 17.1.2 游标的作用及其应用 350 17.2 sql游标的使用 351 17.2.1 使用declare cursor语句创建游标 351 17.2.2 使用open/close语句打开/关闭游标 352 17.2.3 使用fetch语句检索数据 352 17.2.4 基于游标的定位delete语句 354 17.2.5 基于游标的定位update语句 356 17.3 sql server中游标的扩展 357 17.3.1 transact_sql扩展declare cursor语法 357 17.3.2 @@cursor_rows全局变量确定游标的数 359 17.3.3 @@fetch_status全局变量检测fetch操作的状态 360 17.3.4 游标的关闭与释放 361 17.3.5 游标变量 362 17.3.6 使用系统过程管理游标 363 17.4 oracle中游标的使用 365 17.4.1 显式游标与隐式游标 365 17.4.2 游标的属性 366 17.4.3 %type、%rowtype定义记录变量 367 17.4.4 参数化游标 368 17.4.5 游标中的循环 369 17.4.6 游标变量 371 17.5 小结 372 第18章 事务控制与并发处理 373 18.1 sql事务控制 373 18.1.1 事务控制的引入 373 18.1.2 事务的特性 373 18.1.3 sql中与事务有关的语句 374 18.2 事务控制的具体实现 376 18.2.1 开始事务 376 18.2.2 set constraints语句设置约束的延期执 377 18.2.3 终止事务 378 18.3 并发控制 380 18.3.1 并发操作的问题 381 18.3.2 事务隔离级别 382 18.3.3 set transaction设置事务属性 383 18.4 sql server中的并发事务控制 384 18.4.1 锁的分类 384 18.4.2 sql server中表级锁的使用 385 18.4.3 设置隔离级别实现并发控制 387 18.4.4 死锁及其预防 391 18.5 oracle中的并发事务控制 393 18.5.1 通过加锁避免写数据丢失 393 18.5.2 设置只读事务(read only) 394 18.5.3 oracle中的隔离级别 395 第19章 嵌入式sql 397 19.1 sql的调用 397 19.1.1 直接调用sql 397 19.1.2 嵌入式sql 398 19.1.3 sql调用层接口(cli) 399 19.2 嵌入式sql的使用 401 19.2.1 创建嵌入式sql语句 401 19.2.2 sql通信区 402 19.2.3 主变量 404 19.2.4 嵌入式sql中使用游标 406 19.3 检索、操作sql数据 407 19.3.1 不需要游标的sql dml操作 407 19.3.2 使用游标的sql dml操作 410 19.3.3 动态sql技术 412 19.4 sql server中嵌入式sql的编译运 413 19.4.1 嵌入式sql代码 413 19.4.2 预编译文件 415 19.4.3 设置visual c++ 6.0连接 417 19.4.4 编译运程序 419 19.5 oracle中嵌入式sql的编译运 420 19.5.1 嵌入式sql代码 420 19.5.2 预编译文件 421 19.5.3 设置visual c++ 6.0编译环境 423 19.5.4 编译运程序 424 附录a sql保留字 427 附录b 常用的sql命令 431 附录c 关于运环境的说明 435 c.1 sql server 2000 435 c.1.1 直接访问 435 c.1.2 从企业管理器访问 436 c.2 oracle系统 436

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧