(2)添加日志文件:
a)格式: Alter database 数据库名 Add Log File
( Name=逻辑文件名, Filename=物理文件名, Size=文件起始大小, Maxsize=文件最大容量, Filegrowth=文件增量 ) b)实例: Alter database student Add Log File
( Name=student_ldf1,
Filename='d:\\sql\\student_ldf1.ldf', Size=4, Maxsize=40, Filegrowth=15% ) (3)添加文件组:
a)格式:Alter database 数据库名 Add Filegroup 文件 组名。
b)实例:Alter database student Add Filegroup group1 向该文件组中添加文件
Alter database student Add File ( Name=student_ndf2,
Filename='d:\\sql\\student_ndf2.ndf', Size=3, Maxsize=30, Filegrowth=3 ) To Filegroup group1
(4)修改文件(数据文件和日志文件):
a)格式:Alter database 数据库名 Modify File ( Name=逻辑文件名, [Size=新的文件大小,] [Maxsize=将要达到的容量,] [Filegrowth=修改后的增量] )
b)说明:修改数据文件和日志文件的格式是相同的,但逻辑 文件名和物理文件名不能修改。在修改文件时,必须指定 文件的逻辑名,用来标识将要修改的文件。而不必指定文 件的物理名,否则将出现错误。如果指定修改文件的 Size,则新的文件大小必须比当前文件大小要大。而修改 文件的Maxsize和Filegrowth时,数值可以增大,也可以 和原来的相同。
c)实例: Alter database student Modify File ( Name=student_ldf1, Filegrowth=20% ) (5)修改文件组属性:
a)Alter database 数据库名 Modify Filegroup 文件组 名 readonly|readwrite|default
b)说明:当想修改文件组的属性时,必须保证该文件组中 存在文件。
Readonly为只读、readwrite为读写、default为默认设 置。一般不修改。
c)实例:Alter database student Modify Filegroup group1 readwrite (6)删除文件:
a)格式:Alter database 数据库名 Remove File 文件名 b)说明:不能删除主要数据文件和主要日志文件。 c)实例: Alter database student Remove File student_ldf1 (7)删除文件组:
a)格式:Alter database 数据库名 Remove Filegroup 文 件组名
b)说明:要删除的文件组中不能包含数据文件。 c)实例: Alter database student Remove File student_ndf2
Alter database student Remove Filegroup group1
第三节 删除数据库
(1) (2)
格式:Drop database 数据库名 实例:Drop database student
第四节 设置数据库选项
1、格式:SP_dboption 数据库名 [,?选项名? [,ture|false]]
2、说明:SP_dboption:系统的存储过程,可以通过它设置数据库选项,它支持对所有 可用的数据库选项进行设置。
a)如果只设置{SP_dboption 数据库名},那么将显示在本数据库中设置为True的选项。 b)如果设置{SP_dboption 数据库名,?选项名?},那么将显示指定的选项当前处于什么状态(ON或者OFF)
3、实例:将student数据库的read only选项设置为True,即打开此选项。 SP_dboption student, 'read only','true'
第五节 清空数据库的LOG日志文件
1)格式:DUMP TRANSACTION 数据库名 WITH NO_LOG (2)实例:DUMP TRANSACTION student WITH NO_LOG
第六节 压缩数据库
有时,人们可能为预期有一定程度活动的数据库分配了太多的空间,当意识到分配了太多空间时,可能决 定压缩分配的空间大小。SQLSERVER提供三种可以压缩数据库大小的方法,autoshrink数据库选项,“企业
管理器”和“数据库一致性检查器(DBCC)”命令。 1、使用DBCC Shrinkdatabase压缩数据库:
DBCC Shrinkdatabase 命令在默认情况下会对数据库的数 据和日志部分都进行压缩。如果您只想减少数据和日志部
分,则您必须首先压缩整个数据库,然后使用
Alter database 语句来增加数据库的数据或日志部分。 a)、格式:DBCC Shrinkdatabase (数据库名, 压缩后可使用的百分比)
[NOTRUNCATE|TRUNCATEONLY]
b)、说明: NOTRUNCATE:不会将可用的空间释放给 操作系统,而是留给数据库文件。
TRUNCATEONLY:将数据文件未用的空间释放给操作系统。 c)、实例: DBCC Shrinkdatabase(student,20) TRUNCATEONLY
2、使用“企业管理器”压缩数据库: 有两种方式:
a)在企业管理器中,选中要压缩的数据库,点击鼠标右 键,点击属性,从弹出的“数据库属性”的对话框中选 中“选项”标签,在复选框中选中“自动压缩”选项即可。 b)在企业管理器中,选中要压缩的数据库,点击鼠标右 键,选中“所有任务”,点击“收缩数据库”,填充相应 的选项即可。
第七节 维护数据库
Set ShowPlan_Text Set ShowPlan_All
第三章 数据类型
第一节 系统数据类型
是SQLSERVER支持的内置数据类型。
1、字符型: char、nchar、varchar、nvarchar、text、ntext
a)char:固定长度的非Unicode字符数据,最大的长度为8000 字符。 b)nchar: 固定长度的Unicode数据,最大的长度为4000字符。 c)varchar:可变长度的非Unicode数据,最大的长度为8000字符。 d)nvarchar: 可变长度的Unicode数据,最大的长度为4000字符。 e)text: 可变长度的非Unicode数据,最大的长度为2^31-1个字符。 f)ntext: 可变长度的Unicode数据,最大的长度为2^30-1个字符
对于定义为char或nchar的列,SQLSERVER将用字符串来填满指定的字节数。
定义为varchar 或nvarchar的列只存储输入的实际长度,可能舍去尾部空间。SQLSERVER处理尾部空间,取决于SET ANSI_PADDING,以及该列是固定长度还是可变长度。
根据SET ANSI_PADDING值处理尾部空间ANSI_PADDING char和nchar Varchar和 nvarchar ON 串被空格填充到列的长度 串未被空格填充到列的长度,尾部空间被保留 OFF 串被空格填充到列的长度 串未被空格填充到列的长度,尾部空间被截掉 2、日期和时间型:smalldatetime、datetime。
a)smalldatetime:从1900年1月1日到2079年6月6日,精确到1分钟。
b)datetime:从1753年1月1日到9999年12月31日,精确到三百分之一秒,即3.33毫秒。 3、数据型数值类型
A、整型:smallint、int、tinyint。 a)smallint:从2^15到2^15-1。 b)int:从-2^31到2^31-1。 c)tinyint:从0到255。
B、近似数字数据类型:float和real。
a)float:浮点精度数字数据,从-1.79E+308到1.79E+308。 b)real: :浮点精度数字数据,从-3.40E+308到3.40E+308。 C、精确数字数据类型: decimal和numeric。 a) decimal:不带符号的整数,按10进位。 b) numeric:decimal(十近制)的同义词。 D、货币数据类型:money和smallmoney。
a) money:从-2^63到2^63-1,精确到每个货币单位的万分之一。
b) smallmoney:从-214,748.3648到+214,748.3647,精确到每个货币单位的万分之一。 4、逻辑数据类型:bit
Bit:整形数据,值为1或0。
第二节 用户自定义数据类型
是SQLSERVER支持的内置数据类型。
用户可以通过两个系统存储过程创建和删除用户定义类型。
(它们不是真正的新数据类型,而像是一种复合型数据类型或结构。)
Sp_addtype过程创建用户定义的数据类型,Sp_droptype过程删除定义的数据类型。 1、创建自定义的数据类型
(1)、格式:Sp_addtype 自定义数据类型名,系统的数据类型,?[null | not null]? (2)、说明:A、用户自定义的数据类型是基于系统的数据类型创建的。 B、[null |not null]:指定该列是否为空。默认为null。 C、如果系统数据类型包括圆括弧,必须用引号把它括起来。 (3)、实例:Sp_addtype birthday,datetime, ?not null? Create table stu1(sid int, sbirthday birthday) 2、删除自定义的数据类型
(1)、格式[:Exec] sp_droptype 自定义的数据类型。 (2)、实例:[Exec] sp_droptype birthday。
注意:我们还可以通过企业管理器创建自定义的数据类型。首先,选中一个数据库,点击右键, 选中“新建”,从弹开的菜单中选中“用户定义的数据类型”,在打开的窗体中填充相应的选 项即可。
第四章 创建和维护表
第一节 创建表、修改表、删除表
1、创建表
(1)、格式:Create table 表名 ( 字段名1 数据类型,………字段名n 数据类型) (2)、说明: 表名的定名原则要遵循标识符的定名原则。字段和字段之间用逗号隔开。 (3)、实例:Use book go
Create table book(bookid int ,bookname varchar(10)) 2、修改表
(1)、增加字段:
a) 格式:Alter table 表名 Add 字段名 字段类型
b) 实例:Alter table book add providerid varchar(10),address varchar(20). (2)、修改字段:
a) 格式:Alter table 表名 Alter column 字段名 字段类型 b) 实例: Alter table book Alter column address varchar(10) (3)、删除字段:
a) 格式:Alter table 表名 Drop column 字段名 b) 实例: Alter table book drop column address 3、删除表
(1)、格式:Drop table 表名
(2)、说明:把不再起作用的表从数据库中删除。 (3)、实例:Drop table book
第二节 数据的完整性
是通过实现过程数据完整性和声明数据完整性来强制执行的。 1、Identity : identity属性可以生成唯一标识表中每一行的连续值。 (1)格式: Identity (初始值 ,增量)
(2)实例:Create table tab1(id int identity(1,1),name varchar(10)) (3)说明:
a)一个表中只能有一个identity标识的列,字段必须是整型。 b)不能更新定义有identity属性的列。
c)不能向定义有identity属性的列赋null值或附加默认约束。
2、Uniqueidentifier: 使用Uniqueidentifer和Newid函数也可以生成列的唯一值,与Identity属性类似。
如果创建的列是uniqueidentifer 数据类型,则必须使用newid函数为它生成新值。 A、手动添加列值
(1)实例:Create table tab2 (id uniqueidentifier,name varchar(10)) (2)插入值:insert into tab2 values(newid(),'mary') B、自动添加列值
(1)实例:Create table tab2 (
id uniqueidentifier NOT NULL ROWGUIDCOL CONSTRAINT [DF_tab2_ID] DEFAULT (newid()),
name varchar(10))
(2)插入值:insert into tab2 values('mary')
说明:在创建ID列时直接设置列的值为自动填充,值的来源由newid()函数随机产生。
第三节 使用约束
(1)主键(primary key):唯一标识每一行。 1) 说明:
a)一个表中只可以定义一个主键。 b)不能在主键列中输入null值。 c)最多可定义16列作为主键。
d)定义之后,则不能禁用primary key 约束.