第一章 SQL Server数据库基础
1)使用数据库的必要性
1.可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。
2.可以有效地保持数据信息的一致性、完整性,降低数据冗余。
3.可以满足应用的共享和安全方面的要求。
4.数据库技术能够方便智能化地分析,产生新的有用的信息。
2)DBMS(数据库管理系统)的发展史
萌芽阶段 文件系统
20世纪50-60年代,可以提供简单的数据共享和管理,但无法提供完整统一的管理和数据共享能力。
功能简单,附属于操作系统,并不成为独立的软件
管理较少、较简单的数据,或仅仅用来备份,极少来查询,或者查询功能比较简单的情况下,能满足一定的应用需求。
初级阶段 第一代数据库
20世纪60年代,层次模型与网状模型的数据库系统,为统一管理和共享数据提供了有力的支撑。
脱胎于文件系统,受文件物理结构的影响较大,需要用户对数据的物理结构有详细地了解。
数据库中表示数据模式的结构方式过于繁琐,也影响了数据库应用中越来越多的对数据结构的复杂要求的实现。
层次模型数据库中,IBM公司的IMS(Information Management System,信息管理系统),在特定的领域内还在广泛使用,有强大的生命力。
中级阶段 第二代数据库
20世纪70年代,,随着数学基础方面的成就,关系数据库开始萌芽。
关系数据库系统使用结构化查询语言(Structured Query Language, SQL)作为数据库定义语言和数据库操作语言,该语言一经问世,就成为关系数据库的标准语言(如:SQL Server 2005)
SQL语言使得关系数据库中的数据库表查询可以用简单的、声明性的方式进行,大大简化了程序员的工作。(如:Oracal)
高级阶段 新一代数据库
“关系-对象”型数据库正在持续发展
但在商务应用方面,目前依然是关系数据库的天下。
3)当今常用数据库简介
(暂略)
4)数据库的基本概念
1.实体和记录
实体:(Entity)
是所有客观存在的、可以被描述的事物;
描述实体的时候,采用的方法是针对这些事体所具有的“特性”进行表述;
针对同一类实体,描述的“格式”都是一样的,在同一格式下,不同的数据体现了不同的实体;
记录:(Record)
相同“格式”和类型的数据统一存放在一起,每一“行”(Row)对应一个实体;
在数据库中,这样的一行通常称作“一条记录”(Record);
每一个输入项,叫做“列”(Col)
1. 数据库和数据库表
表(table):是实体的集合,用来存储具体的数据。
数据库是表的集合。
不同的记录组织在一起,形成了数据库的“表”。
但并不是说每一张表就是一个数据库的“表”。
关系表:数据库并不是简单的存储实体数据,还要表达实体间的关系
这种关系也需要用数据库中的表来表示,称作关系表。
2. 数据库系统和数据库管理系统
数据库管理系统(DBMS)
是一种系统软件,由一个互相关联的数据集合和一组访问数据的程序构成。
其基本目标是提供一个可以方便有效地存取数据库信息的环境。
主要功能是维护数据库,并有效访问数据库中的各部分的数据。
数据库系统(DBS)
是一个实际可运行的软件系统,可以对系统提供的数据进行存储、维护和应用。
是由存储介质、处理对象、和管理系统共同组成的集合体。
通常由软件、数据库、数据库管理员组成。
数据库管理员(DBA):数据库系统中负责创建、监控和维护整个数据库,使数据能被任何有权限使用的人有效使用。
3. 数据冗余(Redundance)和数据完整性(Integrality)
数据冗余
在数据库系统中,数据重复的现象就是数据冗余。
减少数据冗余的最常见的方法是分类存储。
数据的完整性:是指数据库中数据的准确性
4. SQL Server 2005管理器
1)连接SQL Sever数据库是注意以下两点:
在连接SQL Server之前,SQL Server服务必须已经启动。
SQL Server Management Studio可以连接和管理多个其它计算机上的SQL Server数据库。
在每一个数据库连接下,都具有该服务器下的数据库;
而每一个数据库下,都有“关系图”、“表”、“视图”等数据对象
1) SQL Server中的数据库的分类
按照用途分类
系统数据库:是管理和维护SQL Server所必需的数据库
1$ Master数据库:
记录SQL Server系统的所有系
统级别信息,包括如下三点:
A. 所有的登录账户和系统配置设置
B. 所有其他的数据库及数据库文件的位置
C. SQL Server的初始化信息
2$ Tempdb数据库:
保存所有的临时表和临时存储过程,以及
临时生成的工作表;在每次SQL Server启动时
都重新创建。
3$ Model数据库:
用在系统上创建的所有数据的模板
4$ Msdb数据库:
提供SQL Server代理程序调度警报、作业
以及记录操作时使用
用户数据库:是用户自己建立的数据库
2) 登录SQL Server的两种身份验证
Windows身份验证 使用当前登录到操作系统的用户去登录
SQL Server身份验证 使用SQL Server中已建立的用户去登录
登陆验证通过后,就可以像管理本机SQL Server一样来管理远程机上的SQL Server服务。
3) 新建数据库登录名
在“安全性”节点,右击“登录名”,选择“新建登录名”
选择SQL Server身份认证
钩选“强制实施密码策略”,对用户输入的密码提出要求。
4) 设置用户操作权限
固定的服务器角色:
是指该登陆用户在服务器范围内能够执行那些操作,共8种
用户映射设定:
是指该登录用户对指定的数据库操作权限,共10个
如: db_backupoperator 备份数据库
db_datareader可以读取数据库中的数据
db_denydatareader不允许读取数据
1* 数据库文件(Database File)
是存放数据库数据和数据库对象的文件,一个数据库可以有一个或多个数据库文件。
一个数据库文件只属于一个数据库,当有多个数据库文件时,有一个文件被定义为主数据库文件(Primary Database File),其文件扩展名为。mdf。
默认情况下,与数据库名相同,并可单击修改。
用来存放数据库的启动信息数据
其他数据库文件称为次数据库文件(Secondary Database File)(次要数据库文件扩展名为: 。ndf)
2* 事务日志文件(Transaction Log File)
用来记录数据库的更新情况,在对数据库进行操作时,
数据库中内容的更改操作信息都会记录在此文件中,扩展名
为。Ldf
默认情况下,与数据库名相同,并可单击修改。
一个数据库可以有一个或多个事务日志文件
3* 文件组 (File Group):类似于文件夹
主要用于分配磁盘空间并进行管理,每个文件组有一个
组名,与数据库文件一样,文件组也分为主文件组(Primary
File Group)和次文件组(Secondary File Group)。
注意:事务日志文件不属于任何文件组
5)创建和管理SQL Server数据库
1)创建数据库
在“数据库”的右键菜单中选择“新建数据库”选项;
首先在“数据库名称”栏中输入数据库名
建立数据库同时要指定数据库文件和事务日志文件,默认情况下数据库文件和数据库名相同,事务日志文件名需要在数据库名后加“_Log”
设置文件大小
默认数据库文件大小为3MB 默认事务日志文件大小为1MB
可单击旁边的“。。。”按钮设置文件增长策略
一般情况下,允许文件自动增长,其次是确定最大文件限制
数据文件不会设置为最大容量,事务日志文件可能会设置为最大容量
设置数据库选项(选项较多,主要关注以下几项):
1* 兼容级别:数据库向以前的版本兼容的级别
2* 数据库为只读:一般该项都设置为False,如果设置为True,
则该数据库不允许再写入数据。
3* 访问限制:指定哪些用户可以访问该数据库
Multiple:数据库的正常状态,允许多个用户同时访问该数据库。
Single: 用于维护操作的状态,一次只允许一用户访问数据库
Restricted:只有管理员角色或者特定的成员才能使用该数据库
4* 自动关闭:
True:最后一个用户退出后,数据库会关闭并且释放资源;
注意:如果数据库常用,则不会设置为True;
5* 自动收缩:
True:数据库定期自动收缩,释放没使用的数据库磁盘空间
2)数据库管理和维护
注意:SQL Server启动的时候,数据库文件是不能复制、粘贴的。
分离和附加数据
删除数据库的操作将同时删除数据库的物理文件,如希望保存物理文件,以便在其它计算机上使用,此时需要使用移动数据库的操作。
移动数据库分为两步进行,分离数据库 附加数据库
分离数据库:
是从服务器中移去逻辑数据库,但不会删除数据库文件;
在数据库右键菜单中选择“任务”->“分离”
弹出“分离数据库”窗口,确定后该数据库将不再显示在数据库列表中,但其物理文件依然在磁盘中。
此时磁盘文件是可以复制、粘贴的。
附加数据库:
把磁盘上的数据库文件复制到其它计算机后,通过“附加”
操作可以恢复数据库
在数据库右键菜单选择“附加”,弹出附加数据库对话框
在对话框中将显示现有所有数据库主文件存储路径(其中包括已经分离的或刚拷贝的数据库主文件)
单击“添加”按钮,然后确定,就可以把要附加的数据库恢复了。
设置数据库状态
除了分离和附加数据库可以执行数据库移动之外,还可以通过设置数据库的状态来达到文件复制和粘贴的目的。
数据库还可以设置为“脱机”状态
处于脱机状态的数据库,其数据文件才是可以复制、粘贴的;
要使已脱机的数据库处于正常状态,需要执行右键菜单中的“联机”操作。
收缩数据库
数据库经常会出现使用一段后,因数据删除造成数据库中空闲空间太多的情况,这是需要减少分配给数据库文件和事务日志文件的磁盘空间。
当数据库中没有数据时,通过修改数据库文件大小的属性直接改变其占用的空间。
当数据库中有数据时,修改数据库文件大小就会破坏原有数据,因此需要使用收缩的方式缩减数据库空间。
收缩方式(一):直接收缩数据库
数据库文件名单击右键,选择“任务”,选择“收缩”,选择“数据库”,在收缩对话框中修改空间值,单击确定即可。
收缩方式(二):收缩数据库的单个文件(操作类似,可选项三)
仅仅释放未使用的空间;
直接指定数据大小从而直接收缩;
甚至可以把文件迁移到文件组中的其他文件中,该文件直接清空。