第一章 SQL Server数据库基础

  数据库(Database)技术是程序开发人员必须掌握的技术之一,调查数据显示,目前70%以上的应用软件都需要使用到数据库系统,也就是说,大多数应用系统都需要把数据库进行分类、存储和检索。

  本章将介绍SQL Server数据库的基本操作,例如建立数据库、表、对表实施约束以满足数据的规范性要求,本章的重点将集中在基本的增加、修改、删除和查询语句。

  有关数据库设计、数据库高级对象和复杂的查询,将在后续课程中涉及。

  本章内容主要包括与数据库相关的背景知识以及一些基本概念和术语,还包括SQL Server管理器(SQL Server Management Studio)的基本操作,以及在管理器中创建和配置数据库的方法等。

1.1 使用数据库的必要性

  统计表明,2006年全球制造、复制出的数字信息量共计1610亿GB,大约是有史以来出版的图书信息总量的300万倍。从2006-2010年,数字信息量将增长6倍多。中国的数字信息量为127.1亿GB,占全球信息量的7.9%,这些信息大多数都基于多媒体内容、用户创建内容、16亿网民创建和传阅的信息,到2010年,全球数字信息量预计为9880亿GB。

  大量的数据、信息在不断产生,伴随而来的是如何安全有效地存储、检索、管理它们。对数据的有效存储、高校访问、方便共享和安全控制等问题成为信息时代的一个非常重要的问题。

  使用数据库可以高校且条理分明地存储数据,它使人们能够更加迅速和方便地管理数据,主要体现在以下几个方面。

  (1)可以机构化存储大量的数据信息,方便用户进行有效的检索和访问。数据库可以对数据进行分类保存,并且能够提供快速的查询,例如我们去Google搜索我们想要的数据,实际上,Google也是基于数据库和数据分类技术来达到快速搜索的目的的。

  (2)可以有效地保持数据信息的一致性、完整性,降低数据冗余。保存在数据库中的数据,可以很好地保存数据有效,不被破坏,而且数据自身有避免重复数据的功能,以此来降低数据的冗余。

  (3)可以满足应用的共享和安全方面的要求。

  把数据库放在数据库中在很多情况下也是出于安全的考虑,例如,如果把所有员工的信息、工资数据都放在磁盘文件上,那么工资的保密性就无从谈起,如果把员工信息和工资信息放在数据库中,则可以只允许查询和修改员工信息,而工资信息只允许财务人员查看,从而可以保证数据的安全性。

  (4)数据库技术能够方便智能化地分析,产生新的有用信息。

  例如,超市中把物品销售信息保存在数据库中,每个月销售情况的排名情况实际上决定下个月进货数量,数据库查询的信息实际上产生了新的“信息”。

  数据挖掘、联机分析技术最近发展非常快,其核心意义在于从一堆数据中分析出有用的新信息。

1.2 DBMS(数据库管理系统)的发展史

  数据库系统从20世纪50年代萌芽,20世纪60年代中期产生,到21世纪初,已经有40多年的历史,其间发生的巨大变化和得到的巨大成就是其他技术所远不及的。短短40年间,已经从第一代的网状、层次数据库,第二代的关系数据库系统,发展到第三代以面向对象模型为主要特征的数据库系统。其中,数据库技术与网络通信技术、人工智能技术、面向对象程序设计技术、并行计算技术等相互渗透,互相结合,成为当前数据库技术发展的主要特征。

 

1.2.1 萌芽阶段---文件系统

  文件系统是数据库系统的初级阶段,它出现在20世纪50-60年代,可以提供简单的数据共享和管理,但无法提供完整统一的管理和数据共享能力。

  由于它的功能较为简单,均附属于操作系统,并不成为独立的软件,所以一般把它视为数据库系统的原形,而不是严格意义上的数据库系统。

  基于文件系统的数据库系统虽然功能简单,但因为文件系统通常都能提供目录结构简单的文件组织形式,又往往直接作为操作系统的基本用户界面提供给客户使用,所以在管理较少、较为简单的数据,或者仅仅只是用来备份存储,极少用来查询,或查询要求比较简单的情况下,能够满足一定的应用需求。

  例如:企业员工提交工作计划、工作日志,常常使用电子文档的方式提交,这些提交的电子文档常被要求保存为具有格式名称的Word文件或纯文本文件,这样做有时候会很方便。文件压缩工具(如 ZIP 工具)和文件打包工具(如 TAR 工具)都是这个阶段的产物,并一起发展升级,现在还被广泛应用。

