sqlserver 数据类型分类

1.   数据类型分类

1.1. 整型

1.1.1.    概述

SQL Server 2000中整型按照数据范围从小到大分为: bit, tinyint, smallint, int, bigint

1.1.2.    详细描述

数据类型

取值范围

描述

备注

bit

0, 1, NULL

1. 不能对bit类型建立索引

2. bit类型最多占用1个字节。

SQL server会优化bit类型存储,如果一个表中有不多于 8 个的 bit 列,这些列将作为一个字节存储。如果表中有 9 16 bit 列,这些列将作为两个字节存储。更多列的情况依此类推。

tinyint

0 255 的整型数据。

占用1个字节

适合于做一些状态记录

smallint

-3276832767之间的整数。

占用2个字节

适合于做一些状态记录以及小的数据记录。

对应于Java中的short类型,但在SMP的实际使用中将其映射为Integer类型

int

-2^31 (-2,147,483,648) 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。

占用4个字节

对应于Java中的Integer类型。可以保存大多数的数字

bigint

-2^63 (-9223372036854775808) 2^63-1 (9223372036854775807) 的整型数据(所有数字)。

占用8个字节

对应于Java中的Long型数据。

1.1.3.    小结

SQL Server2000 中最常使用的是int类型,tinyintsmallint在计算时如果发生溢出,会自动转换成范围更大的类型进行计算,但int不会隐式转换为bigint类型。

 

1.1.4.    示例

declare @numInt   int

declare @numTinyInt    tinyint

declare @numSmallint   smallint

 

set @numInt = 2147483647

set @numTinyInt = 255

set @numSmallint = 32767

 

 

print @numInt + 1 -- 出现溢出错误

print @numTinyInt + 1

print @numSmallint + 1

 

1.2. 精确浮点型

1.2.1.    概述

浮点类型有两种,一种是decimal,一种是numeric

1.2.2.    详细描述

数据类型

取值范围

描述

备注

decimal[(p[, s])]

使用最大精度时,有效值从 - 10^38 +1 10^38 - 1

p(精度):小数点左边和右边能存储十进制数字的最大个数。最大为38

s(小数位数): 小数点右边能存储十进制数字的个数。

ps之间的关系:

0<=s<=p<=38

两者完全一样,可以互相赋值,但如果精度或小数位数不同,会丢失精度。

numeric[(p[, s])]

 

decimal数据类型的大小和精度关系如下:

 

精度

存储字节数

1 - 9

5

10-19

9

20-28

13

29-38

17

 

 

1.2.3.    示例

declare @numDec  decimal(3, 2)

declare @numNum numeric(3, 1)

 

set @numDec = 1.5

set @numNum = @numDec

 

-- 完全一致

print @numNum

 

 

set @numDec = 1.55

set @numNum = @numDec

 

-- 丢失精度

print @numNum

 

 

1.3.    货币类型

1.3.1.    概述

用来表示金融或货币的数据类型,有smallmoneymoney两种。

1.3.2.    详细描述

数据类型

取值范围

描述

备注

smallmoney

-214,748.3648 +214.748,3647

4个字节

精确到货币单位的千分之十。

money

货币数据值介于 -2^63 (-922,337,203,685,477.5808) 2^63 - 1 (+922,337,203,685,477.5807) 之间。

8个字节

精确到货币单位的千分之十。

1.3.3.    小结

在使用中货币类型完全可以使用精确浮点类型代替,可能在一些特殊的应用程序中可以用到,大部分情况下使用精确浮点类型扩展性更好些。

1.4.    近似浮点型

1.4.1.    概述

用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示,但可以表述的数据范围极大。

1.4.2.    详细描述

数据类型

取值范围

描述

备注

float[(n)]

- 1.79E + 308 1.79E + 308 之间的浮点数字数据。

n表示使用科学记数法时尾数的位数,同时指示其精度和存储大小。n的取值范围是053

double表示float(53)

real

-3.40E + 38 3.40E + 38 之间的浮点数字数据。

4字节.

SQL Server 中,real 的同义词为 float(24)

 

