SQL Server 2008 数据库的管理(二)
一、T-SQL 概述
1.SQL:Structured Query Language:结构化查询语言,现在已经作为国际计算机查询语言的通用标准,92年美国国家标准局ANSI推出ANSI SQL 92标准,我们安装的sql server 2008所用的标准就是ANSI SQL 92标准的一个扩展集,叫做T-SQL。 2.T-SQL
T-SQL:Transact-SQL,是SQL的一个扩展集,对功能有了很大的补充,例如变量说明,流程控制,功能函数等。 二、T-SQL的语言主要组成部分 1.DML(数据操作语言)
用于查询、插入、修改、和删除数据库中的数据。 SELECT、INSERT、UPDATE 、DELETE等 2、DDL(数据定义语言)
用于在数据库系统中创建数据库、表、视图、索引等 CREATE DATABASE DROP DATABASE等 3、DCL(数据控制语言) 用来控制存取许可、存取权限等 GRANT,REVOKE等 4.其他
海标扩变量说明、内部函数等其他的命令。
二、数据库的相关概念和命名规则 1、物理存储结构
数据库文件在磁盘上的存储形式
主数据文件: *.mdf,用来存储数据库的启动信息,存储部分或者全部的数据。一个数据库只能有一个主数据文件。
辅助数据文件:*.ndf,用来存储主数据文件未能存储的数据。一个数据库可以有很多个ndf,也可以一个都没有。
日志文件:*.ldf,用来存储数据库的更新等日志信息,当数据库损坏的时候管理员可以通过日志文件来进行恢复。曾删改都会被记录在日志文件中。查询是不会被记录在日志中。一个数据库必须有一个日志文件。
文件组:类似于文件夹,用来方便管理文件,分为主文件组和次文件组,日志不属于任何一个文件组。(查看测试1数据库) 2、逻辑存储结构
有数据表,视图,索引等国中不同的数据对象组成,分别用来存储特定信息并支持特定功能。 3、数据库明明规则
第一个字符必须是字母或者”_”、”@”、”#”。数据库名称不能直接是T-SQL的保留字。不允许嵌入空格或其他特殊字符。
4、数据库的分类 (1)系统数据库
master:非常重要的数据库,记录了数据库的系统级别信息,包括所有的登陆账户,系统配置以及数据库和数据库文件的存放位置和初始化信息等等。
usemaster--纸箱操作的数据库
select*fromsysdatabases--查询系统表sysdatabases中的所有数据
model:模板数据库,当我们创建新数据库的时候会有一个模板,模板就存放在model数据库中
msdb:备份和还原数据库的时候使用的。
Tempdb:临时数据库,存储临时表和临时数据过程,过程当程序结束后就会消失。
Resource:隐藏的数据库,是无法看到的,包含了SQL server的系统对象,在物理存储结构上实在resource数据库中的额。但是逻辑上他会出现在每个数据库的sys架构当中。
(2)用户数据库(日文翻译的书经常叫做平民数据库):用户自己创建的数据库。
三、使用T-SQL视图创建数据库
1、单一文件组的数据库。例如:使用管理器创建一个电子商城E_Market数据库,要求如下(只有一个primary文件组)
数据库名称为E_Market,包含一个数据文件,初始容量大小为5M,文件按15%自动增长,最大容量为100M
一个日志文件,初始容量大小为1M,不启用自动增长,所有文件存放在E盘,project目录下。
说明:建完数据库后,右键单击数据库名称,选择属性—选项 (1)兼容级别:高版本的数据库是可以兼容低版本数据库的,可以根据自己的需要自行设定
(2)访问:三种状态,默认是multi user,是不访问的,single user是当我们对数据库进行维护的时候,旺旺只会同意自己访问对数据库进行维护,single user就是这时候使用的,restricted user 是只允许特定用户访问数据库。
(3)数据库的只读状态,制度数据库不能再被写入数据,只能读取数据。
创建数据库是需要指定哪些属性
文件名称,存放位置,非配的初始空间,属于哪个文件组 文件增长,文件容量设置 兼容级别:版本号 数据库是否只读 访问的三种模式
2.创建多个文件组的数据库。
例如:使用管理器创建一个DemoDB数据库,要求如下
数据库的名称为DemoDB,包含一个数据文件,除是容量为10M,文件按10%自动增长,最大容量为500M。
第二个文件组FG,辅助数据文件为FG_DemoDB,初始大小为10M,不启用自动增长。
一个日志文件,出事容量大小为5M,不启用自动增长,所有文件存放在E:\\project目录下。
顺序:首先创建数据库DemoDB,设置大小和自动增长以及存放位置,更改日志文件大小和自动增长以及存放位置。 进入文件组,新建文件组FG。
回到文件,创建文件FG_DemoDB,修改文件组、大小、增长以及存放位置,设置改文件属于文件组FG。 四、使用SQL语句创建数据库
1.创建一个数据文件和一个日志文件的数据库 题目要求同上
USEmaster--当前指向的操作的数据库 GO
CREATEDATABASEE_Market ONPRIMARY--主文件组 ( )
NAME='E_Market_data',--逻辑文件名
FILENAME='E:\\project\\E_Market_data.mdf', --物理文件名 SIZE=5MB,--初始大小
MAXSIZE=100MB,--最大容量 FILEGROWTH=15%--增长率
LOGON--日志文件
(
NAME='E_Market_log',
FILENAME='E:\\project\\E_Market_log.ldf', SIZE=5MB,
FILEGROWTH=0--未启用自动增长 )
Go
注意:每句语句后面跟的是英文的逗号,最后一句不用逗号,开始的go和最后的go是告诉数据库将两个go之间的代码当做一段语句块执行,因为我们创建数据库是要求主文件和日志文件同事存在的,所以要同事执行。
2.创建多个文件组的数据库。 题目同上
USEmaster--当前指向的操作的数据库 GO
CREATEDATABASEE_Market ONPRIMARY--主文件组 (
NAME='E_Market_data',--逻辑文件名
FILENAME='E:\\project\\E_Market_data.mdf', --物理文件名 SIZE=5MB,--初始大小 MAXSIZE=100MB,--最大容量 FILEGROWTH=15%--增长率
),
FILEGROUPFG--创建了一个次文件组 (
NAME='E_Market2_data',
FILENAME='E:\\project\\E_Market2_data.ndf', SIZE=4MB,
FILEGROWTH=10%
)
LOGON--日志文件
(
NAME='E_Market_log',
FILENAME='E:\\project\\E_Market_log.ldf', SIZE=5MB,
FILEGROWTH=0--未启用自动增长
), (
NAME='E_Market2_log',
FILENAME='E:\\project\\E_Market2_log.ldf', SIZE=3MB,
FILEGROWTH=10%, MAXSIZE=100MB ) GO
注意:如果只有一个primary文件组写完文件组后不用在最后添加英文的逗号,如果需要写一个此文件组,则需要在写完主文件组后添加英文的逗号,然后继续写filegroup。 3.向现有数据库添加文件组和文件 (1)利用视图添加文件组和文件
找到E_Market数据库,右键单击该数据库—属性—文件组—添加—写好文件组名fg2.
选择文件—添加—文件名等属性 (2)利用SQL语句添加文件
useE_Market
alterdatabasee_marketaddfilegroupfg1--添加文件组fg1 go
alterdatabasee_marketaddfile--向刚创建的文件组fg1添加文件 (
name='fg1_e_market_data',
filename='e:\\project\\fg1_e_market_data.ndf', size=5mb,
filegrowth=10%
)tofilegroupfg1 go
--将fg1文件组设置为默认文件组 alterdatabasee_market
modifyfilegroupfg1default go
4.删除数据库
(1)利用sql语句删除数据库
USEmaster--当前指向的操作的数据库
GO
IFEXISTS(SELECT*FROMsysdatabasesWHEREname='E_Market')
DROPDATABASEE_Market--删除数据库 GO
注意:特别小心删除数据库的操作,如果执行则会从磁盘上将所有数据库文件都删除,一旦删除是无法恢复的。 (2)完整的创建数据库的方法
USEmaster--当前指向的操作的数据库
GO
IFEXISTS(SELECT*FROMsysdatabasesWHEREname='E_Market')
DROPDATABASEE_Market--删除数据库 --创建数据库
CREATEDATABASEE_Market ONPRIMARY--主文件组 (
NAME='E_Market_data',--逻辑文件名
--物理文件名
FILENAME='e:\\project\\E_Market_data.mdf', SIZE=5MB,--初始大小 MAXSIZE=100MB,--最大容量 FILEGROWTH=15%--增长率
),
FILEGROUPFG--创建了一个次文件组 ( )
NAME='E_Market2_data',
FILENAME='e:\\project\\E_Market2_data.ndf', SIZE=4MB,
FILEGROWTH=10%
LOGON--日志文件
(
NAME='E_Market_log',
FILENAME='e:\\project\\E_Market_log.ldf', SIZE=5MB,
FILEGROWTH=0--未启用自动增长
), (
NAME='E_Market2_log',
FILENAME='e:\\project\\E_Market2_log.ldf', SIZE=3MB,
FILEGROWTH=10%, MAXSIZE=100MB ) GO
SELECT*FROMsysdatabases