1.2.2 初级阶段---第一代数据库

  自20世纪60年代起,第一代数据库系统相继问世,它们是层次模型与网状模型的数据库系统,为统一管理和共享数据提供了有力的支撑。在这个时期,由于数据库系统的蓬勃发展,形成了注明的“数据库时代”。当然,这两种类型的数据库系统也有一定的不足,最主要的是,它们均脱胎于文件系统,因此,受文件物理结构的影响较大,用户在使用数据库时,需要对数据的物理结构有详细的了解,这对使用数据库的人员带来了许多麻烦。同时,数据库中表示数据模式的机构方式过于繁琐,也影响了数据库应用中越来越多的对数据结构的复杂要求的实现。

  在这个阶段中,网状模型的数据库由于它的复杂性、专用性,没有被广泛使用,而在层次模型数据库中,IBM公司的IMS(Information Management System,信息管理系统)层次模型数据库系统得到了极大的发展,不仅一度成为最大的数据库管理系统,拥有巨大的客户群,而且直到现在,仍然得到升级和支持,并不断与新技术结合,在特定的领域内体现出强大的生命力。

1.2.3 中级阶段---第二代数据库

  20世纪70年代初,随着数学基础方面取得的巨大成就,第二代数据库---关系数据库开始萌芽。

  自1970年IBM研究员德加·考特发表论文,阐述了关系模型的概念后,IBM大力投入关系数据库的研究。关系模型的数据库底层实现起来比较容易,所以很快被采用,并进入了众多商业数据库的研发计划,Oracle就是当时应关系数据模型的出现,而成立的一家专做(关系)数据库的公司。20世纪80年代初,IBM公司的关系数据库系统DB2问世,而Oracle公司将Oracle移植到桌面计算机上,这时,作为第二代数据库系统的关系数据库开发逐步取代层次与网状模式的数据库,成为占主导地位的数据库,成为行业主流。到目前为止,关系型数据库系统仍居数据库应用的主要地位。

  关系数据库系统使用结构化查询语句(Stuctured Query Language,SQL)作为数据库定义语言(Database Definition Language)和数据库操作语言(Database Manipulation Language),这种语言和普通的面向过程的语言(如 C 语言)以及面向对象的语言(如 C++)不同,它一诞生,就成为关系数据库的标准语言。SQL语言使得关系数据库中的数据库表查询可以用简单的、声明性的方式进行,大大简化了程序员的工作。

1.2.4 高级阶段---新一代数据库

  由于计算机应用的发展,计算机已从传统的科学计算、事物处理等领域,逐步扩展到工程设计统计、人工智能、多媒体、分布式等领域,这些新的领域需要新的数据库支撑,而传统的关系数据库系统是以商业应用、事务处理为背景而发展起来的,它并不完全适用于新领域。因此,需要有新的数据库系统,以满足不同领域的要求。

  同时,在现实环境中,考虑到商业应用的目标,数据库生产厂商各自为数据库加入了一些提高效率和提高可用性的功能,舍弃了一些不太现实的约束,不同的数据库厂商在不同基础上选择,导致了关系数据库系统向不同方向上变迁。比如,在这个阶段中,Oracle加入了“并行”的元素,并开始了向“关系---对象”型数据库的变迁,这样的变迁也慢慢形成了新一代的数据库系统,并且“关系---对象”型数据库正在持续发展。

  但是在商务应用方面,目前依然是关系数据库的天下。