占用空间大小:

 

n 所在范围

精度

存储大小

1-24

7 位数

4 字节

25-53

15 位数

8 字节

 

1.4.3.    两种浮点类型之间的比较

 

精确浮点类型

近似浮点类型

表示方式

每一个十进制位都表示一个精确的数字,不需要近似

当需要表示的数字超过限制后,会对尾数进行四舍五入

精度

完全精确

在一定范围内可以精确标识,超出范围后会发生舍入

表示范围

最多只有38

可以表示数量级为10^302数量级的数据

1.5.    日期和时间

1.5.1.    概述

用来保存日期和时间,有datetimesmalldatetime两种。

1.5.2.    详细描述

数据类型

取值范围

描述

备注

datetime

1753 1 1 日到 9999 12 31 日的日期和时间数据. 精确度为百分之三秒(等于 3.33 毫秒或 0.00333 秒)。

两个4字节组成datetime的值,其中4字节保存日期值,另外4个字节保存时间值。

一个datetime占用8个字节

Microsoft® SQL Server?拒绝所有其不能识别为 1753 年到 9999 年间的日期的值。

smalldatetime

1900 1 1 日到 2079 6 6 日的日期和时间数据精确到分钟。29.998 秒或更低的 smalldatetime 值向下舍入为最接近的分钟,29.999 秒或更高的 smalldatetime 值向上舍入为最接近的分钟。

两个2字节组成smalldatetime的值,其中2个字节保存日期值,2个字节保存时间值。

一个smalldatetime占用4个字节。

 

 

1.5.3.    示例

时间日期类型舍入示例:

 

-- 返回 12:35

SELECT CAST('2000-05-08 12:35:29.998' AS smalldatetime)

GO

-- 返回 12:36

SELECT CAST('2000-05-08 12:35:29.999' AS smalldatetime)

GO

 

-- 1998-01-02 00:00:00.000

select cast('1998-1-1 23:59:59.999' as datetime)

 

-- 1998-01-01 23:59:59.997

select cast('1998-1-1 23:59:59.995' as datetime)

select cast('1998-1-1 23:59:59.996' as datetime)

select cast('1998-1-1 23:59:59.997' as datetime)

select cast('1998-1-1 23:59:59.998' as datetime)

 

-- 1998-01-01 23:59:59.993

select cast('1998-1-1 23:59:59.992' as datetime)

select cast('1998-1-1 23:59:59.993' as datetime)

select cast('1998-1-1 23:59:59.994' as datetime)

 

-- 1998-01-01 23:59:59.990

select cast('1998-1-1 23:59:59.990' as datetime)

select cast('1998-1-1 23:59:59.991' as datetime)

 

1.5.4.    小结

一般情况下使用datetime值,因为smalldatetime精度差而且数据范围小,而且只能保存2076年以前的数据。

1.6.    字符串

1.6.1.    概述

SQL Server 2000中,字符串分为两种,一种是ASCII字符串,另一种是Unicode字符串。

其中ASCII字符串使用三种数据类型表示,分别是char, varchar, text三种类型,而Unicode字符串使用nchar, nvarchar, ntext三种类型表示。

1.6.2.    详细描述

数据类型

描述

char[(n)]

长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 8,000 之间的数值。存储大小为 n 个字节。

在定义数据时如果没有指定n,则n默认为1

cast时如果没有指定n,则n默认为30

varchar[(n)]

长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。

在定义数据时如果没有指定n,则n默认为1

cast时如果没有指定n,则n默认为30

text

服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。

nchar

包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 4,000 之间。存储大小为 n 字节的两倍。

在定义数据时如果没有指定n,则n默认为1

cast时如果没有指定n,则n默认为30

nvarchar

包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。

在定义数据时如果没有指定n,则n默认为1

cast时如果没有指定n,则n默认为30

ntext

可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。

1.6.3.    小结

在实际使用中ASCII字符串可以根据当前字符串中的每一个字符是否能用一个字节表示来决定实际使用的字节数,而Unicode字符串不判断输入字符串中的每一个字节,将所有字符都按照两个字节处理。

