数据库概论

前言

讲述一些数据库概念

模型分类

根据应用目的,模型分为两个层次:

  • 概念模型(信息模型):也是按用户观点来对数据和信息建模,主要用于数据库设计。
  • 数据模型(网状、层状、关系):从计算机观点来看,它是按计算机系统的观点对数据建模,主要用于DBMS的实现。

概念模型

概念模型是将数据从现实世界向抽象世界转换的第一步模型

数据模型

当前流行的基本数据模型有三类:

  • 层次模型(Hierarchical Model)
  • 网状模型(Network Model)
  • 关系模型(Relational Model)

术语

  • 域(Domain)是一组具有相同数据类型的值的集合。
  • 笛卡尔积
  • 笛卡儿积 D1×D2×… ×Dn
    的子集称为定义在域D1,D2,…,Dn上的n元关系(Relation),可用R(D1,D2,…,Dn )表示
  • 码:在给定的关系中,具有唯一标识元组的一个或一组属性,称为关系的码
  • 候选码:如果在关系中,具有码特性的属性或属性组有多个,则把它们都称为关系的候选码。
  • 主码:当一个关系中有多个候选码时,我们从候选码中选择一个作为关系的主码。每个关系都必定有且只有一个主码。
  • 外部码:如果关系R2的一个或一组属性不是R2的主码,而是另一关系R1的主码,则该属性或属性组成为关系R2的外部码。

关系操作

关系模型中常用的关系操作包括:
选择(Select)、投影(Project)、连接 (Join)、除(Divide)、并(Union)、交(Intersection)、差(Set Difference)等查询。以及增加(Insert)、删除(Delete) 、修改(Update)操作。

关系模型的三类完整性

指实体完整性、参照完整性和用户定义的完整性(其中前两类完整性是关系模型必须满足的约束条件)

  • 实体完整性
    • 在关系中,要求主码的值不能为空值。
  • 参照完整性
    • 如果关系R2的外部码X与关系R1的主码相符,那么外部码X的每个值必须在关系R1中主码的值中找到,或者取空值,称为参照完整性。
  • 用户定义完整性
    • 针对某个具体数据库的约束条件,由应用环境决定,它反映某一具体应用所涉及的数据必须满足的语义要求。

关系数据库设计理论

数据库安全保护

数据库设计

SQL语句

关系数据库标准语言–Structured Query Language(sql)

SQL语言的基本概念与特点

基本概念

  • 基本表(Base Table)
    • 一个关系对应一个基本表
    • 一个或多个基本表对应一个存储文件
  • 视图(View)
    • 视图是从一个或几个基本表导出的表,是一个虚拟的表

主要特点

  • SQL语言是类似于英语的自然语言,简洁易用
  • SQL语言是一种非过程语言
  • SQL语言是一种面向集合的语言
  • SQL语言既是自含式语言,又是嵌入式语言
  • SQL语言具有数据查询、数据定义、数据操纵和数据控制四种功能

了解SQL Server 2000

SQL Server是一个关系数据库管理系统

主要组件

组件 功能
企业管理器 管理所有的数据库系统工作和服务器工作
查询分析器 执行Transact-SQL命令等SQL脚本程序
服务管理器 启动、暂停或停止SQL Server的四种服务
客户端网络实用工具 配置客户端的连接、测定网络库的版本信息以及设定本地数据库的相关选项
服务器网络实用工具 配置服务器端的连接、测定网络库的版本信息
导入和导出数据 在OLE DB数据源之间复制数据
在IIS中配置SQL XML支持 在运行IIS的计算机上定义、注册虚拟目录,并在虚拟目录和SQL Server实例之间创建关联
事件探查器 监视SQL Server 数据库系统引擎事件
联机丛书 查询信息

企业管理器

企业管理器是用于管理企业级SQL Server或者SQL Server对象的方便而实用的图形化工具,它是SQL Server工具中最重要的一个,通过它可以对SQL Server数据库进行管理和操作。

企业管理器的功能非常强大,可以用它来完成以下工作:

  • 注册服务器
  • 配置本地和远程服务器
  • 管理登录、用户、权限
  • 创建脚本
  • 管理备份设备和数据库
  • 备份数据库和事务日志
  • 管理表、视图、存储过程、触发器、索引、用户定义数据类型等数据库对象
  • 创建全文索引、数据库图表
  • 引入和导出数据
  • 数据转换
  • 多种网页发布和管理