1.3 当今常用数据库简介

  在数据库技术日益发展的今天,主流数据库代表着成熟的数据库技术,了解常用的数据库,就能知道数据库技术发展至今的程度,以及未来的发展趋势。

  20世纪80-90年代是关系数据库产品发展和竞争的时代。在市场逐渐淘汰了第一代数据库管理系统的大局面下,SQL Server、Oracle、IBM DB2等一批很有实力的关系数据库产品走到了主流商用数据库的位置。

1.3.1 SQL Server 简介

  SQL Server是Microsoft(微软)公司的数据库产品,Microsoft SQL Server脱胎于Sybase SQL Server。

  以下是Microsoft公司推出的几个SQL Server的版本和日期。

  (1)1996年:SQL Server 6.5。

  (2)1998年:SQL Server 7.0。

  (3)2000年8月:SQL Server 2000。

  (4)2005年12月:SQL Server 2005。

  SQL Server 2005提供的主要版本如下所示。

  1. 企业版(SQL Server 2005 Enterprise Edition)

  最全面的版本,支持所有的SQL Server 2005提供的功能,能满足大型企业复杂的业务需求。

  2. 标准版(SQL Server 2005 Standard Edition)

  适用于中小型企业的需求,在价格上比企业版有优势。

  3. 工作组版(SQL Server 2005 Workgroup Edition)

  适用于大小和数量没有限制的企业,作为入门数据库是最好的选择。

  4. 开发板(SQL Server 2005 Developer Edition)

  覆盖了企业版所有的功能,并且能够生成应用程序,但是只允许作为开发和测试系统,不允许作为生产系统。

  5. 评估板(SQL Server 2005 Evaluation Edition)

  有180天使用时间限制的评估和试用版。

  在设计上,Microsoft SQL Server大量利用了Microsoft Windows操作系统的底层机构,直接面向Microsoft Windows,尤其是NT系统服务器操作系统的用户。它基本上不能移植到其他操作系统上,就算勉强移植,也无法得到很好的性能。

  Microsoft SQL Server作为一个商业化的产品,它的优势是Microsoft产品所共有的易用性。Microsoft Windows 拥有最多的用户群,Microsoft所有的产品都遵循相似、统一的操作习惯,一个对数据库基本概念熟悉的Windows用户,可以很快地学会使用SQL Server,上手比较容易,Windows系统的易用性,也让数据库管理员可以更容易、更方便、更轻松地进行管理。

  现在,Microsoft SQL Server在2005版之后,针对市场的需求,不断扩展其性能,使得SQL Server在网络数据库服务、电子商务等越来越多的行业展示了强大的性能和易用性。

1.3.2 Oracle 简介

  Oracle是Oracle(甲骨文)公司的数据库产品。

  Oracle数据库系统号称世界上最好的数据库系统,有很长的历史。Oracle公司成立于1977年,最初就是专门的数据库公司,为大、中、小型计算机提供数据库产品,Oracle在那时就已经出现并且相当成熟。1984年,Oracle公司将Oracle移植到台式计算机上时,Oracle的版本就已经是4.0;然后,Oracle 5.0率先推出了分布式数据库、客户/服务器结构等崭新的概念;Oracle 6不仅有更为高级的技术,还开始支持对称多处理机(SMP);在Oracle 8中加入了对象技术,成为“关系---对象”数据库系统;20世纪90年代末期,随着网络浪潮的到来,Oracle推出了更新的版本---9i,全面支持Internet应用(i 是指Internet),在企业级在线电子商务的领域内,保持自己的优势。

  目前,Oracle产品已经覆盖了包括个人计算机在内的大、中、小型机等几十个机型,Oracle数据库成为世界上使用最广泛的数据库系统。

  Oracle公司在数据库领域一直处于领先地位,不仅数据库核心相当优秀,其相关的支持产品也相当完善和全面,Oracle能适应70多种操作系统,这也是其他产品难以企及的优势。当然,正因为要支持这么多的操作系统,Oracle的配置、管理、系统维护就成为一种专门的技术,设计到比较多的、系统的专业知识。

