数据库

是按照数据结构来组织,存储和管理数据的仓库,是存储在一起的相关数据的集合。优点有以下几个方面:
1.减少数据的冗余度,节省数据存储空间
2.具有较高的数据独立性和易扩充性
3.实现数据资源的充分共享

数据库系统
是采用数据库技术的计算机系统,是由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)和软件平台(软件)五部分构成的运行实体。其中数据库管理员(DataBase Administrator,简称DBA)是对数据库进行规划、设计、维护和监视等的专业管理人员,在数据库系统中起着非常重要的作用。

数据库管理系统
是数据库系统的一个重要组成部分,是位于用户与操作之间的一层数据管理软件,负责数据库中的数据组织、数据操纵、数据维护和数据服务等。主要具有如下功能:
数据存取的物理构建:为数据模式的物理存取与构建提供有效的存取方法与手段。
2.数据操纵功能:为用户使用数据库的数据提供方便,如查询、插入、修改、删除等以及简单的算术运算和统计。
3.数据定义功能:用户可以通过数据库管理系统提供的数据定义语言(Data Definition Language,简称DDL)方便地对数据库中的对象进行定义。
4.数据库的运行管理:数据库管理系统统一管理数据库的运行和维护,以保障数据的安全性、完整性、并发性和故障的系统恢复性。
5.数据库的建立和维护功能:数据库管理系统能够完成初始数据的输入和转换、数据库的转储和恢复、数据库的性能监视和分析等任务。

关系数据库
关系数据库是支持关系模型的数据库。关系模型由关系数据结构、关系操作集合和完整性约束三部分组成。
关系数据结构:在关系模型中数据结构单一,现实世界的实体以及实体间的联系均用关系来表示,实际上关系模型中数据结构就是一张二维表
关系操作集合:关系操作分为关系代数、关系演算、具有关系代数和关系演算双重特点的语言(SQL语言)。
完整性约束:完整性约束包括实体完整性、参照完整性和用户定义的完整性约束。

常用数据库对象

在SQL Server 2012的数据库中,表、视图、存储过程和索引等具体存储数据或对数据进行操作的实体都被称为数据库对象。

表(类)
表是包含数据库中所有数据的数据库对象,是SQL Server数据库中最重要的逻辑对象。它由行和列组成,用于组织和存储数据。

字段(列-属性)
表中每列称为一个字段,字段具有自己的属性,如字段类型、字段大小等,其中字段类型是字段最重要的属性,它决定了字段能够存储哪种数据。
SQL规范支持5种基本字段类型:字符型、文本型、数值型、逻辑型和日期时间型。

索引
索引是一个单独的、物理的数据库结构。它是依赖于表建立的,在数据库中索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需的数据。

视图
视图是从一张或多张表中导出的表(也称虚拟表),是用户查看数据表中数据的一种方式。表中包括几个被定义的数据列与数据行,其结构和数据建立在对表的查询基础之上。视图中保存的不是数据,而是表的查询语句select。

存储过程
存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集合(包含查询、插入、删除和更新等操作),经编译后以名称的形式存储在SQL Server服务器端的数据库中,由用户通过指定存储过程的名字来执行。当这个存储过程被调用执行时,这些操作也会同时执行。

数据库的组成部分

SQL Server 2012数据库主要由文件和文件组组成。数据库中的所有数据和对象(如表、存储过程和触发器)都被存储在文件中。

文件主要分为三种类型

主要数据文件
存放数据和数据库的初始化信息。每个数据库有且只有一个主要数据文件,默认扩展名是.mdf。

事务日志文件
存放用于恢复数据库的所有日志信息。每个数据库至少有一个事务日志文件,也可以有多个事务日志文件,默认扩展名是.ldf。

次要数据文件
存放除主要数据文件以外的所有数据文件。有些数据库可能没有次要数据文件,也可能有多个次要数据文件,默认扩展名是.ndf。
SQL Server 2012不强制使用.mdf、.ndf 和.ldf文件扩展名,但使用这些扩展名可以帮助标识文件的用途。

