一、数据库组成
    表、视图(对多个表中的数据进行组合)、存储过程、触发器、用户与角色(在‘数据库xx/安全性’下)、其他数据库部分


二、使用管理工具创建数据库
1. 运行Microsoft SQL Server Management Studio
2. 创建数据库:

wKioL1N-6peA8tlkAAEpnMCDUWo020.jpg

右键选中“数据库”-->“新建数据库”:

wKioL1N-60KiFEu5AAFEsqttVKI983.jpg

    如上图填写“数据库名称”,“所有者”采用默认,“数据库文件”中刚创建时数据库的初始大小和日志初始大小都可更改;自动增长:随着数据的不断增长,它会自动增长,点旁边的属性按钮,可以更改;路径也可更改。“选项”中有更多的配置信息。
    单击“确定”即完成数据库的创建,创建好的数据库会创建出2个文件:数据库文件(.mdf)和日志文件(.ldf):

wKioL1N-7iPiT3bkAABdoRKnwFw970.jpg


    数据库新建好后,还可在属性中修改某些设置:如上面新建好的数据库xj,右击选择“属性”,看到所设的“所有者”为默认值即:

wKiom1N-8N7QX0q8AAEEWBlQvqE648.jpg


      现在指定‘所有者’为一个本地用户:NT AUTHORITY\SYSTEM

wKiom1N-8YuxYmc0AAAiFIQJnUk958.jpg

    还可以修改数据库文件和日志文件的‘初始大小’(根据对数据库大小进行估计),“选项”下有更多的配置信息,其中排序规则:SQL Server 2008数据库的排序规则,默认是中文环境(Chinese_PRC_CI_AS);恢复模式:定义数据库备份与恢复的恢复模式。

wKioL1N-8oWyelqJAAIg7blbrD0554.jpg

    “文件组”下,数据库文件都需要存放在一个文件组中,在执行数据库备份,优化数据库操作时非常有用。单击“添加”可以创建新的文件组。