1.3.3 DB2 简介

  自1970年提出“关系模型”开始,IBM就投入巨资,开展包括“SystemR”和“SystemR*”项目在内的关系数据库技术的研究,13年后,在“SystemR”和“SystemR*”项目的基础上,DB2以SystemR为原形面世。

  DB2支持从PC到UNIX,从中小型机到大型机,从IBM到非IBM(HP及SUN UNIX系统等)的各种操作系统平台。它既可以在主机上以主/从方式独立运行,也可以在客户/服务器环境中运行,但是DB2服务器端的最佳运行环境还是IBM自己的操作系统平台OS/400。

  DB2数据库核心又称作DB2通用服务器,不但可以运行于多种操作系统之上,而且它根据相应的平台环境做了调整和优化,以便能够打到较好的性能,由于IBM公司在商用服务器领域内的长期优势,在全球500强的企业中,超过80%的企业使用过DB2作为数据库平台。

  其他的数据库如SyBase、MySQL等,在不同的行业、不同的应用场合中也有一定的应用。

1.4 数据库的基本概念

  对数据库的基本概念的掌握,有助于理解和学习后续的知识。

1.4.1 实体和记录

  在生活中,我们经常会听到“实体”(Entity)一词,例如一个生产单位,就可以被称为实体。在数据库概念中,实体是所有客观存在的、可以被描述的事物,例如计算机、人、课本、桌子甚至课本的结构,都属于客观存在的,可以被描述的,这些都称为实体。

  在计算机描述这些实体的时候,采用的方法是针对这些实体所具有的“特性”进行表述的,例如针对人和书本,描述的方面是不一样的,针对人,我们可能说明其编号、姓名、年龄、民族、收入以及职业等,而对书本,我们要描述的重点应当是书本的价格、章节数、页数、作者、出版社、出版日期等。

  再深入考虑一下,对不同的人的描述,其实都可以在编号、姓名、年龄、民族、收入以及职业几个方面进行描述,这些描述都是一样的格式,但是具体到不同的人的编号、姓名、年龄、民族、收入以及职业等是不一样的,因此,我们发现,只要是对人的描述,描述的“格式”都是一样的,在这种格式下,不同的数据体现了不同的实体。

  数据库中的数据就是按照这种格式进行存储的,而不是杂乱无章的,相同“格式”和类型的数据统一存放在一起,而不会把人和书本混在一起存储,这样,数据的存储就能够像图中那样有条不紊了。

编号 姓名 年龄 民族 收入 职业    
1 张三 33 4,000.00 IT <------------------------------ 实体1
2 李四 27 5,000.00 IT <------------------------------ 实体2
3 王五 30 6,000.00 IT <------------------------------ 实体3
4 赵六 32 7,000.00 IT <------------------------------ 实体4
5 贾七 25 8,000.00 IT <------------------------------ 实体5

 

 

   

 

 

    

  

  观察图,数据库中存储的数据,每一“行”(Row)实际上对应一个实体,这样的一行,在数据库中,通常叫做“一行记录”(Record)。

  表中的每一个输入项,叫做“列”,编号、姓名、年龄、民族、收入、职业都是列名。

1.4.2 数据库和数据库表

  从上图中,我们其实就可以得知,不同的记录组织在一起,形成了数据库的“表”(Table),也可以说,表是实体的集合,是用来存储具体的数据的。

  那么,上面提到的书本的信息存储在哪儿呢?

  跟人的信息一样,书本的信息也应当存储在另外一张表中,但是需要注意的是,并不是每一张表就是一个数据库,那么数据库和表存在怎样的关系呢?

  简单地说,数据库就是表的集合,如图所示:

  

  通常,数据库并不是简单地存储这些实体的数据,它还要求表达实体之间的关系,如:书本和人是存在联系的。实体之间并不是互不相干的,例如书本的作者,可能就是某个人,因此需要简历书本与人的“关系”(Relationship),这种关系也需要用数据库来表示,因此“关系”的描述也是数据库的一部分。

  在早期数据库技术并不发达的时候,“实体”之间的“关系”常用关系表达式来表达。在数据库技术相当发达的今天,很多“关系”被高度抽象,成为较统一的概念,通过键、类型、规则、权限、约束、触发器等抽象概念来表达。

  随着数据库的发展和需求的增加,数据库还产生了其他许多辅助的功能,例如进行全文检索、为保密和方便所产生的存储过程、视图、操作数据行的游标等,这些操作对象也逐渐成为数据库的一部分。