文件组

文件组是SQL Server 2012数据文件的一种逻辑管理单位,它将数据库文件分成不同的文件组,方便于对文件的分配和管理。

文件组主要分为以下两种类型:

主文件组:包含主要数据文件和任何没有明确指派给其它文件组的文件。系统表的所有页都分配在主文件组中。

用户定义文件组:主要是在CREATE DATABASE或ALTER DATABASE语句中,使用FILEGROUP关键字指定的文件组

每个数据库中都有一个文件组作为默认文件组运行,默认文件组包含在创建时没有指定文件组的所有表和索引的页。在没有指定的情况下,主文件组作为默认文件组。
对文件进行分组时,一定要遵循文件和文件组的设计规则:
文件只能是一个文件组的成员。
文件或文件组不能由一个以上的数据库使用。
数据和事务日志信息不能属于同一文件或文件组。
日志文件不能作为文件组的一部分。日志空间与数据空间分开管理。
注意:系统管理员在进行备份操作时,可以备份或恢复个别的文件或文件组,而不用备份或恢复整个数据库

四个系统数据库

SQL Server 2012的安装程序在安装时默认将建立4个系统数据库(Master、Model、Msdb和Tempdb)。

master数据库
master数据库是SQL Server 2012中最重要的数据库。记录 SQL Server 实例的所有系统级信息,包括实例范围的元数据、端点、链接服务器和系统配置设置。

tempdb数据库
tempdb是一个临时数据库,用于保存临时对象或中间结果集。

model数据库
用作 SQL Server 实例上创建的所有数据库的模板。对 model 数据库进行的修改(如数据库大小、排序规则、恢复模式和其他数据库选项)将应用于以后创建的所有数据库。

msdb数据库
用于 SQL Server 代理计划警报和作业。

操作数据库

创建数据库
在SQL Server创建用户数据库之前,用户必须设计好数据库的名称以及它的所有者、空间大小和存储信息的文件和文件组。

以界面方式创建数据库

1.启动SQL Server Management Studio,并连接到SQL Server 2012中的数据库。
2.鼠标右键单击“数据库”选项,在弹出的快捷菜单中选择“新建数据库”命令。
3.进入“添加库”对话框。在列表框中填写数据库名“DB_InLett”,单击“确定”按钮,添加数据库成功。
常规”选项卡:用于设置新建数据库的名称。
“选项”和“文件组”选项卡:定义数据库的一些选项,显示文件和文件组的统计信息。这里均采用默认设置。
说明:SQL Server 2012默认创建了一个PRIMARY文件组,用于存放若干个数据文件。但日志文件没有文件组。
4.单击“所有者”的浏览按钮,在弹出的列表框中选择数据库的所有者。数据库所有者是对数据库具有完全操作权限的用户,这里选择“默认值”选项,表示数据库所有者为用户登录Windows操作系统使用的管理员账户,Administrator。
注意:
SQL Server 2012数据库的数据文件分逻辑名称和物理名称。逻辑名称是在SQL语句中引用文件时所使用的名称;物理名称用于操作系统管理。
5.在“数据库名称”文本框中输入新建数据库的名称“DB_InLett”,数据库名称设置完成后,系统自动在“数据库文件”列表中产生一个主要数据文件(初始大小为8MB)和一个日志文件(初始大小为8MB),同时显示文件组、自动增长和路径等默认设置,用户可以根据需要自行修改这些默认的设置,也可以单击右下角的“添加”按钮添加数据文件。这里主要数据文件和日志文件均采用默认设置。

使用CREATE DATABASE语句创建数据库

