第3章 关系数据库的创建与维护 Microsoft SQL Server2008 概述 SQL Server数据库基础 数据库的创建与维护 数据表的创建和维护 数据表约束和数据完整性控制 索引的创建与维护
3.1 Microsoft SQL Server2008 概述 3.1.1 数据库管理系统概述 负责数据库中数据的存储、查找、增加、删除、修改操作,并维护数据的完整性、并发性、安全性等。
3.1.1 数据库管理系统概述 DBMS主要功能 数据定义 数据操纵 数据库的运行管理 数据库的维护 支持数据库语言
3.1.2 SQL Server特性 (1) 图形化的操作环境,易于学习和使用。 (2) 高性能的数据库管理和使用功能。 (3) 可伸缩性和高度可用性。 (4)与Internet应用的集成。 (5) 对数据仓库的支持。 a.数据库的设计、创建、维护和使用方便和快捷; b.支持高性能的数据库系统,并提供充分的数据库完整性保护; c.分布式查询可以查询来自不同数据源的数据,从而与 SQL Server数据库中的数据集成。 a.根据用户访问量动态使用系统的软、硬件资源; b.可支持从 KB 大小的个人数据库到TB 数量级的企业数据库; c.SQL Serve具有维护7*24小时运行的 Web 站点和企业系统所需的极高的可用性级别。 数据库引擎提供了丰富且完整的XML支持,利用XML语言可以轻松地存储和检索数据,并将查询结果直接用于各种网页程序。
3.1.3 SQL Server主要管理工具 1. SQL Server Management Studio
3.1.3 SQL Server主要管理工具 1. SQL Server Management Studio
1. 对象资源管理器 主界面
3.1.3 SQL Server主要管理工具 2. SQL Server Configuration Manager 配置管理器
2. 配置管理器 启用Named Pipers
2. 配置管理器 启用TCP/IP
2. 配置管理器 停止/启动服务
3.2 SQL Server数据库基础 3.2.1 SQL Server 数据库分类 系统数据库 用户自定义数据库 Master Model Msdb Tempdb 用户自定义数据库
3.2 SQL Server数据库基础 3.2.2 SQL Server数据库组成 表 视图 可编程性 安全性 存储过程 触发器 函数 用户 角色
3.2 SQL Server数据库基础 3.2.3 SQL Server数据库的存储结构 数据库的逻辑存储结构 数据库的物理存储结构 数据库文件 主数据文件 次数据文件 事务日志文件 数据文件组 主文件组 用户自定义文件组
3.3 数据库创建与维护 3.3.1 数据库创建 【例3-1】创建数据库School 操作步骤: 3.3 数据库创建与维护 3.3.1 数据库创建 【例3-1】创建数据库School 它包含主数据文件School_Data.MDF,其初始大小为5MB,事务日志文件School_Log.LDF,并将这两个文件建立在D:\DBSchool文件夹下,其他按照默认设置不变。 操作步骤: 在D盘建立文件夹D:\DBSchool 在“对象资源管理器”窗口右击“数据库”,从快捷菜单中选择“新建数据库命令” “选择页”默认为“常规”,在“数据库名称”中输入School,将数据文件的路径改为D:\DBSchool,初始大小改为5
3.3.2 数据库维护 1. 修改数据库 在对象资源管理器中右击需要修改的数据库,点击“属性” 在“文件”页对文件位置、大小进行修改 在“文件组”页创建或修改文件组 在“选项”页对数据库的工作方式和性能进行设置 在“权限”页中设置用户、角色对数据库的访问权限
3.3.2 数据库维护 2. 删除数据库 右击待删除的数据库,在右键菜单中选择“删除”命令 在弹出的“删除对象”对话框中单击“确定”按钮
3.4 数据表的创建和维护 3.4.1 数据表创建 一般过程: 设计表结构 定义字段 输入字段 定义字段类型 定义字段属性 编辑字段 保存表 输入数据
3.4.1 数据表创建 1. SQL Server数据类型 数据类型 主要类型符号标识 整型 bigint、int、smallint、tinyint 浮点型 float、real、decimal、numeric 字符型 char、varchar、nchar、nvarchar 日期型 datetime、smalldatetime 二进制型 binary、varbinary 大字段 text、ntext、image 货币型 money、smallmoney
3.4.1 数据表创建 2. 创建数据表 【例3-3】在数据库School中建立学生表Student,各字段的定义如教材表2.1所示。 …… 字段名称 字段说明 类型定义 属性限定 索引 外键 StudentCode 学号 varchar(20) 主键 主索引 StudentName 学生姓名 非空 ClassCode 班号 varchar(10) Class:ClassCode Sex 性别 nchar(2) 男或女 Birthday 生日 smalldatetime LiveInDorm 是否住校 bit 默认为1 Telephone 电话 nvarchar(40) ……
2. 创建数据表 1)在对象资源管理器中,选择“数据库”-> School->“表”,从右键菜单中选择“新建表” 2) 在表设计容器中,根据表的设计结构输入各字段 3) 在“属性”窗格的名称处输入表名Student,然后保存
3.4 数据表的创建和维护 3.4.2 数据表维护 修改表结构 1)在对象资源管理器中右击要修改的表,在弹出菜单中选择“修改”命令 2)在“表设计”窗口中,选中需修改的一列,右击后弹出快捷菜单,对列进行修改 3)保存修改
3.4.2 数据表维护 2. 更改表名 在对象资源管理器中选择要改名的表,在右键菜单中选择“重命名”命令 输入新表名 3. 删除数据表 在对象资源管理器中选择要删除的表,在右键菜单中选择“删除”命令 在“删除对象”对话框中,单击“确定”按钮
3.4 数据表的创建和维护 3.4.3 数据表记录维护 1. 数据表记录插入 在对象资源管理器中,右击数据表,在右键菜单中选择“编辑前200行” 将光标定位在表尾的下一行,逐字段输入 一条记录的最后一个字段输入后,按Enter回车,进入下一记录的输入 输入完后,保存数据 2. 修改记录 3. 删除记录
3.5 数据表约束和数据完整性控制 SQL Server常用数据完整性约束机制 完整性 约束 作用 实体 主关键字约束 (Primary Key) 保证表中记录行的唯一性 唯一性约束(Unique) 保证在非关键字字段不出现重复值 域 默认值约束(Default) 对没有插入值的列自动添加表定义时对该列设置的默认值 非空值约束(Not Null) 限定某一列必须有值,即不允许空值 检查约束(Check) 限定某一列中可接受的值或数据格式 参照 外关键字 (Foreign Key) 通过表间关系约束字段值的有效性
3.5.1 实体完整性约束 1. 主关键字约束(Primary Key) 2. 唯一性约束(Unique) 1) 在表设计窗口中,选择要设置为主键的字段(可使用Ctrl键选择多个字段) 2) 在右键菜单中选择“设置主键命令” 2. 唯一性约束(Unique) 在表设计窗口中,选择要设置的列,在右键菜单中选择“索引/键” 在“索引/键”对话框中选择“添加命令” 单击“列”后的“…”按钮在索引列对话框中选择相应的列,单击确定,返回“索引/键”页 在“是唯一的”后的下拉框中选择“是”
3.5.2 域完整性约束 主要体现在表中字段的值的有效性 默认值约束(Default) 非空值约束(Not Null) 检查约束(Check) 在表设计窗口,右击字段,在右键菜单中选择“Check约束” 单击“添加”按钮后,可为此约束修改默认名称 单击“表达式”后的按钮,在对话框中输入约束表达式 选择“强制用于Insert和Update”,“强制用于复制”,“在创建或重新启用时检查现有数据”
3.5.3 参照完整性约束 主要体现在通过表间关系约束字段的值的一致性 【例3-9】在数据库School的学生表Student和ClassInfo表间建立关系,实施参照完整性约束。在该关系中,将ClassInfo的ClassCode字段设置为主键,将Student 的ClassCode设置为外键。 打开外键表Student的表设计窗口,在右键菜单中选择“关系” 单击“添加”按钮后,单击“表和列规范”后的按钮 在“表和列”对话框中,将主键表改为ClassInfo,主键字段改为ClassCode,在外键表Student下选择外键字段ClassCode
3.5.3 参照完整性约束 【例3.10】利用例3.9所建立的FK_Student _ClassInfo关系检验参照完整性约束设置。 当光标移到下一行时,出现对话框提示外键冲突,不允许加入 打开ClassInfo表,可见,在此表中没有ClassCodeo为153030302,所以,因为外键约束的存在,不允许在Student中增加行
3.6 索引的创建和维护 索引类别 唯一索引:不允许表中任何两行具有相同值(可以允许都为空) 主键索引:可唯一标识表中的每一行 聚集索引:行的物理顺序与逻辑顺序相同,一张表只能有一个聚集索引 普通索引
3.6.1 索引的创建 【例3.12】为Student表建立索引,以学号(StudentCode)为主键、聚集索引,按班号建立升序非唯一索引。 打开Student的表设计窗口,选中StudentCode列,在右键菜单中设置主键,主键会自动被设置为聚集索引 在表设计窗口的右键菜单中选择索引/键命令,打开“索引/键”对话框 单击“添加”按钮,单击“列”右侧下拉列表框后的“…”按钮,出现“索引列”对话框 在“索引列”对话框中选择要创建索引的字段ClassCode,选择排序方式为“升序”后按确定 在“索引/键”对话框中,选择“是唯一的”值为“否”
3.6.2 索引的维护 表设计窗口中点击任意一行后,按右键 在右键菜单中选择“索引/键”打开“索引/键”对话框 在此对话框中可对索引进行新增/修改/删除