1.4.3 数据库系统和数据库管理系统

  数据库管理系统(DBMS)是一种系统软件,由一个互相关联的数据集合和一组访问数据的程序结构。这个数据集合通常称作数据库,其中包含了有用的数据信息,数据库管理系统的基本目标是要提供一个可以方便有效地存取数据库信息的环境。

  数据库管理系统的主要功能是维护数据库,并有效地访问数据库中各个部分的数据。图中表示了数据库管理系统与数据库的关系。

  数据库系统(DBS)是一个实际可运行的软件系统,可以对系统提供的数据进行存储、维护和应用,它是由存储介质、处理对象和管理系统共同组成的集合体。它通常由软件、数据库和数据库管理员组成。

  数据库由数据库管理系统统一管理,数据的插入、修改和检索都要通过数据库管理系统进行。

  数据库管理员(DBA)在数据库系统中负责创建、监护和维护整个数据库,使数据能被任何有权限使用的人有效使用。下图表示了数据库系统的总体结构。

1.4.4 数据冗余(Redundance)和数据完整性(Integrality)

  在数据库系统中,数据重复的现象就是数据冗余。

  比如,在企业员工信息数据库中,使用表1列出的数据库表来记录员工信息。

      表1 个人信息统计表

编 号 姓 名 年 龄 民 族 部 门
1 张三 30 汉族 人事管理部
2 李四 25 汉族 人事管理部

  显然,两条记录中出现的“汉族”和“人事管理部”就可以认为是数据冗余,因为存在重复的数据,有简化的必要。

  减少数据冗余最常见的方法是分类存储。对上面的例子做如下变化,见表2~4。

      表2 修改后的个人信息统计表

编 号 姓 名 年 龄 民族编号 部门编号
1 张三 30 1 1
2 李四 25 1 1

      表3 民族编码表

民族编码  民 族
1 汉族
2 回族

      表4 部门编码表

部门编码  部 门
1 人事管理部
2 市场销售部

  通过这样的方法,可以减少数据冗余,但会增加数据查找的复杂性。例如:如果要查找民族为“汉族”的员工信息,原来只需要查找一个表,现在就需要先检索表3,然后还要一句部门的编码检索表4,这样无疑增加了查找的复杂性,降低了效率,因此在数据库中,通常允许有必要的冗余。

  数据的完整性是指数据库中数据的准确性。如果两个或更多的表由于其存储的信息而相互关联,那么只要修改了其中一个表,与之相关的所有表都要作出相应的修改,如果不这么做,存储的数据就会不再准确,也就是说,失去了数据的完整性。

  例如:在一个图书馆系统中,一个会员要退会,更新了成员表,但是却没有更新记录会员借走和归还的书籍的详细资料表,因此,尽管这个人已不再是图书馆的会员,但书籍借阅和归还资料表中却仍然存在他的借出或者归还的书籍的信息,设置有可能在月底结算罚金数时,这个不存在的会员可能会被罚款,这种不能正确反映实际情况的数据不具备完整性。

  数据冗余和数据完整性通常是由于设计引起的,实际要求数据库不能存在大量的数据冗余,并且数据库要确保数据的完整性。

