declare @tb3 table (商品编号 nvarchar(10),批次号 nvarchar(10),库存数量 int,出库数量 int)
declare @tb1 table (商品编号 nvarchar(10),批次号 nvarchar(10),库存数量 int)
insert into @tb1 select '0001','090801',200
union all select '0001','090501',50
union all select '0002','090101',30
union all select '0002','090701',200
declare @tb2 table (商品编号 nvarchar(10),订货数量 int)
insert into @tb2 select '0001',60
union all select '0002',20
--declare @var int
declare c_sor cursor
for
select 商品编号,sum(订货数量)订货数量 from @tb2 group by 商品编号
declare @bh nvarchar(10), @dh int,@bh1 nvarchar(10),@pc nvarchar(10), @kc int
open c_sor
fetch next from c_sor into @bh,@dh
while @@fetch_status=0
begin
declare sor cursor for select * from @tb1 where 商品编号=@bh order by 批次号
open sor
fetch next from sor into @bh1,@pc,@kc
in ......
使用 SQL Server 事件探查器的方案
使用 SQL Server Profiler的第一步是确定监视 SQL Server 实例的原因。本主题讨论使用 SQL Server Profiler收集跟踪信息的典型方案。
使用 SQL Server Profiler的典型方案包括:
查找执行情况最差的查询。
例如,可以创建一个捕获与 TSQL 和 Stored Procedure 事件类(RPC:Completed 和 SQL:BatchCompleted)相关的事件的跟踪。在此跟踪中包括所有数据列,按 Duration 分组并指定事件准则。例如,如果指定事件的 Duration 必须至少为 10000 微秒,则可以从跟踪中清除持续时间较短的事件。可以根据需要增大 Duration 的最小值。如果希望一次仅监视一个数据库,请指定 Database ID 事件标准的值。
确定死锁的原因。
例如,可以创建一个捕获与 TSQL 和 Stored Procedure 事件类(RPC:Starting 和 SQL:BatchStarting)和 Locks 事件类(Deadlock graph、Lock:Deadlock 或 Lock:Deadlock Chain)相关的事件的跟踪。在此跟踪中包括所有数据列并按 Event Class 分组。如果希望一次仅监视一个数据库,请指定 Database ID 事件标准的值。如果指定 Deadlock graph 事件类,SQL Server Profiler将生成图形化表示形式的死锁。有关详细信息,请参阅 ......
01、SQL与ORACLE的内存分配
ORACLE的内存分配大部分是由INIT.ORA来决定的,一个数据库实例可以有N种分配方案,不同的应用(OLTP、OLAP)它的配置是有侧重的。 SQL概括起来说,只有两种内存分配方式:动态内存分配与静态内存分配,动态内存分配充许SQL自己调整需要的内存,静态内存分配限制了SQL对内存的使 用。
002、SQL与ORACLE的物理结构
总得讲,它们的物理结构很相似,SQL的数据库相当于ORACLE的模式(方案),SQL的文件组相当于ORACLE的表空间,作用都是均衡DISK I/O,SQL创建表时,可以指定表在不同的文件组,ORACLE则可以指定不同的表空间。
CREATE TABLE A001(ID DECIMAL(8,0)) ON [文件组]
--------------------------------------------------------------------------------------------
CREATE TABLE A001(ID NUMBER(8,0)) TABLESPACE 表空间
注:以后所有示例,先SQL,后ORACLE
003、SQL与ORACLE的日志模式
SQL对日志的控制有三种恢复模型:SIMPLE、FULL、BULK-LOGGED;ORACLE对日志的控制有二种模式: NOARCHIVELOG、ARCHIVELOG。SQL的SIMPLE相当于ORACLE的NOARCHIVELOG,FULL相当于 ARCHIVELOG,BULK-LOGGED相当于ORACLE大批量数据装载时 ......
01、SQL与ORACLE的内存分配
ORACLE的内存分配大部分是由INIT.ORA来决定的,一个数据库实例可以有N种分配方案,不同的应用(OLTP、OLAP)它的配置是有侧重的。 SQL概括起来说,只有两种内存分配方式:动态内存分配与静态内存分配,动态内存分配充许SQL自己调整需要的内存,静态内存分配限制了SQL对内存的使 用。
002、SQL与ORACLE的物理结构
总得讲,它们的物理结构很相似,SQL的数据库相当于ORACLE的模式(方案),SQL的文件组相当于ORACLE的表空间,作用都是均衡DISK I/O,SQL创建表时,可以指定表在不同的文件组,ORACLE则可以指定不同的表空间。
CREATE TABLE A001(ID DECIMAL(8,0)) ON [文件组]
--------------------------------------------------------------------------------------------
CREATE TABLE A001(ID NUMBER(8,0)) TABLESPACE 表空间
注:以后所有示例,先SQL,后ORACLE
003、SQL与ORACLE的日志模式
SQL对日志的控制有三种恢复模型:SIMPLE、FULL、BULK-LOGGED;ORACLE对日志的控制有二种模式: NOARCHIVELOG、ARCHIVELOG。SQL的SIMPLE相当于ORACLE的NOARCHIVELOG,FULL相当于 ARCHIVELOG,BULK-LOGGED相当于ORACLE大批量数据装载时 ......
写法一:
set xact_abort on
begin tran
DECLARE @SQL VARCHAR(99)
DECLARE CUR_FK CURSOR LOCAL FOR
SELECT 'alter table '+ OBJECT_NAME(FKEYID) + ' drop constraint ' + OBJECT_NAME(CONSTID) from SYSREFERENCES
--删除所有外键
OPEN CUR_FK
FETCH CUR_FK INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_FK INTO @SQL
END
CLOSE CUR_FK
DEALLOCATE CUR_FK
-- 删除所有表
DECLARE CUR_TAB CURSOR LOCAL FOR
SELECT 'DROP TABLE '+ NAME from SYSOBJECTS WHERE XTYPE='U' -- AND NAME LIKE 'xx%'
OPEN CUR_TAB
FETCH CUR_TAB INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_TAB INTO @SQL
END
CLOSE CUR_TAB
DEALLOCATE CUR_TAB
commit tran
写法二
DECLARE @SQL VARCHAR(99),@TBL VARCHAR(30),@FK VARCHAR(30)
DECLARE CUR_FK CURSOR LOCAL FOR
SELECT OBJECT_NAME(CONSTID),OBJECT_NAME(FKEYID) from SYSREFERENCES
--删除所有外键
OPEN CUR_FK
FETCH CUR_FK INTO @FK,@TBL
WHILE @@FETCH_STATUS =0
BEGIN
SELECT @SQL='ALTER TABLE '+@TBL+' DROP CONSTRAINT '+@FK
EXEC(@ ......
if exists(select * from master.dbo.sysdatabases where name = 's2723103005')
begin
drop database s2723103005
print '已删除数据库s2723103005'
end
create database s2723103005
on primary
(name=His_data,
filename = 'd:\database\his_data.mdf',
size=10,
maxsize = 1500,
filegrowth = 5
)
log on
(
name=His_log,
filename='d:\database\his_log.ldf',
size=5,
maxsize=500mb,
filegrowth = 5mb
) ......
20世纪80年代初,ANSI(American National Standard Institute) 数据库标准委员会开始制订相关关系语言的标准,但直到1986年,数据库标准委员会才推出第一个SQL语言标准SQL-86。随着数据库技术的发展,SQL标准也在不断进行扩展和修正,并且数据库标准委员会先后又推出SQL-89,SQL-92以及SQL-99标准。1979年,Relational Software公司(Oracle 前身)首先向市场推出SQL 执行工具,Oracle 完全遵从ANSI的SQL标准,并且将最新的SQL-99标准集成到Oracle 9i/Oracle 10g 数据库中。
SQL(Structured Query Language)是关系数据库的基本操作语言,它是应用程序与数据库进行交互操作的接口。它将数据查询(Data Query)、数据操作(Data Manipulation)、数据定义(Data Definition) 和数据控制(Data Control)功能集于一体,从而使得应用开发人员、数据库管理员、最终用户都可以通过SQL语言访问数据库,并执行相应操作。
1.SQL 语言特点:
a.SQL 语言采用集合操作方式,对数据库的处理是成组进行的,而不是一条一条处理。通过使用集合操作方式,可以加快数据的处理速度。
  ......