1.6.4.    Q&A

1.       什么时候使用变长字符串,什么时候使用定长字符串?

当存储数据长度相差很大时,应该使用变长的字符,否则应该使用定长数据。如果需要在字符列中定义索引,最好使用定长数据,因为定长数据的索引效率要高于变长数据。

2.       为什么需要textntext数据类型?为什么char, varchar, ncharnvarchar会有8000个字节的限制?

SQL Server 2000中,所有数据是保存在数据页中的,每一个数据页的大小是8K,每一个数据必须保存表中的至少一行数据,每一行的数据不能跨页保存,所以char, varchar, ncharnvarchar四种字符串的最大长度都小于8K字节。如果需要保存8K以上的内容,就需要将这部分的字符串分离到数据页之外独立保存,于是textntext数据类型就诞生了。如果在SQL Server 2000 中定义textntext类型数据,插入时默认将数据保存到一个文本页中,这个页里面专门用来存储ntext, textimage类型数据,在保存行的数据页中只保留一个指针,用来指向实际的数据。

3.       对于JDBC来说text以及ntext类型在使用上有什么区别?

JDBC的使用者来说,textntext与其他字符串类型没有任何区别,对于JDBC的开发者来说,需要考虑数据缓冲区和分块传输的情况。

1.7.    二进制类型

1.7.1.    概述

SQL Server 2000中可以定义专门用来保存二进制数据的数据类型,分为三种:binaryvarbinaryimage

1.7.2.    详细描述

数据类型

描述

binary[(n)]

固定长度的 n 个字节二进制数据。N 必须从 1 到 8,000。存储空间大小为 n+4 字节。

varbinary[(n)]

n 个字节变长二进制数据。n 必须从 1 到 8,000。存储空间大小为实际输入数据长度 +4 个字节,而不是 n 个字节。输入的数据长度可能为 0 字节。在 SQL-92 中 varbinary 的同义词为 binary varying。

image

可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间。

 

1.7.3.    小结

1.         从二进制类型占用空间可以看出,二进制类型在SQL Server 2000 的页文件中分为两部分保存,有4个字节保存数据长度,剩余部分是数据内容。

2.         如果定义数据时没有指定n,默认为1cast时没有指定n,默认为30image的存储方式和textntext类型一致。

1.7.4.    Q&A

1.         如何使用JDBC访问binaryvarbinary以及image类型的数据?

和其他类型完全一致。

1.8.    其他数据类型

除了以上描述的几种数据类型之外,SQL Server 2000中还有几种特殊的数据类型。

1.8.1.    cursor:游标类型

游标类型,可以定义为变量或存储过程的OUTPUT参数,但不能定义为表或视图中的列。

使用游标需要经过定义,打开,使用,关闭,销毁五个过程,对于同一个SQL Server 连接来说,游标属于全局资源,如果定义后不销毁或没关闭,容易造成内存泄漏。

 

-- 定义游标

declare hiRuleName_cursor cursor for

  select hiRuleName from T_HI_RULE

 

-- 打开游标

open hiRuleName_cursor

 

fetch next from hiRuleName_cursor

 

declare @hiRuleName    varchar(32)

fetch next from hiRuleName_cursor into @hiRuleName

select @hiRuleName

 

-- 关闭游标

close hiRuleName_cursor

 

-- 删除游标

deallocate hiRuleName_cursor

 

1.8.2.    sql_variant:变体类型

可以用来保存SQL Server中的任何类型数据(textntextimagetimestamp sql_variant 除外)。可以用在表或视图的列,局部变量以及存储过程或函数中。

在使用时需要首先转换成相应的类型,类似Java中的Object类。

 

SQL server 2000中使用sql_varaint类型:

 

-- 创建临时表

create table #t(

       value       sql_variant

)

 

-- 在表中插入不同类型的数据

insert into #t(value) values(123)

insert into #t(value) values(1.5)

insert into #t(value) values('feawfe')

 

-- 查询

select * from #t

 