1.5 SQL Server2005管理器

  安装完SQL Server2005企业版之后,在“开始”菜单上可以看到SQL Server2005的组成部分。SQL Server Management Studio是数据库管理的集成环境,进入主界面之前要进行数据库的连接。

 

  连接SQL Server数据库时需要注意以下两点:

  (1)在连接SQL Server之前,SQL Server服务必须已经启动,可以在操作系统的“服务”项中启动SQL Server2005的服务。(我的电脑,右键,管理,服务和应用程序,服务)

  (2)SQL Server Management Studio 可以连接和管理多个其他计算机上的SQL Server数据库,在每一个数据库连接下,都具有该数据库服务器下的数据库,而每一个数据库下,都具有“关系图”、“表”、“视图”等数据库对象。

  SQL Server中的数据库按照用途可以划分为如下两种。

  -- 系统数据库。

  -- 用户数据库。

  其中,系统数据库是管理和维护SQL Server所必需的数据库,用户数据库是用户自己简历的数据库。

  Microsoft SQL Server 提供了以下4个系统数据库。

  1. Master 数据库

  Master数据库记录SQL Server系统的所有系统级别信息,包括如下三点。

  --- 所有的登录账户和系统配置设置。

  --- 所有其他的数据库及数据库文件的位置。

  --- SQL Server的初始化信息。

  2. Tempdb 数据库

  Tempdb 数据库保存所有的临时表和临时存储过程,以及临时生成的工作表。

  Tempdb 数据库在SQL Server每次启动时都重新创建。

  3. Model 数据库

  Model 数据库用作在系统上创建的所有数据库的模版,例如,使用SQL语句创建一个新的空白数据库时,将使用模版中规定的默认值来创建。

  4. Msdb数据库

  Msdb 数据库供SQL Server代理程序调度警报、作业以及记录操作时使用。

1.5.1 新建一个数据库连接

  上面已经提到,SQL Server Management Studio可以连接多个SQL Server服务器,新建立一个数据库连接的操作步骤如下。

  (1)在菜单中选择“文件”->“连接对象资源管理器”选项,弹出“连接到服务器”对话框

  (2)在“服务器名称”下拉列表框中,可以选择已经连接过的服务器,也可以选择“<浏览更多...>”选项来选择其他的服务器

  (3)在上图中,还需要选择身份验证的方式,SQL Server支持以下两种身份验证。

  --- Windows 身份验证。

  --- SQL Server身份验证。

  简单地说,Windows身份验证是使用当前登录到操作系统的用户去登录,而SQL Server身份验证是使用SQL Server中建立的用户去登录。

  登录验证通过以后,就可以像管理本机SQL Server一样来管理远程机上的SQL Server服务。

1.5.2 新建数据库登录名

  在使用SQL Server的时候,通常需要以某个用户登录到SQL Server,特别是多用户共用SQL Server服务的情况需要对用户进行管理。

  上面提到过,在SQL Server数据库中可以建立独立的用户,“用户”在SQL Server中叫做“登录名”。建立数据库连接以后,可能第一件事情就是要建立用户,使用特定的用户来管理数据库和数据库对象。

SQL Server 安装以后,有一个超级管理员叫“sa”(Supper Administrator的简称),但是一般不要使用这个用户管理数据,也不能把这个用户的密码设置为空,随便使用该用户操作、密码设置唯恐都将给数据库带来很大的安全隐患。

  建立数据登录名的步骤如下。

  (1)在“安全性”节点上,右击“登录名”,在右键菜单中选择“新建登录名”选项

  (2)在新建登录对话框中输入用户名的名称、SQL Server身份的密码,并指定其默认的数据库,确定登录名和密码时需要注意以下两点。

    ①登录名默认是“Windows 身份验证”,可以选择可添加域用户或者工作组用户作为登录名,图选择为“SQL Server 身份验证”。

    

    

    ②可以打勾选中“强制实施密码策略”复选框,对用户输入的密码提出要求。

    

密码策略只有Windows 2003以上的操作系统才会有,它要求增加密码的复杂程度来防止破解,以增加安全性,要求符合以下三个条件。

(1)密码不得包含三个或者三个以上两端用“空白”(空格、制表符、回车符等)或“-”、“_”、“#”字符连续字母数。

(2)密码长度至少为6个字符。