CREATE DATABASE DB_InLett
ON PRIMARY
(
    NAME='DB_InLett.MDF',
    FILENAME='E:\Y0527DotNet班\0806SQLServer数据库表的基本操作\DB\DB_InLett.MDF',
    SIZE=16MB,
    FILEGROWTH=8MB,
    MAXSIZE=UNLIMITED
)
LOG ON
(
    NAME='DB_InLett.LDF',
    FILENAME='E:\Y0527DotNet班\0806SQLServer数据库表的基本操作\DB\DB_InLett.LDF',
    SIZE=16MB,
    FILEGROWTH=8MB,
    MAXSIZE=UNLIMITED
)

修改数据库

数据库创建完成以后,用户在使用过程中可以根据需要对其原始定义进行修改。修改的内容主要包括以下几项:
1.更改数据库文件
2.添加和删除文件组
3.更改选项
4.更改跟踪
5.更改权限
6.更改扩展属性
7.更改镜像
8.更改事务日志传送

以界面方式修改数据库

1.启动SQL Server Management Studio,并连接到SQL Server 2012中的数据库,在“对象资源管理器”中展开“数据库”节点。
2.鼠标右键单击需要更改的数据库“DB_InLett”选项,在弹出的快捷菜单中选择“属性”命令。
3.进入“数据库属性”对话框,通过该对话框可以修改数据库的相关选项。
4.单击“数据库属性”对话框中的“文件”选项卡,然后单击“所有者”后的浏览按钮,弹出“选择数据库所有者”对话框。
5.单击“浏览”按钮,弹出“查找对象”对话框。通过该对话框选择匹配对象。
6.在“匹配的对象”列表框中选择数据库的所有者“sa”选项,单击“确定”按钮,完成数据库所有者的更改操作。
使用ALTER DATABASE 语句修改数据库

ALTER DATABASE database_name

{ADD FILE<filespec>[,…n][TO FILEGROUP filegroup_name]

|ADD LOG FILE<filespec>[,…n]
|REMOVE FILE logical_file_name
|ADD FILEGROUP filegroup_name
|REMOVE FILEGROUP filegroup_name
|MODIFY FILE<filespec>
|MODIFY NAME=new_dbname
|MODIFY FILEGROUP filegroup_name{filegroup_property|NAME=new_filegroup_name}
|SET<optionspec>[,…n][WITH<termination>]
|COLLATE<collation_name>

}

删除数据库

如果用户不再需要某一数据库时,只要满足一定的条件即可将其删除,删除之后,相应的数据库文件及其数据都会被删除,并且不可恢复。

删除数据库时必须满足以下条件:

如果数据库涉及日志传送操作,在删除数据库之前必须取消日志传送操作。

若要删除为事务复制发布的数据库,或删除为合并复制发布或订阅的数据库,必须首先从数据库中删除复制。如果数据库已损坏,不能删除复制,可以先将数据库设置为脱机状态,然后再删除数据库。

如果数据库上存在数据库快照,必须首先删除数据库快照。

以界面方式删除数据库

1.启动SQL Server Management Studio,并连接到SQL Server 2012中的数据库。在“对象资源管理器”中展开“数据库”节点
2.鼠标右键单击要删除的数据库“DB_InLett”选项,在弹出的快捷菜单中选择“删除”命令。
3.在弹出的“删除对象”对话框中单击“确定”按钮即可删除数据库。
注意:
4.系统数据库(msdb、model、master、tempdb)无法删除。删除数据库后应立即备份master数据库,因为删除数据库将更新master数据库中的信息。

使用DROP DATABASE语句删除数据库
DROP DATABASE database_name [ ,…n ] --如果有多个要删除的数据库,用逗号隔开
其中database_name是要删除的数据库名称,中括号内为多个数据库的情况。
注意:
使用DROP DATABASE命令删除数据库时,系统中必须存在所要删除的数据库,否则系统将会出现错误
另外,如果删除正在使用的数据库,系统将会出现错误。
例如,不能在“学生档案管理”数据库中删除“学生档案管理”数据库,SQL代码如下:
Use 学生档案管理 --使用学生档案管理数据库
Drop database 学生档案管理 --删除正在使用的数据库
删除学生档案管理数据库的操作没有成功,系统会报错。