查询分析器

查询分析器是一个可以交互执行SQL语句和脚本的图形工具,它的主要功能是编辑、编译和执行T-SQL语句,并显示命令结果。

创建与使用数据库

文件

数据库包括多个数据文件和事务日志文件

  • 数据文件
    • 存放数据库数据和数据库对象的文件
    • 主要数据文件(.mdf )(只有一个)+次要数据文件(.ndf )(可有多个)
  • 事务日志文件
    • 记录数据库更新情况,扩展名为.ldf,当数据库破坏时可以用事务日志还原数据
      库内容

文件组

  • 文件组(File Group)是将多个数据文件集合起来形成的一个整体
  • 主要文件组+次要文件组
  • 一个数据文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用
  • 日志文件不分组,它不能属于任何文件组

创建与使用数据表

系统的数据库

Master

  • 系统信息:
    • 磁盘空间
    • 文件分配和使用
    • 系统级的配置参数
    • 登录账号信息
    • SQL Server初始化信息
    • 系统中其他系统数据库和用户数据库的相关信息
      Model
  • Model数据库存储了所有用户数据库和Tempdb数据库的创建模板,通过更改Model数据库的设置可以大大简化数据库及其对象的创建设置工作。
    Msdb
  • 存储计划信息以及与备份和还原相关的信息
    Tempdb
  • Tempdb数据库用作系统的临时存储空间
    存储临时表,临时存储过程和全局变量值 ,创建临
    时表 ,存储用户利用游标说明所筛选出来的数据

创建数据库

使用Enterprise Manager创建数据库
用SQL命令创建数据库

语法
1
2
3
4
5
6
7
CREATE DATABASE database_name
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ] ]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]
1
2
3
4
5
([NAME=logical_file_name,]
FILENAME= ‘os_file_name’
[,SIZE = size]
[,MAXSIZE={max_size| UNLIMITED}]
[,FILEGROWTH=growth_increment])
示例

用SQL命令创建一个教学数据库Teach,数据文件的逻辑名称为Teach_Data,数据文件物理地存放在D:盘的根目录下,文件名为TeachData.mdf,数据文件的初始存储空间大小为10MB,最大存储空间为50MB,存储空间自动增长量为5MB;日志文件的逻辑名称为Teach_Log,日志文件物理地存放在D:盘的根目录下,文件名为TeachLog.ldf,初始存储空间大小为10MB,最大存储空间为25MB,存储空间自动增长量为5MB。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE DATABASE Teach
ON
( //数据库名称
NAME=Teach_Data,
//数据库文件路径及名称
FILENAME='D:\TeachData.mdf',
//数据文件初始存储空间
SIZE=10,
//最大存储空间
MAXSIZE=50,
//自动增长量
FILEGROWTH=5)
LOG ON //日志文件
( NAME=Teach_Log,
FILENAME='D:\TeachLog.ldf',
SIZE=5,
MAXSIZE=25,
FILEGROWTH=5)

修改数据库

Enterprise Manager修改数据库
用SQL命令修改数据库

语法

1
2
3
4
5
6
7
8
9
10
11
12
ALTER DATABASE database_name
{ ADD FILE <filespec> [,...n] [TO FILEGROUP filegroup_name]
| ADD LOG FILE <filespec> [,...n]
| REMOVE FILE logical_file_name [WITH DELETE]
| 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 > }

示例

修改Northwind数据库中的Northwind文件增容方式为一次增加2MB

1
2
3
4
5
ALTER DATABASE Northwind
MODIFY FILE
( NAME = Northwind,
FILEGROWTH = 2mb
)

删除数据库

用Enterprise Manager删除数据库
用SQL命令删除数据库

语法
1
DROP DATABASE database_name [,...n]
示例

删除数据库Teach。

1
DROP DATABASE Teach

查看数据库信息

用Enterprise Manager查看数据库信息
用系统存储过程显示数据库信息
用系统存储过程显示数据库结构

1
Sp_helpdb [[@dbname=] 'name']

用系统存储过程显示文件信息

1
Sp_helpfile [[@filename =] 'name']

用系统存储过程显示文件组信息

1
Sp_helpfilegroup [[@filegroupname =] 'name']

示例

1
2
3
EXEC Sp_helpdb Northwind
EXEC Sp_helpfile
EXEC Sp_helpfilegroup

创建与使用索引

数据查询

数据更新

视图

数据控制