-- 将其中任意一行修改为另一种数据类型

update #t set value='111' where value=123

 

-- 查询

select * from #t

 

-- 删除表

drop table #t

 

 

JDBC中如何使用sql_variant类型?

和其他类型完全一致。

 

1.8.3.    table:表格类型

以表格的方式保存计算结果便于后续处理。

使用表格的数据类型不但可以返回二维数组,而且返回值也可以象一张真实的表一样拥有列类型,主键,唯一性约束,CHECK约束,默认值等。

table类型和临时表相比,有以下几个优点:

l         table变量是局部变量,有明确的作用域,超过作用域变量自动清除。

l         在存储过程中使用table变量,不需要重新编译。

l         涉及table变量更新的事务只在table变量更新期间存在,减少table变量对锁定和记录资源的需求。

 

使用table类型局部变量:

 

declare @tb    table(

       c1 bigint primary key , -- 定义主键

       c2 varchar(32) not null unique, -- 定义唯一非空列

       c3 int check(c3 < 5 and  c3 > 0) -- 定义check约束

)

 

-- 插入时没有违反约束

insert into @tb(c1, c2, c3) values(1, '123', 3)

select * from @tb

 

-- 违反主键唯一性约束

insert into @tb(c1, c2, c3) values(1, '123', 3)

 

-- 违反c2非空约束

insert into @tb(c1, c2, c3) values(2, null, 3)

 

-- 违反c3 check约束

insert into @tb(c1, c2, c3) values(2, '123', 8)

 

1.8.4.    timestamp:时间戳

自动生成的二进制数,确保这些数据在数据库中是唯一的。占用8个字节。

时间戳用于表示 SQL Server 在一行上的活动顺序,按二进制格式以递增的数字来表示。当表中的行发生变动时,用从 @@DBTS 函数获得的当前数据库的时间戮值来更新时间戮。timestamp 数据与插入或修改数据的日期和时间无关。若要自动记录表中数据更改的时间,使用 datetime smalldatetime 数据类型记录事件或触发器。

创建表时可以不为timestamp类型指定列名,SQL Server 2000 会自动生成一个列名。

一个表只能有一个timestamp列,每次插入或更新包含timestamp列的行时,时间戳列会自动更新。

 

-- 创建临时表

create table #t(

       value       varchar(32),

       timestamp

)

 

-- 查看当前时间戳

select @@DBTS

 

insert into #t(value) values('aaa')

insert into #t(value) values('bbb')

insert into #t(value) values('ccc')

 

select * from #t

 

-- 更新

update #t set value='bbb'

 

select * from #t

 

drop table #t

 

1.8.5.    uniqueidentifier:(全局统一标识符)

一个36字节的十六进制字符串,可以作为表的主键。

一般使用newid()方法随机生成。

2.   自定义数据类型

2.1. 概述

在SQL Server 2000 中允许用户自定义数据类型,定义自定义数据类型时,需要提供以下三个参数:

l         名称

l         数据类型

l         为空性

如果用户自定义数据类型在module数据库中创建,将作为全局的数据类型出现,在其他的所有数据库中都可见,如果在其他数据库中定义,只在相应的数据库中看到。

2.2.    详细描述

创建用户自定义数据类型,使用系统存储过程sp_addtype,删除用户自定义数据类型,使用系统存储过程sp_droptype

SQL Server 2000 中大多数数据类型都可以用来创建新的数据类型(除了cursortabletimestamp之外)

2.3. 示例

EXEC sp_addtype telephone, 'varchar(32)', 'NOT NULL'

exec sp_droptype telephone

2.4. 小结

使用自定义数据类型,可以在开发的初期形成一套开发规范,所有人都使用自定义数据类型进行数据库定义,不容易出现名称类型或长度不一致的情况。

3.            数据类型之间的转换

3.1. 概述

数据类型的转换分为隐式转换和显示转换两种。

l         隐式转换不可见,系统自动进行。

l         显示转换使用castconvert函数进行。

3.2. cast和convert函数