三、使用语句创建数据库
CREATE DATABASE database_name
[
    ON [PRIMARY]
    [(NAME=logical_name, FILENAME =’path’[,SIZE = database_size] [,MAXSIZE = database_maxsize] [,FILEGROWTH = growth_increment]
     )[, FILEGROUP=filegroup_name[(NAME = datafile_name, FILENAME =’path’ [,SIZE = datafile_size][ ,MAXSIZE =datafile _maxsize][ ,FILEGROWTH = growth_increment]
                                  )
      ]
    ]
]
[
    LOG ON
    [(NAME = logfile_name, FILENAME =’path’[,SIZE = logfile_size] [,MAXSIZE = logfile_maxsize] [,FILEGROWTH = logfile_increment]
     )
    ]
]

ON PRIMARY  指定需要关联的数据库的主文件,默认会将第一个创建的数据文件作为主文件。
Name=logical_name 指定数据库文件的逻辑名称
FILENAME=’path’ 指定数据库文件在磁盘上的位置
SIZE=database_size  指定数据库文件的初始大小(MB/TB)
MAXSIZE=database_maxsize  指定数据库文件的最大值,可以不设置,默认为不限制增长
FILEGROWTH=growth_increment 指定文件的增量,按%或MB
FILEGROUP filegroup_name 指定文件所属的文件组
创建的数据文件可以有多个
LOG ON 表示创建日志文件
也可以在联机丛书中找到更详细的语法说明

CREATE DATABASE 教务管理系统

ON

(

   NAME = 教务管理系统_DATA,

   FILENAME ='E:\DATA\教务管理系统_DATA.mdf',

   SIZE = 3MB,

   MAXSIZE =20MB,

   FILEGROWTH =5%

)

LOG ON

(

   NAME = 教务管理系统_LOG,

   FILENAME ='E:\DATA\教务管理系统_DATA.ldf',

   SIZE = 2MB,

   MAXSIZE =10MB,

   FILEGROWTH =1MB

)


四、查看数据库状态

    有三种方式:
    1.使用目录视图:即右键数据库名,在属性中查看,可看到数据库文件的位置,文件组,当前数据库文件的剩余空间等。

    2.使用函数:查看数据库的属性取值情况
select DATABASEPROPERTYEX('教务管理系统','Version')   --版本号
select DATABASEPROPERTYEX('教务管理系统','Recovery')  --数据库恢复模式
执行结果:
661   【返回值说明:基本数据类型:int。版本号 = 数据库处于打开状态。NULL = 数据库没有启动】
FULL  【返回值说明:基本数据类型:nvarchar(128)  FULL = 完整恢复模式  BULK_LOGGED = 大容量
日志记录模型   SIMPLE = 简单恢复模式】
可以从联机丛书查看到这个函数包含的属性

    3.使用系统存储过程:在创建数据库时,首先会调用SQL Server2008提供的模板数据库,这个模板数据库包含了一系列的存储过程,利用这些存储过程就可以查看当前数据库的状态。

sp_helpdb  --可以查看服务器上所有数据库的主要状态

执行结果:

wKioL1N--QbiD97bAAI5BA0AwRY796.jpg

    最后一列compatibility_level是SQL Server的兼容级别,SQL Server 2008创建的就是100,SQL Server 2005创建的就是90。


五、修改数据库
1.界面操作修改数据库:
    修改数据库名:先右击数据库/重命名,修改名称,这样仅能更改数据库名称,并不会修改其数据文件和日志文件的名称,可右击数据库/属性/‘文件’选项卡中修改‘逻辑名称’,但是数据文件的路径和物理存储名称是不能更改的。
    如果数据库随着使用的数据量越来越大,发现数据库的设计不合理,还可以修改数据库的初始大小。如果不想改变原来的数据文件,则可以添加一个数据文件。

wKioL1N--qzB97E-AAGLNVyugq0136.jpg

也可以在‘选项’下修改‘恢复模式’。

2.T-SQL修改数据库名:

alter database 教务管理系统 modify name=教务管理信息系统


六、删除数据库
    可以右键删除数据库,在删除时可以设置图下边的删除选项。
    用T-SQL语句删除数据库:

drop database 教务管理信息系统


七、分离和附加数据库

    所有的企业都不会将所有的数据库文件放在单一的服务器上,都需要将当前的数据库文件复制几份放在不同的地方来保证数据的安全性,但是数据库在创建完成之后的运行过程中是无法复制数据库文件的,所以要想将数据库文件复制到另外的地方,另外的数据库实例中运行的话,就需要使用特殊的操作:对数据库进行分离和附加,来实现对当前的数据库文件部署到不同的数据库服务器上。

    分离数据库就是指将数据库从SQL Server 2008 的实例中分离出去,但是不会删除该数据库的文件和事务日志文件,这样,该数据库可以再附加到其他的SQL Server 2008 的实例上去。
在下列状态下无法分离数据库:

  • 已复制并发布数据库。

  • 数据库中存在数据库快照。

  • 数据库处于未知状态。

    存在数据库快照表示数据库正在使用中,所以无法分离,要想分离必须先删除快照。

    附加数据库是指将当前数据库以外的数据库附加到当前数据库实例中。在附加数据库时,所有数据库文件(.mdf和.ndf文件)都必须是可用的。如果任何数据文件的路径与创建数据库或上次附加数据库时的路径不同,则必须指定文件的当前路径。在附加数据库的过程中,如果没有日志文件,系统将创建一个新的日志文件。

    直接复制xj的数据库文件和日志文件会被告诉数据库正在使用,无法复制,所以:右击数据库名xj/任务/分离:

wKioL1N_CHSS9-RgAAEpB7Hg2S8124.jpg

确定后,在当前的‘数据库’节点下就看不到这个已分离的数据库了。

    现在就可以将这个xj的数据库文件和日志文件复制到另一个目录了(E:\DATA1\下)。比如在另一个数据库实例下,右击‘数据库’/‘附加’:

wKioL1N_CTzBevNXAAGhJTusy8w217.jpg

确定后就可以看到数据库被附加了进来。


八、收缩数据库

    如果在设计数据库时考虑到数据量非常多,而将数据库设计得非常大,而在实际过程中发觉要不了那么大的数据库容量,这时就需要将数据库的尺寸收缩一下,所以要执行一下收缩操作。
为了进行收缩操作,先将一数据库demoxj初始大小设大,再进行收缩操作。

wKiom1N_ChujKrC5AACaOgQ8G8I870.jpg

右击数据库demoxj/任务/收缩/数据库,对整个数据库进行收缩:

wKiom1N_DAKRWwZAAAFTBZ7_Ax0442.jpg

收缩后再看demoxj的属性:

wKioL1N_C_ewtZZbAACtNpX2VjY970.jpg

右击数据库demoxj/任务/收缩/文件,也可以对某个数据库文件进行收缩,比如对日志文件进行收缩:

wKioL1N_DN6xS_5VAAGWiahSAMw118.jpg

确定后,再看这个数据库的属性:

wKiom1N_DUzxjyiHAACo6RO0eGk289.jpg


九、数据库快照

    数据库中的数据是随着操作不断的变化,如果现在有个特定的需求,比如规定一个特定的时间点2012-1-1,查询这个时间点之前的所有数据,有两种方法:
    备份与还原:但是还原后2012-1-1以后的数据就会被丢弃,这不是期望的。
    数据库快照:在某个时间点,对当前数据库创建快照,包含所有数据的备份。