-- 说明: T-SQL 中没有"默认值对象"和"默认值约束"的区别, 而是统称为"默认值". 这里仅为了讨论方便.   
--      所谓"默认值对象", 指作为 CREATE DEFAULT 语句的一部分创建的默认值定义;   
--      所谓"默认值约束", 指作为 CREATE TABLE 或 ALTER TABLE 语句的一部分创建的默认值定义.   
-- 注意: 后续版本的 Microsoft SQL Server 将删除由 CREATE DEFAULT 语句创建的默认值定义, 应使用  
--      通过 ALTER TABLE 或 CREATE TABLE 的 DEFAULT 关键字创建的默认定义.   
  
-- 1. 创建"默认值对象"   
create default df_Test as 100;   
go   
  
-- 2. 创建测试表    
create table t_Tab1   
(  
    c1 smallint identity,   
    c2 smallint          null                         default 2, -- 作为 CREATE TABLE 语句的一部分创建匿名的"默认值约束"   
    c3 smallint          null,   
    c4 smallint          null constraint df_t_Tab1_c4 default 4, -- 作为 CREATE TABLE 语句的一部分创建命名的"默认值约束"   
    c5 smallint          null,   
    c6 smallint          null,   
    c7 smallint          null    
);   
  
create table t_Tab2   
(  
    c1 smallint identity,   
    c2 smallint null,   
    c3 smallint null   
);   
go  
  
-- 3. 作为 ALTER TABLE 语句的一部分创建匿名的和命名的"默认值约束"   
alter table t_Tab1 add constraint df_t_Tab1_c6 default 6 for c6;   
alter table t_Tab1 add                         default 7 for c7;   
go   
  
-- 4. 将"默认值对象" df_Test 绑定到列上   
--     ! 同一个"默认值对象"既可同时绑定到同一个表的不同列上, 也可同时绑定到不同表的列上.   
execute sp_bindefault df_Test, N't_Tab1.c3';   
execute sp_bindefault df_Test, N't_Tab1.c5';   
execute sp_bindefault df_Test, N't_Tab2.c2';   
-- 作为 CREATE TABLE 语句的一部分创建的命名的"默认值约束"不能绑定到其它表上.   
-- execute sp_bindefault df_t_Tab1_c6, N't_Tab2.c3';   
  
-- 作为 CREATE DEFAULT 语句的一部分创建的"默认值对象", 不能通过 ALTER TABLE 绑定到列上.   
-- alter table t_Tab1 add df_Test for c3;   
-- alter table t_Tab1 add df_Test default for c3;   
-- alter table t_Tab1 add constraint df_Test default for c3;   
go   
  
-- 5. 测试默认值   
insert into t_Tab1 default values;   
insert into t_Tab1 default values;   
insert into t_Tab1 default values;   
select * from t_Tab1;   
go   
   
insert into t_Tab2 default values;   
insert into t_Tab2 default values;   
insert into t_Tab2 default values;   
select * from t_Tab2;   
go    
  
-- 6. 通过 sys.default_constraints 目录视图, 检测不到作为 CREATE DEFAULT 语句的一部分创建的"默认值对象".   
SELECT sys.objects.name             表名,   
       sys.columns.column_id        列ID,   
       sys.columns.name             列名,   
       sys.default_constraints.name 默认值约束名   
FROM sys.default_constraints INNER JOIN sys.columns   
    ON sys.default_constraints.parent_object_id = sys.columns.object_id   
        AND sys.default_constraints.parent_column_id = sys.columns.column_id   
    INNER JOIN sys.objects   
    ON sys.columns.[object_id] = sys.objects.[object_id]   
WHERE sys.objects.name = N't_Tab1';   
go   
  
-- 7. "默认值对象", 命名的"默认值约束", 匿名的"默认值约束"都是"架构范围内的对象", 并且其 type 均是 D = DEFAULT(约束或独立).   
select name into t_Temp from sys.objects where type = 'D';   
select name as [架构范围内 type 为 D 的数据库对象名] from t_Temp;    
go   
  
-- 8. "默认值对象"是"默认值", 但不是"默认值约束"; 命名或匿名的"默认值约束"不是"默认值", 却是"默认值约束".   
select name                                                as [架构范围内 type 为 D 的数据库对象名],   
       OBJECTPROPERTY(OBJECT_ID(name, N'D'), N'IsDefault') as IsDefault   