两个函数都是用来显示转换数据类型的,其中cast是遵循SQL92标准,大多数时候已经足够,convert函数在日期转换时有用,可以指定日期格式。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第 2 章 日期处理 23 2.1 日期类型概述 23 2.2 日期处理函数 25 2.2.1 日期增减函数 25 2.2.2 日期信息获取函数 26 2.2.3 日期差值计算函数 27 2.2.4 其他日期处理相关函数 27 2.3 日期选项设置 29 2.3.1 default language选项 30 2.3.2 SET DATEFIRST 31 2.3.3 SET DATEFORMAT 31 2.3.4 SET LANGUAGE 33 2.4 日期格式化与日期推算处理 34 2.4.1 日期格式化处理 34 2.4.2 日期推算处理 35 2.4.3 日期加减处理 38 2.5 日期处理实例 40 2.5.1 生日处理 40 2.5.2 生成日期列表 42 2.5.3 工作日处理 46 2.5.4 工作时间计算 49 2.6 日期处理疑难解答 51 2.6.1 日期处理中常犯的错误 51 2.6.2 常见的低效率日期处理方法 52 2.6.3 日期与数字 53 第 3 章 字符处理 55 3.1 字符类型概述 55 3.2 字符串分拆 56 3.2.1 循环截取法 57 3.2.2 动态Transact-SQL语句法 57 3.2.3 辅助表法 59 3.2.4 分拆数据到列 61 3.2.5 分拆数字数据 62 3.2.6 分拆短信数据 63 3.3 字符串合并 64 3.3.1 游标合并法 65 3.3.2 SELECT语句合并法 66 3.3.3 临时表合并法 68 3.3.4 固定行合并法 69 3.4 其他字符串处理要求 70 3.4.1 分段截取 70 3.4.2 分段更新 72 3.4.3 IP地址处理 72 3.5 字符串分拆与合并处理应用实例 74 3.5.1 字符串比较 74 3.5.2 字符串交集/并集 75 3.5.3 分拆字符串并统计 78 3.5.4 借用字符串实现无规律排序 82 3.5.5 列车车次查询 82 3.6 字符串在动态Transact-SQL语句中的应用 85 3.6.1 动态Transact-SQL语句概述 85 3.6.2 字符串在编号查询中的使用 87 3.6.3 动态参数存储过程 90 3.6.4 动态Transact-SQL语句中常见问题 92 3.7 text与ntext字段处理 96 3.7.1 text与ntext数据的存储 96 3.7.2 管理text与ntext数据 97 3.7.3 text与ntext字段的复制和合并 99 3.7.4 text与image字段转换 101 3.7.5 ntext字段的REPLACE处理 103 第 4 章 排序规则 107 4.1 字符存储编码与排序规则 107 4.1.1 字符数据的存储编码 107 4.1.2 UNICODE 108 4.1.3 排序规则 109 4.1.4 排序规则比较和排列规则 111 4.1.5 使用排序规则 112 4.1.6 如何选择字符字段类型 116 4.2 排序规则应用 117 4.2.1 拼音处理 117 4.2.2 全角与半角字符处理 120 第 5 章 编号处理 123 5.1 自动编号 123 5.1.1 IDENTITY 123 5.1.2 ROWGUIDCOL 129 5.2 手工编号 131 5.2.1 查表法 131 5.2.2 独立编号表法 135 5.2.3 随机编号 139 5.3 缺号与补号 143 5.3.1 检查缺号 143 5.3.2 补号处理 143 5.3.3 编号重排 146 5.4 编号查询 150 5.4.1 已用编号分布查询 150 5.4.2 缺号分布查询 151 5.4.3 生成已用编号和缺号分布字符串 152 5.4.4 缺勤天数统计 155 第 6 章 数据统计与汇总 159 6.1 基本查询 159 6.1.1 空(NULL)值对查询的影响 159 6.1.2 联接 161 6.1.3 UNION与UNION ALL 165 6.1.4 数据填充查询 167 6.1.5 上限与下限区间统计 169 6.1.6 随机记录查询 170 6.2 分级汇总 173 6.2.1 实现分级汇总处理 173 6.2.2 分级汇总结果的过滤 176 6.2.3 分级汇总结果显示格式处理 177 6.2.4 分级汇总结果的排序处理 179 6.3 交叉数据报表 181 6.3.1 实现原理 181 6.3.2 多列转置 184 6.3.3 动态列 185 6.3.4 动态列中的字符溢出处理 188 6.3.5 特殊的交叉报表 191 6.4 典型数据统计案例 193 6.4.1 库存明细账查询 193 6.4.2 同期及上期数据对比 197 6.4.3 动态分组统计 199 6.4.4 销售排行榜 200 第 7 章 分页处理 205 7.1 应用程序中的分页处理 205 7.2 数据库中的分页处理 207 7.2.1 使用TOP N实现分页 207 7.2.2 使用字符串 211 7.2.3 使用临时表 213 7.2.4 使用SQL Server的系统存储过程处理分页 216 7.3 特殊要求的分页处理 217 7.3.1 随机显示的分页处理 217 7.3.2 分类数据的分页处理 221 第 8 章 树形数据处理 223 8.1 单编号处理法 223 8.1.1 方法概述 223 8.1.2 逐级汇总 225 8.1.3 编码重排 226 8.1.4 调整编码规则 229 8.1.5 调整编码隶属关系 233 8.2 双编号处理法 238 8.2.1 方法概述 239 8.2.2 树形数据排序 240 8.2.3 查找子节点 244 8.2.4 查找父节点 245 8.2.5 编码校验 246 8.2.6 节点复制 249 8.2.7 节点删除 251 8.2.8 逐级汇总 253 8.3 树形数据的扩展形式 256 8.3.1 产品配件清单 256 8.3.2 公交车乘车线路查询 258 第 9 章 数据导入与导出 261 9.1 访问外部数据 261 9.1.1 链接服务器 261 9.1.2 OPENROWSET与OPENDATASOURCE 268 9.1.3 外部数据访问方法总结 270 9.2 文本文件的导入与导出 274 9.2.1 查询文本文件内容 274 9.2.2 BCP与BULK INSERT 277 9.3 导入与导出中的常见问题 285 9.3.1 访问外部数据的注意事项 285 9.3.2 使用BCP或者BULK INSERT时的注意事项 286 9.3.3 外部数据文件位置及文件访问权限问题 287 9.4 在客户端实现SQL Server数据导入与导出处理 288 9.4.1 在Access数据库中实现与SQL Server之间的数据交换 288 9.4.2 实现客户端其他OLE DB数据源与SQL Server之间的数据交换 289 9.4.3 在客户端实现SQL Server数据导入与导出处理的一些说明 289 9.5 在数据库中存取文件 290 9.5.1 SQL Server中的文件存取方法 290 9.5.2 程序中的文件存取处理方法 292 第 10 章 作业 295 10.1 作业概述 295 10.1.1 定义作业 295 10.1.2 使用系统存储过程定义作业的常用模板 300 10.2 作业的应用 303 10.2.1 定时启用(或者停用)数据库 303 10.2.2 执行耗时的存储过程 304 10.2.3 秒级作业 305 10.3 使用作业的疑难解答 309 第 11 章 数据备份与还原 315 11.1 数据库备份与还原方法介绍 315 11.1.1 完全备份与还原 315 11.1.2 差异备份与还原 317 11.1.3 日志备份与还原 319 11.1.4 数据文件或文件组备份与还原 320 11.1.5 备份设备 321 11.1.6 数据库恢复模型对数据库备份和还原的影响 322 11.2 制订数据库备份方案 326 11.2.1 备份方案制订原则 326 11.2.2 建立数据备份方案 327 11.3 数据库备份与还原的实践应用 332 11.3.1 系统数据库的备份与还原 332 11.3.2 数据库迁移 336 11.3.3 部分数据库还原 339 11.3.4 抢救损坏数据库中的数据 341 11.3.5 将数据还原到指定时间点 343 11.3.6 将数据还原到指定标记点 345 11.3.7 同步备用服务器 346 11.4 数据备份与还原疑难解答 349 11.4.1 数据备份与还原中的常见问题 349 11.4.2 使用媒体集备份时的常见问题 354 11.4.3 数据库还原中的孤立用户问题 356 11.4.4 查询备份文件中的信息 360 第 12 章 用户定义数据类型 361 12.1 用户定义数据类型概述 361 12.1.1 创建和删除用户定义数据类型 361 12.1.2 为用户定义的数据类型绑定规则 365 12.1.3 为用户定义的数据类型绑定默认值 370 12.2 修改用户定义数据类型 373 12.2.1 修改被表引用的用户定义数据类型 373 12.2.2 修改被存储过程引用的用户定义数据类型 379 第 13 章 数据库安全 383 13.1 SQL Server的存取构架 383 13.1.1 表格格式数据流(TDS) 383 13.1.2 Net-Library与网络协议 384 13.1.3 Net-Library加密 387 13.2 用户管理 388 13.2.1 身份验证模式 388 13.2.2 登录、用户、角色和组 390 13.2.3 管理用户 395 13.3 数据文件安全 403 13.4 SQL Server安全配置 405 13.4.1 安全配置建议 405 13.4.2 使用安全套接字层(SSL)加密 408 13.5 应用程序上的安全 417 13.5.1 防止SQL注入式攻击 417 13.5.2 限制应用程序访问 418 13.5.3 不安全的扩展存储过程 419 第 14 章 系统表应用实例 423 14.1 系统对象概述 423 14.1.1 每个数据库中都存在的系统表 424 14.1.2 仅在系统数据库中存在的系统表 424 14.1.3 系统表应用中三个重要的系统存储过程 426 14.2 系统表在对象信息检索中的应用 429 14.2.1 搜索指定的对象所处的数据库 429 14.2.2 获取存储过程参数定义 432 14.2.3 搜索指定字符在哪个表的哪个字段中 435 14.2.4 非UNICODE字段改为UNICODE字段的可行性查询 438 14.2.5 字段相关对象查询 439 14.2.6 生成数据库字典 443 14.3 系统对象在处理中的应用 444 14.3.1 批量处理数据库中的对象 444 14.3.2 将所有的char、varchar改为nchar、nvarchar 445 14.3.3 标识列与普通列的相互转换 447 14.3.4 把列添加指定位置 450 14.3.5 在两个SQL Server数据库之间复制对象 451 第 15 章 SQL Server应用疑难解答 455 15.1 访问SQL Server实例的常见问题 455 15.1.1 连接失败 455 15.1.2 用户登录失败 458 15.1.3 测试连接到SQL Server实例的方法总结 458 15.1.4 超时 459 15.1.5 单用户的问题 460 15.1.6 默认数据库问题 461 15.2 索引中的疑难解答 462 15.2.1 索引对查询条件的影响 462 15.2.2 索引对查询结果顺序的影响 465 15.2.3 索引对数据操作的影响 469 15.3 数据库日志疑难解答 470 15.3.1 影响日志文件增长的因素 471 15.3.2 从事务日志中删除日志记录 472 15.3.3 日志文件处理中的误区 472 15.3.4 合理解决日志文件增长 473 15.4 错误处理疑难解答 474 15.4.1 错误处理概述 474 15.4.2 错误处理严重程度 475 15.4.3 使用@@ERROR的疑难解答 476 15.4.4 XACT_ABORT与RAISERROR的疑难解答 477 15.5 游标处理疑难解答 479 15.5.1 全局游标与本地游标 479 15.5.2 检查指定的游标是否存在 480 15.5.3 事务提交或者回滚对游标的影响 482 15.5.4 可更新的游标 483 15.6 SQL Server处理中的其他疑难解答 484 15.6.1 并发工作负荷调控器 484 15.6.2 存储过程中的疑难解答 486 15.6.3 标识值疑难解答 488 15.6.4 全文检索疑难解答 491 15.6.5 发布与订阅中的常见问题 494 15.6.6 其他疑难解答 496

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值