数据库原理与应用教程―SQLServer第5章数据库的概念和操作第5章数据库的概念和操作SQLServer的数据库是有组织的数据的集合,这种数据集合具有逻辑结构并得到数据库系统的管理和维护。数据库由包含数据的基本表和对象(如视图、索引、存储过程和触发器等)组成,其主要用途是处理数据管理活动产生的信息。对数据库的操作是开发人员的一项重要工作。本章首先介绍数据库的基本概念,然后以实例的形式介绍数据库的创建、修改和删除操作。第5章数据库的概念和操作5.1数据库基本概念数据库是SQLServer2008存放表和索引等数据库对象的逻辑实体。数据库的存储结构分为逻辑存储结构和物理存储结构两种。5.1.1物理数据库数据库的物理存储结构指的是保存数据库各种逻辑对象的物理文件是如何在磁盘上存储的,数据库在磁盘上是以文件为单位存储的,SQLServer2008将数据库映射为一组操作系统文件。数据库中所有的数据和对象都存储在操作系统文件中。第5章数据库的概念和操作1.SQLServer2008的数据库文件的类型SQLServer2008的数据库具有三种类型的文件:(1)主数据文件:主数据文件是数据库的起点,指向数据库中的其他文件。每个数据库都有且只有一个主数据文件。主数据文件的推荐文件扩展名是.mdf。(2)辅助数据文件:除主数据文件以外的所有其他数据文件都是辅助数据文件。某些数据库可能不含有任何辅助数据文件,而有些数据库则含有多个辅助数据文件。辅助数据文件的推荐文件扩展名是.ndf。第5章数据库的概念和操作(3)事务日志文件:日志文件包含着用于恢复数据库的所有日志信息。每个数据库必须至少有一个日志文件,当然也可以有多个。SQLServer2008事务日志采用提前写入的方式,即对数据库的修改先写入事务日志中,然后再写入数据库。日志文件的推荐文件扩展名是.ldf。第5章数据库的概念和操作2.数据库文件组为了便于管理和分配数据而将文件组织在一起,通常可以为一个磁盘驱动器创建一个文件组(FileGroup),将多个数据库文件集合起来形成一个整体。SQLServer中的数据库文件组分为主文件组(PrimaryFileGroup)和用户定义文件组(user_definedGroup)。(1)主文件组:主文件组包含主要数据库文件和任何没有明确指派给其他文件组的其他文件。数据库的系统表都包含在主文件组中。(2)用户定义文件组:用户定义文件组是在CREATEDATABASE或ALTERDATABASE语句中,使用FILEGROUP关键字指定的文件组。第5章数据库的概念和操作文件组应用的规则:(1)一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用。(2)主文件组中包含了所有的系统表。当建立数据库时,主文件组包括主数据库文件和未指定组的其它文件。(3)在创建数据库对象时如果没有指定将其放在哪一个文件组中,就会将它放在默认文件组中。如果没有指定默认文件组,则主文件组为默认文件组。(4)事务日志文件不属于任何文件组。第5章数据库的概念和操作5.1.2逻辑数据库数据库是存储数据的容器,即数据库是一个存放数据的表和支持这些数据的存储、检索、安全性和完整性的逻辑成分所组成的集合。组成数据库的逻辑成分称为数据库对象,SQLServer2008中的逻辑对象主要包括数据表、视图、同义词、存储过程、函数、触发器、规则,以及用户、角色、架构等。每个SQLServer都包含两种类型的数据库:系统数据库和用户数据库。第5章数据库的概念和操作系统数据库存储有关SQLServer的信息,SQLServer使用系统数据库来管理系统,例如,下面将要介绍的master数据库、model数据库、msdb数据库和tempdb数据库。而用户数据库由用户来建立,例如,教学库数据库。SQLServer可以包含一个或多个用户数据库。第5章数据库的概念和操作1.master数据库顾名思义,master数据库是SQLServer2008中的主数据库,它是最重要的系统数据库,记录系统中所有系统级的信息。它对其他的数据库实施管理和控制的功能,同时该数据库还保存了用于SQLServer管理的许多系统级信息。master数据库记录所有的登录账户和系统配置,它始终有一个可用的最新master数据库备份。第5章数据库的概念和操作2.model数据库model数据库为用户新创建的数据库提供模板,它包含了用户数据库中应该包含的所有系统表的结构。当用户创建数据库时,系统会自动地把model数据库中的内容复制到新建的用户数据库中。用户在系统中新创建的所有数据库的内容,最初都与该模板数据库具有完全相同的内容。第5章数据库的概念和操作3.msdb数据库msdb数据库供SQLServer代理程序调度警报作业以及记录操作时使用。当很多用户在使用一个数据库时,经常会出现多个用户对同一个数据的修改而造成数据不一致的现象,或是用户对某些数据和对象的非法操作等。为了防止上述现象的发生,SQLServer中有一套代理程序能够按照系统管理员的设定监控上述现象的发生,及时向系统管理员发出警报。那么当代理程序调度警报作业、记录操作时,系统要用到或实时产生许多相关信息,这些信息一般存储在msdb数据库中。第5章数据库的概念和操作4.tempdb数据库使用SQLServer系统时,经常会产生一些临时表和临时数据库对象等,如用户在数据库中修改表的某一行数据时,在修改数据库这一事务没有被提交的情况下,系统内就会有该数据的新、旧版本之分,往往修改后的数据表构成了临时表。所以系统要提供一个空间来存储这些临时对象。tempdb数据库保存所有的临时表和临时存储过程。tempdb数据库是全局资源,所有连接到系统的用户的临时表和存储过程都被存储在该数据库中。第5章数据库的概念和操作5.2数据库操作在SQLServer2008中,用户可以自己创建数据库即用户数据库,并且可以对数据库进行修改、删除等操作。5.2.1创建数据库若要创建数据库,必须确定数据库的名称、所有者、大小以及存储该数据库的文件和文件组。在SQLServer2008中创建数据库主要有两种方式:一是在SQLServerManagementStudio中使用向导创建数据库,二是通过查询窗口执行T-SQL语句创建数据库。第5章数据库的概念和操作1.在SQLServerManagementStudio中创建数据库在SQLServerManagementStudio中创建数据库的过程如下:(1)启动“SQLServerManagementStudio”,在对象资源管理器窗口的“数据库”节点上右击,选择快捷菜单中的“新建数据库”命令。第5章数据库的概念和操作(2)弹出“新建数据库”对话框,在“常规”数据页的“数据库名称”文本框中,输入要创建的数据库的名称。其中:SQLServer2008的数据库文件拥有两个名称,即逻辑文件名和物理文件名。第5章数据库的概念和操作(3)在“常规”数据页中数据文件“初始大小”处可以设置文件的初始大小(MB);单击“自动增长方式”后的按钮可设置自动增长方式和最大文件大小;单击路径后的按钮可设置文件的存放路径。第5章数据库的概念和操作(4)在“选项”数据页中,设置数据库的属性选项。在“文件组”数据页中,增加或删除文件组。在对象资源管理器窗口中展开“数据库”,可以看到新建的数据库。【例5-1】创建数据库“教学库”,主数据文件初始大小为5MB,增长方式是按10%比例自动增长;日志文件初始为8MB,按1MB增长(默认是按10%比例增长)。两个文件都不限制增长,存储位置都为“F\DATA”。第5章数据库的概念和操作8.2.1创建数据库在对象资源管理器窗口中展开“数据库”,可以看到新建的数据库,如图所示。第5章数据库的概念和操作2.使用T-SQL语句创建数据库在SQLServer2008中可以利用T-SQL语句创建数据库。T-SQL提供的数据库创建语句为CREATEDATABASE,其语法格式如下:CREATEDATABASEdatabase_name[ON[PRIMARY][filespec[,…n]][,filegroupspec[,…n]]][LOGON{filespec[,…n]}][FORLOAD|FORATTACH]filespec::=([NAME=logical_file_name,]FILENAME=‘os_file_name’第5章数据库的概念和操作filespec::=([NAME=logical_file_name,]FILENAME=‘os_file_name’[,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,FILEGROWTH=growth_increment])[,…n]第5章数据库的概念和操作说明:在T-SQL语言的命令格式中,用[]括起来的内容表示是可选的;[,…n]表示重复前面的内容;用括起来的内容表示在实际编写语句时,用相应的内容替代;用{}括起来的内容表示是必选的;类似A|B的格式,表示A和B只能选择一个,不能同时都选。第5章数据库的概念和操作【例5-2】使用CREATEDATABASE创建一个新的数据库,名称为“STUDENT1”,其他所有参数均取默认值。实现的步骤如下:①打开SQLServerManagementStudio,在窗口上部的工具栏的左侧找到“新建查询”按钮。②单击“新建查询”,在SQLServerManagementStudio的窗口右侧会建立一个新的查询页面,默认的名称为“SQLQuery1.sql”,在这个页面中可以输入要让SQLServer执行的T-SQL语句。③这里输入下面列出的创建数据库的T-SQL语句:CREATEDATABASESTUDENT1④单击工具栏中的“执行”按钮,当系统给出的提示信息为“命令已成功完成”时,说明此数据库创建成功.第5章数据库的概念和操作【例5-3】创建数据库名为“STUDENT2”的数据库,包含一个主数据文件和一个事务日志文件。主数据文件的逻辑名为“STUDENT2_DATA”,操作系统文件名为“STUDENT2_DATA.MDF”,初始容量大小为5M,最大容量为20M,文件的增长量为20%。事务日志文件的逻辑文件名为“STUDENT2_LOG”,物理文件名为“STUDENT2_LOG.LDF”,初始容量大小为5M,最大容量为10M,文件增长量为2M。数据文件与事务日志文件都放在F盘根目录。第5章数据库的概念和操作CREATEDATABASESTUDENT2ONPRIMARY(NAME='STUDENT2_DATA',FILENAME='F:\DATA\STUDENT2_DATA.MDF',SIZE=5MB,MAXSIZE=20MB,FILEGROWTH=20%)LOGON(NAME='STUDENT2_LOG',FILENAME='F:\DATA\STUDENT2_LOG.LDF',SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=2MB)第5章数据库的概念和操作【例5-4】创建一个指定多个数据文件和日志文件的数据库。该数据库名称为STUDENTS,有1个5MB和1个10MB的数据文件和2个5MB的事务日志文件。数据文件逻辑名称为STUDENTS1和STUDENTS2,物理文件名为STUDENTS1.mdf和STUDENTS2.ndf。主文件是STUDENTS1,由PRIMARY指定,辅助数据文件STUDENTS2属于新建文件组FG1,两个数据文件的最大大小分别为无限大和100MB,增长速度分别为10%和1MB。事务日志文件的逻辑名为STUDENTSLOG1和STUDENTSLOG2,物理文件名为STUDENTSLOG1.ldf和STUDENT