(3)密码包含以下4类字符中的三类。

    英文大写字母(A~Z)    英文小写字母(a~z)  10个基本数字(0~9)   非字母数字(例如:!、$、#、%)

  (3)有了用户名以后,还需要赋予该用户操作权限,操作权限分为两类:

    第一类是指该用户在服务器范围内能够执行哪些操作,这一类权限由固定的服务器角色来确定,可以在“服务器角色”一项中设置该用户对服务器的操作权限。固定的服务器角色一共分为8种,并且各自具有不同的操作权限,例如:dbcreator固定服务器角色可以创建、更改、删除和还原任何数据库。

    

    第二类权限是指该用户对指定的数据库的操作权限,可以在“用户映射”一项中设置特定数据库的权限。固定的数据库操作权限有10个,如db_backupoperator权限可以备份数据库、db_datareader可以读取数据库中的数据、db_denydatareader不允许读取数据。

    创建该用户后,该用户就可以登录到SQL Server数据库,并可以执行权限范围内的相关操作。

    

1.6 创建和管理SQL Server数据库

1.6.1 创建数据库

  自创建数据库之前,需要先了解与数据库文件相关的几个概念。

  在SQL Server中,数据库在磁盘上存储的文件不但包括数据库文件本身,还包括事务日志文件,一个数据库至少应包含一个数据库文件和一个事务日志文件。

  1. 数据库文件(Database File)

    数据库文件是存放数据库数据和数据库对象的文件,一个数据库可以有一个或多个数据库文件。一个数据库文件只属于一个数据库。当有多个数据库文件时,有一个文件被定义为主数据库文件(Primary Database File),主数据库文件的扩展名为.mdf,它用来存储数据库的启动信息数据。一个数据库只能有一个主数据库文件,其他数据库文件被成为次数据库文件(Secondary Database File)。

  2. 事务日志文件(Transaction Log File)

    事务日志文件用来记录数据库的更新情况,在对数据库进行操作的时候,数据库中内容更改的操作信息都会记录在此文件中。

    事务日志文件的文件扩展名为.ldf,一个数据库可以有一个或多个事务日志文件。                         事务日志文件不属于任何文件组。

  3. 文件组(File Group)

    类似与文件夹,文件组主要用于分配磁盘空间并进行管理,每个文件组有一个组名,与数据库文件一样,文件组也分为主文件组(Primary File Group)和次文件组(Secondary File Group)。

  在SQL Server Management Studio中,可以按下列步骤来创建数据库。

  (1)在“数据库”的右键菜单中选择“新建数据库”选项。

  (2)建立数据库的时候,首先要输入数据库的名称。

  

  从上图中可以看出,在建立数据库的时候同时要指定数据库文件和事务日志文件,默认情况下数据库文件的文件名称与数据库名称一样,而事务日志文件的文件名需要加一个“_Log”作为文件名,但是这两个文件的文件名都可以直接单击修改。

  其次是文件大小的设置,默认情况下,数据文件大小为3MB、事务日志文件大小为1MB,很显然,随着数据库中数据的增加,需要随时增加文件的大小来存放数据,因此必须有一个文件增长的策略,可以单击旁边的"..."按钮来设置文件增长策略。

  首先确定是否允许文件自动增长,若允许的话,首先选择增长的方式,是按百分比增长还是按每次固定大小地增长,其次确定是否有最大文件容量的限制,一般来说,数据文件不会设置为最大容量而事务日志文件可能会设置为最大容量。将允许事务日志文件自动增长,每次容量不够的时候固定增长5MB,但是最大容量不能超过20MB。

  (3)确定文件容量之后,还可以设置数据库的选项。

  

  数据库的选项比较多,我们主要关注以下几个选项。  

    ①兼容级别:数据库向以前的版本兼容的级别,例如可以设置为“SQL Server 2000(80)”,那么SQL Server 2000也能够识别和打开该数据库。

    ②数据库为只读:一般该项都设置为False,如果设置为True,则该数据库将不允许再写入数据。

    ③访问权限:指定哪些用户可以访问该数据库。可能值有以下三种。

      Multiple:数据库的正常状态,允许多个用户同时访问该数据库。

      Single:用于维护操作的状态,一次只允许一个用户访问该数据库。

      Restricted:只有管理员角色或者特定的成员才能使用该数据库。

    ④自动关闭:如果设置为True的话,则最后一个用户退出后,数据库会关闭并且释放资源;对那些经常被使用的数据库,此选项不要设置为True,否则会额外增加开关数据库的次数而带来负担。

    ⑤自动收缩:如果设置为True的话,则该数据库将定期自动收缩,释放没有使用的数据库磁盘空间。

  设置完毕后,单击“确定”按钮可以创建该数据库。

1.6.2 数据库管理和维护

  数据库管理和维护的操作比较多,部分管理和维护操作还需要复杂的编程,目前我们要了解以下几种操作。

  1. 分离和附加数据库

    删除数据库的操作将同时删除数据库的物理文件,有时候我们希望保留物理文件,以便在其他计算机上使用,例如,学生在SQL Server考试后,需要把数据库转换到教师的计算机上,教师才能根据数据库的情况进行评分,此时需要使用移动数据库的操作。

    移动数据库分两步进行,首先是分离数据库,然后是附加数据库。分离数据库是从服务器中移去逻辑数据库,但不会删除数据库文件;附加数据库将会创建一个新的数据库,并使用已有的数据库文件和事务日志文件中的数据。(点击选中的数据,右键,任务,分离。)

    将弹出“分离数据库”窗口,可以对数据库执行分离操作。

    单击“确定”按钮以后,分离的数据库将不再显示在数据库列表中,但是其物理文件依然在磁盘中,此时磁盘文件是可以复制、粘贴的。

    把磁盘上的数据库文件复制到其他计算机后,通过“附加”操作来恢复数据库,(点击选择数据库,右键,附加。)显示,附加数据库操作需要选择和指定数据库的文件,单击“添加”按钮可以选择数据库的文件,一般会根据选择的数据文件自动识别出日志文件,最后单击“确定”按钮可以把数据库恢复。

  2. 设置数据库状态

    除了分离和附加数据库可以执行数据库移动之外,还可以通过设置数据库的状态来达到文件复制和粘贴的目的。

    在前面设置数据库属性的时候,我们已经知道了数据库有三种状态,既正常状态、只读状态和限制访问。实际上,数据库还可以被设置为“脱机”状态。(选择数据库文件,右键,任务,脱机。)处于脱机状态的数据库,其数据文件是可以复制、粘贴的;要想使用数据库处于正常状态,需要执行右键菜单中的联机操作。

  3. 收缩数据库

    数据库在使用一段时间后,经常会出现因数据删除而造成数据库中空闲空间太多的情况,这时就需要减少分配给数据库文件和事务日志文件的磁盘空间,以免浪费磁盘空间。当数据库中没有数据时,可以通过修改数据库文件大小的属性直接改变其占用的空间,但当数据库中有数据时,这样做就会破坏数据库中的数据,因此需要使用收缩的方式缩减数据库的空间。

    有两种方式可以用来收缩数据库,第一种方式是直接收缩数据库,第二种方式是收缩数据库的单个文件。例:要收缩Pubs数据库所占用的磁盘空间为6.73MB,已经使用了3.59MB,还有3.14MB没有使用,收缩以后,分配空间和可用空间都可能减少。收缩数据库的单个文件,例:收缩文件操作有三种不同的方式,可以仅仅释放未使用的空闲,也可以直接指定数据大小直接收缩到多大,甚至可以把文件迁移到文件组中的其他文件中,该文件直接清空。

1.6.3 删除数据库

  不再使用的数据库可以被删除,以释放磁盘空间。

  在数据库的快捷菜单中选择“删除”选项,可以直接删除数据库,同事删除数据库的数据文件和日志文件。

  在删除数据库的时候必须谨慎,因为一旦删除了数据库,该数据库中的所有信息都将丢失。

  数据库的所有操作,包括数据库选项的配置,都可以使用SQL语句来完成。

    

    

转载于:https://www.cnblogs.com/jiazengtao/archive/2013/05/29/3102803.html

你可能感兴趣的:(第一章 SQL Server数据库基础)