使用Transact-SQL语言创建数据库,语法如下:

 

CREATE DATABASE database_name

[ON [PRIMARY] [<filespec> [,…n] [<filegroupspec> [,…n]] ]

       [LOG ON {<filespec> [,…n]}]

       [FOR RESTORE]

<filespec>::=([NAME=logical_file_name]

FILENAME=‘os_file_name’

[SIZE=size]

[MAXSIZE={max_size|UNLIMITED}]

[FILEGROWTH=growth_increment] ) [,…n]

<filegroupspec>::=FILEGROUP filegroup_name <filespec> [,…n]

 

各参数说明如下:

database_name:数据库的名称,最长为128个字符。

PRIMARY:该选项是一个关键字,指定主文件组中的文件。

LOG ON:指明事务日志文件的明确定义。

NAME:指定数据库的逻辑名称,这是在SQL Server系统中使用的名称,是数据库在SQL Server中的标识符

 

FILENAME:指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名和NAME的逻辑名称一一对

 

应。

SIZE:指定数据库的初始容量大小。

MAXSIZE:指定操作系统文件可以增长到的最大尺寸。

FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。

 

 

创建了一个Company数据库 :

 

创建了一个Company数据库,该数据库的主数据文件逻辑名称为Company_data,物理文件名为Company.mdf

 

,初始大小为10MB,最大尺寸为无限大,增长速度为10%;数据库的日志文件逻辑名称为Company_log,物

 

理文件名为Company.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为1MB

程序清单4-1

 

创建一个指定多个数据文件和日志文件的数据库 :

 

该数据库名称为employees,有110MB120MB的数据文件和210MB的事务日志文件。数据文件逻辑名

 

称为employee1employee2,物理文件名为employee1.mdfemployee2.mdf。主文件是employee1,由

 

primary指定,两个数据文件的最大尺寸分别为无限大和100MB,增长速度分别为10%1MB。事务日志文件

 

的逻辑名为employeelog1employeelog2,物理文件名为employeelog1.ldfemployeelog2.ldf,最大尺

 

寸均为50MB,文件增长速度为1MB

其源程序为:

 

利用企业管理器修改数据库:

 

设置中的各选项说明如下

ANSI NULL默认设置:允许在数据库表的列中输入空(NULL)值。

递归触发器:允许触发器递归调用。SQL Server设定的触发器递归调用的层数最多为32层。

自动更新统计信息:允许使用SELECT INTOBCPWRITETEXTUPDATETEXT命令向表中大量插入数据。

 残缺页检测:允许自动检测有损坏的页。

自动关闭:当数据库中无用户时,自动关闭该数据库,并将所占用的资源交还给操作系统。

 

自动收缩:允许定期对数据库进行检查,当数据库文件或日志文件的未用空间超过其大小的25%时,系统

 

将会自动缩减文件使其未用空间等于25%

自动创建统计信息:在优化查询(Query Optimizer)时,根据需要自动创建统计信息。

使用被引用的标识符:标识符必须用双引号括起来,且可以不遵循Transact-SQL命名标准

 

 

使用ALTER DATABASE语句修改数据库语法形式如下:

Alter database databasename

{add file<filespec>[,…n] [to filegroup filegroupname]

|add log file <filespec>[,…n]

|remove file logical_file_name [with delete]

|modify file <filespec>

|modify name=new_databasename

|add filegroup filegroup_name

|remove filegroup filegroup_name

|modify filegroup filegroup_name

{filegroup_property|name=new_filegroup_name}}

 

删除数据库

 

1.利用企业管理器删除数据库

2. 利用Drop语句删除数据库

 Drop语句可以从SQL Server中一次删除一个或多个数据库。其语法如下:

Drop database database_name[,…n]

 

删除创建的数据库company

 

程序清单4-4

drop database company

输出结果为:

Deleting database file 'd:\mssql7\data\company.ldf'.

Deleting database file 'd:\mssql7\data\company.mdf'.

 

SQL Server 2000四种备份方式:

(一)完全数据库备份(Dadabase-complete

(二)差异备份或称增量备份(Dadabase-differential

(三)事务日志备份(Transaction log

(四)数据库文件和文件组备份(File and filegroup

 

在进行备份以前首先必须指定或创建备份设备,备份设备是用来存储数据库、事务日志或文件和文件组备

 

份的存储介质,备份设备可以是硬盘、磁带或管道。当使用磁盘时,SQL Server允许将本地主机硬盘和远

 

程主机上的硬盘作为备份设备,备份设备在硬盘中是以文件的方式存储的

 

创建备份设备的两种方法

 

1 .使用SQL Server 企业管理器创建备份设备

如图4-17---4-18所示。

2. 使用系统存储过程创建备份设备

SQL Server 中,可以使用sp_addumpdevice语句创建备份设备,其语法形式如下:

sp_addumpdevice {‘device_type’}

[,’logical_name’][,’physical_name’][,{{controller_type|’device_status’}}]

 

 

例子4-5:在磁盘上创建了一个备份设备:

 

程序清单4-5

use master

   exec sp_addumpdevice ‘disk’, ‘backup_company’, ‘c:\mssql7\backup\bk_company.bak’

 

删除备份设备:

删除备份设备与创建的过程类似,只须在企业管理器中选中要删除的备份设备,在弹出的菜单中选择删除

 

选项即可删除该备份设备。或者使用sp_dropdevice语句来删除备份设备。其语法如下:

sp_dropdevice [‘logical_name’][,’delfile’]

例子4-6:删除上面创建的备份设备

sp_dropdevice ‘backup_company’, ‘c:\mssql7\backup\bk_company.bak’ 

 

使用Transact-SQL语句备份数据库 :

 

其语法形式如下:

Backup database

{database_name|@database_name_var}

to

<backup_file>[,…n]

[with

[[,]format]

[[,]{init|noinit}]

[[,]restart]

]

<backup_file>::={backup_file_name|@backup_file_evar}|{disk|tape|pipe}

={temp_file_name|@temp_file_name_evar}

 

使用Transact-SQL语句恢复数据库 :

其语法形式如下: 

Restore database 

[from <backup_device[],…n>]

[with

[[,]file=file_number]                              

[[,]move ‘logical_file_name’ to ‘operating_system_file_name’]

[[,]replace]

[[,]{norecovery|recovery|standby=undo_file_name}]

]

<backup_device>::={{backup_device_name|@backup_device_name_evar}

|{disk|tape|pipe}

={temp_backup_device|@temp_backup_device_var}

 

 

从备份设备中恢复数据库:

backup_company备份设备中恢复数据库company

程序清单4-7

use master

restore database company

from backup_company

 

恢复系统数据库 :

 

1. 关闭SQL Server,运行系统安装目录下的bin子目录下的rebuilem.exe文件,这是个命令行程序,运行

 

后可以重新创建系统数据库。

2. 系统数据库重新建立后,启动SQL Server

3. SQL Server启动后,系统数据库是空的,没有任何系统信息。因此,需要从备份数据库中恢复。一般

 

是先恢复master数据库,再恢复msdb数据库,最后恢复model数据库。

 

字符数据类型可以用来存储各种字母、数字符号和特殊符号。

 Char:其定义形式为charn),每个字符和符号占用一个字节的存储空间。

Varchar:其定义形式为varcharn)。用char数据类型可以存储长达255个字符的可变长度字符串

Nchar:其定义形式为ncharn)。

Nvarchar:其定义形式为nvarcharn)。

 

Datetime:用于存储日期和时间的结合体 。它可以存储从公元175311日零时起到公元99991231

 

235959秒之间的所有日期和时间

Smalldatetime:与datetime数据类型类似,但其日期时间范围较小,它存储从190011日到20796

 

6日内的日期。

 

Text:用于存储大量文本数据,其容量理论上为1231-12147483647)个字节,但实际应用时要

 

根据硬盘的存储空间而定。

 Ntext:与text数据类型类似,存储在其中的数据通常是直接能输出到显示设备上的字符,显示设备可以

 

是显示器、窗口或者打印机。

Image:用于存储照片、目录图片或者图画,其理论容量为231-12147483647)个字节。

 