from t_Temp;   
  
select name                                                    as [架构范围内 type 为 D 的数据库对象名],   
       OBJECTPROPERTY(OBJECT_ID(name, N'D'), N'IsDefaultCnst') as IsDefaultCnst   
from t_Temp;   
  
drop table t_Temp;   
go   
  
-- 9. 为列解除(删除)默认值绑定   
--     #1 不能对"表名"使用 sp_unbindefault 来解除其所有列上的默认值绑定   
-- execute sp_unbindefault N't_Tab1';   
--     #2 解被除绑定了"默认值对象"的列的正确方法   
execute sp_unbindefault N't_Tab1.c3';   
execute sp_unbindefault N't_Tab1.c5';   
execute sp_unbindefault N't_Tab2.c2';   
--     #3 对命名或匿名的"默认值约束", 不能使用 sp_unbindefault 的方法来解除绑定; 需要使用 ALTER TABLE DROP CONSTRAINT 来解除.   
-- execute sp_unbindefault N't_Tab1.c2';   
-- execute sp_unbindefault N't_Tab1.c4';   
go   
  
-- 10. 要删除用户定义的默认值(即, "默认值对象"), 必须首先解除它与列的绑定.   
--     这里 df_Test 与列绑定的解除已经在 9 中完成, 所以可以删除了.   
drop default df_Test;   
go   
  
-- 11. 删除绑定了默认值的列  
--     说明: 假如一个列上绑定了默认值, 则删除该列之前, 必须先解除其默认值绑定.   
--          如果绑定的是"默认值对象", 通过 sp_unbindefault 来解除;   
--          如果绑定的是"默认值约束"(命名或匿名的), 通过 ALTER TABLE DROP CONSTRAINT 来解除.   
  
-- 12. 删除表创建的数据库对象    
drop table t_Tab1;   
drop table t_Tab2;   
go   

执行结果:
已将默认值绑定到列。  
已将默认值绑定到列。  
已将默认值绑定到列。  
  
(1 行受影响)  
  
(1 行受影响)  
  
(1 行受影响)  
c1     c2     c3     c4     c5     c6     c7  
------ ------ ------ ------ ------ ------ ------  
1      2      100    4      100    6      7  
2      2      100    4      100    6      7  
3      2      100    4      100    6      7  
  
(3 行受影响)  
  
  
(1 行受影响)  
  
(1 行受影响)  
  
(1 行受影响)  
c1     c2     c3  
------ ------ ------  
1      100    NULL  
2      100    NULL  
3      100    NULL  
  
(3 行受影响)  
  
表名       列ID      列名        默认值约束名  
-------- -------- --------- --------------------------  
t_Tab1   2        c2        DF__t_Tab1__c2__3AD78439  
t_Tab1   4        c4        df_t_Tab1_c4  
t_Tab1   6        c6        df_t_Tab1_c6  
t_Tab1   7        c7        DF__t_Tab1__c7__3EA8151D  
  
(4 行受影响)  
  
  
(5 行受影响)  
架构范围内 type 为 D 的数据库对象名  
-------------------------------------  
df_Test  
DF__t_Tab1__c2__3AD78439  
df_t_Tab1_c4  
df_t_Tab1_c6  
DF__t_Tab1__c7__3EA8151D  
  
(5 行受影响)  
  
架构范围内 type 为 D 的数据库对象名       IsDefault  
------------------------------------- -----------  
df_Test                               1  
DF__t_Tab1__c2__3AD78439              0  
df_t_Tab1_c4                          0  
df_t_Tab1_c6                          0  
DF__t_Tab1__c7__3EA8151D              0  
  
(5 行受影响)  
  
架构范围内 type 为 D 的数据库对象名       IsDefaultCnst  
------------------------------------- -------------  
df_Test                               0  
DF__t_Tab1__c2__3AD78439              1  
df_t_Tab1_c4                          1  
df_t_Tab1_c6                          1  
DF__t_Tab1__c7__3EA8151D              1  
  
(5 行受影响)  
  
已解除了表列与其默认值之间的绑定。  
已解除了表列与其默认值之间的绑定。  
已解除了表列与其默认值之间的绑定。  