Money:用于存储货币值,存储在money数据类型中的数值以一个正数部分和一个小数部分存储在两个4

 

节的整型值中,存储范围为-922337213685477.5808922337213685477.5808,精度为货币单位的万分之

 

一。

Smallmoney:与money数据类型类似,但其存储的货币值范围比money数据类型小,其存储范围为-

 

214748.3468214748.3467

 

Bit:称为位数据类型,其数据有两种取值:01,长度为1字节。 使用时表现为 true, false

 

Binary:其定义形式为binary(n),数据的存储长度是固定的,即n+4字节,当输入的二进制数据长度小于

 

n时,余下部分填充0

 Varbinary:其定义形式为varbinary(n),数据的存储长度是变化的,它为实际所输入数据的长度加上4

 

字节。其它含义同binary

 

Bigint:用于存储从-263-9223372036854775807)到263-19223372036854

 

775807)之间的所有正负整数。

 sql_variant:用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的SQL Server数据。

table:用于存储对表或者视图处理后的结果集。这种新的数据类型使得变量可以存储一个表,从而使函

 

数或过程返回查询结果更加方便、快捷。

 

SQL Server 2000中,每个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024

 

列,也就是可以定义1024个字段。

 SQL Server 2000提供了两种方法创建数据库表,第一种方法是利用企业管理器(Enterprise Manager

 

创建表;另一种方法是利用Transact-SQL语句中的create命令创建表。

 

利用create命令创建表 :

 

其语法形式如下:

CREATE TABLE

    [ database_name.[ owner ] .| owner.] table_name

    ( { < column_definition >| column_name AS computed_column_expression|

< table_constraint >} [,…n])

[ ON { filegroup | DEFAULT } ]

 

 

创建表的各参数的说明如下:

 

database_name:用于指定在其中创建表的数据库名称。

owner:用于指定新建表的所有者的用户名

table_name:用于指定新建的表的名称。

column_name:用于指定新建表的列的名称。

computed_column_expression:用于指定计算列的列值的表达式。

ON {filegroup | DEFAULT}:用于指定存储表的文件组名。

TEXTIMAGE_ON:用于指定 textntext image 列的数据存储的文件组。

data_type:用于指定列的数据类型

DEFAULT:用于指定列的缺省值。

constant_expression:用于指定列的缺省值的常量表达式

IDENTITY:用于指定列为标识列。

Seed:用于指定标识列的初始值。

Increment:用于指定标识列的增量值。

NOT FOR REPLICATION:用于指定列的IDENTITY属性在把从其它表中复制的数据插入到表中时不发生作用

 

,即不足的生成列值,使得复制的数据行保持原来的列值。

ROWGUIDCOL:用于指定列为全球唯一鉴别行号列

COLLATE:用于指定表使用的校验方式。

column_constrainttable_constraint:用于指定列约束和表约束。

 

 

创建了一个雇员信息表 :

 

SQL语句的程序清单如下:

CREATE TABLE employee

( number   int   not null,

 name   varchar(20)   NOT NULL,

 sex   char(2)   NULL,

 birthday    datetime   null,

 hire_date   datetime   NOT NULL

      DEFAULT (getdate())

 professional_title   varchar(10)   null,

 salary   money   null,

 memo   ntext   null

)

 

利用Transact-SQL语言中的alter table命令增加、删除和修改字段的各参数的说明如下:

 

table:用于指定要修改的表的名称。

 ALTER COLUMN:用于指定要变更或者修改数据类型的列。

column_name:用于指定要更改、添加或删除的列的名称。

new_data_type:用于指定新的数据类型的名称。

precision:用于指定新的数据类型的精度。

scale:用于指定新的数据类型的小数位数。

NULL | NOT NULL:用于指定该列是否可以接受空值。

{ADD | DROP} ROWGUIDCOL :用于指定在某列上添加或删除 ROWGUIDCOL 属性。

 

ADD:用于指定要添加一个或多个列定义、计算列定义或者表约束。

computed_column_expression:用于指定一个计算列的计算表达式。

WITH CHECK | WITH NOCHECK:用于指定已经存在于表中的数据是否需要使用新添加的或者刚启用的

 

FOREIGN KEY CHECK 约束进行验证。

DROP { [CONSTRAINT] constraint_name | COLUMN column_name }:用于指定从表中删除的约束或者列的

 

名称。

 

{ CHECK | NOCHECK} CONSTRAINT:用于指定启用或禁用FOREIGN KEY或者CHECK约束。

ALL :用于指定使用 NOCHECK 选项禁用所有的约束,或者使用 CHECK 选项启用所有约束。

{ENABLE | DISABLE} TRIGGER:用于指定启用或禁用触发器。当一个触发器被禁用时,它对表的定义依然

 

存在;然而,当在表上执行 INSERTUPDATE DELETE 语句时,触发器中的操作将不执行,除非重新启

 

用该触发器。

ALL :用于指定启用或禁用表中所有的触发器。

trigger_name :指定要启用或禁用的触发器名称。

 

SQL语句的程序清单如下:

create table employees(

id char(8) primary key

name char(20) not null,

department char(20) null,

memo char(30) null

age int null,

)

alter table employees

 add salary int null

 drop column age

alter column memo varchar(200) null
posted on 2007-04-11 15:52  .NET初学者俱乐部  阅读(1108)  评论(0)    收藏  举报


 
Asp.net 初学者零起点从入门到精通