扩展名     英文解释                     文件内容HWez
BPG        Borland Project Group        工程项目包, 多个工程文件DPR的集合ja
DPR        Delphi Project               应用系统的工程文件&-kyJ
PAS        Pascal File                  单元文件,存放Pascal源代码%N[4+
DFM        Delphi form File             窗体界面文件, 同PAS文件同名,而且一一对应, 定义了窗体属性和构件的属性Bt"rl5
DOF        Delphi Option File           选项文件, 包括编译信息等, 是一个文本文件件,可以看看%Xu[r2
CFG        Project Configuration File   编译器可读的配置文件1D1Y
DSK        Desktop Setting File         保存工程文件的桌面摆布情况, 下次打开时可以恢复上次保存的桌面状态S?K
DSM                                     集成开发环境IDE的临时保存文件, 有时IDE总出错, 可以将这个文件删掉, 系统会重新生成l)dO
RES        Resource File                Windows 的资源文件, 可以定义光标, 位图, 图标资源, 可以使用ImageEditor编辑T
DCU        Delphi Compile Unit          编译后的单元文件, 程序连接时需要它,{
DLL        Dymanic-link libraries       Windows 动态链接库\~
EXE        Executable File              编译生成的可执行文件:bm!A@
DPK        Delphi Packge Source         包文件的源代码K(i
BPL        Borland Package library      包, 是一种特殊的DLL文件, 用于代码重用和减少可执行文件的长度

别名的位置:

hkey_local_machine-software-Microsoft–MSSQLSERVER-Client-ConnectTo

别名的格式:

名称:数据库别名名称
类型:REG_SZ
数值:
DBMSSOCN,主机地址,端口
比如:DBMSSOCN,192.168.1.111,8000

自动导入脚本:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
“SQL2005TCP”=”DBMSSOCN,192.168.1.111,8000”

另存为reg后缀的文件即可。

用户定义的数据类型要放在使用他的数据库里才有效,由于存储过程中建立的临时表会建立在tempdb里面,所以要先在tempdb里执行,再在mastrer里执行
查看用户定义的数据类型:

sql2005: select * from sys.types where is_user_defined=1
sql2000:select * from systypes where xtype<>xusertype

自定义数据类型
建立在SQL server系统数据类型基础上的,需要指定该类型的名称,建立在其上的系统数据类型及是否充许为空。
方法:利用系统存储过程:sp_addtype
语法:sp_addtype type, [ system_data_type ] [ ,’nulltype’ ]
注:

1 .type是用户定义数据类型的名称。数据类型名称必须遵循标识符规则,并且在每个数据库中必须是唯一的。
2 .system_data_type是SQL server提供的数据类型,用户定义的数据类型即基于该类型。
3 . ‘ nulltype ‘ :指定必须如何处理null值。设置null默认, not null或nonull

例1:自定义数据类型taihang
exec sp_addtype taihang,smllint, ‘ not null ‘
例2:删除自定义数据类型taihang
exec sp_droptype taihang

–创建用户定义类型方法一:
CREATE TYPE SSN
FROM varchar(11) NOT NULL ;
–删除用户定义类型
drop type SSN

–定义两个用户定义类型方法二:
exec sp_addtype iq, ‘float’, ‘null’
exec sp_addtype shoesize, ‘float’,’null’

–指定约束条件
create rule iq_range as @range between 1 and 200
create rule shoesize_range as @range between 1 and 20

–绑定约束类型
exec sp_bindrule ‘iq_range’,’iq’
exec sp_bindrule ‘shoesize_range’,’shoesize’

–删除用户定义类型
exec sp_droptype iq
exec sp_droptype shoesize

TGifImage类可以轻松的操作gif文件,不仅能动态显示,也可以分成不同的帧,设置透明度,设置播放速度等等。

uses Gifimage;
var  FGif :TGIFImage;
try
      FResStream := TResourceStream.Create(HInstance, 'LoadingGif', 'GIFTYPE');
      if not assigned(FGif) then
            FGif := TGifimage.Create;
      FGif.LoadFromStream(FResStream);
//上面是放在资源文件中的加载方法,如果直接加载文件,请这样FGif.LoadFromFile('d:\abc.gif');
      FGif.Paint(imgGif.Canvas,imgGif.ClientRect,[goTransparent,goDither,goAsync,goLoop,goAnimate,goDirectDraw]);

    finally
      FResStream.Free;
      if assigned(FGif) then
       FGif.PaintStop;
      FGif.Destroy;
    end

下载:gifimaged6