SQL语言与数据库操作技术大全——基于SQL Server实现
分類: 图书,计算机/网络,数据库,SQL,
作者: 马军等编著
出 版 社: 电子工业出版社
出版时间: 2008-6-1字数: 782000版次: 1页数: 530印刷时间: 2008/06/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787121062223包装: 平装编辑推荐
SQL的初学者:本书以应用广泛的SQL Server 2005数据库为依据,按照数据库操作的一般顺序,由浅到深地介绍Transact—SQL语言,并且在讲解理论的同时辅以大量的实例,便于SQL新手对SQL的理解和学习。SQL Server数据库的初学者:在学习SQL Server数据库时,用户一般习惯于使用其提供的图形开发管理界面,创建与管理各种对象。实际上,图形界面的操作最终还是要转变为相应的Transact-SQL语句对数据库进行操作。因此,建议用户在学习SQL Server数据库时,尽量通过本书介绍的Transact—SQL语言对数据库操作,这样便于用户对SQL Server数据库的深入理解和以后的深入开发。SQL Server数据库开发人员:本书可以作为SQL Server数据库开发人员在数据库开发过程中的参考手册。涵盖了Transact—SQL的几乎所有的常用语句,且便于速查。
内容简介
本书以应用广泛的SQL Server 2005数据库为依据,按照数据库操作的一般顺序,用16章的篇幅,以基础介绍、数据库及表的创建、数据查询、数据操纵、数据控制、事务控制和数据库管理的顺序,由浅到深地介绍Transact—SQL语言。
全书面向SQL与SQL Server的初学者,着重讲解Transact—SQL的基本和常用的使用语法,同时,结合大量的实例,并给出翔实的实例代码,便于读者实践操作,迅速掌握。另外,对一些难以理解的概念和复杂的语法,辅以翔实的理论讲解。因此,从某种意义上将,本书不仅仅是语法手册,还是学习手册。
本书的特色决定了该书适用于学习SQL编程基础知识的任何读者,尤其适用于SQL新手和SQLServer数据库的初学者,对SQL Servet数据库开发人员也有一定的参考价值。
作者简介
马军,计算机软件与理论专业硕士,高级程序员,微软认证系统工程师,微软认证Internet专家,微软认证数据库管理员,微软认证系统管理员,长期从事大、中型计算机网络的设计、管理和维护工作,对网络操作系统、计算机网络安全、网络数据库有深入研究。
目录
第1章 数据库系统与SQL语言概述
1.1 数据库系统与数据模型
1.1.1 基本术语
1.1.2 数据库技术的发展
1.1.3 数据模型
1.2 数据库系统的体系结构
1.2.1 数据库系统的三级模式结构
1.2.2 数据库管理系统(DBMS)
1.2.3 数据库系统的工作流程
1.3 关系数据库的简单介绍
1.3.1 关系数据库的基本特性
1.3.2 关系数据库的设计规范
1.4 SQL语言概述
1.4.1 SQL语言的发展
1.4.2 SQL语言的功能
1.4.3 SQL语言的执行形式
1.4.4 SQL语句结构
1.4.5 SQL的环境
1.4.6 SQL DBMS的客户机/服务器模型
1.4.7 SQL语言的扩展
1.5 小结
第2章 Transact-SQL与SQL Server 5
2.1 SQL Server 5及其简单应用
2.1.1 SQL Server 5的版本
2.1.2 SQL Server Management Studio
2.1.3 使用Management Studio创建数据库
2.1.4 使用Management Studio创建、查看、编辑表
2.1.5 使用Management Studio编辑、运行T-SQL语言
2.2 Transact-SQL语言
2.2.1 Transact-SQL概述
2.2.2 Transact-SQL的标识符
2.2.3 对象命名规则
2.2.4 Transact-SQL的主要组成
2.2.5 Transact-SQL的其他一些常用命令
2.3 Transact-SQL在SQL Server中的执行
2.3.1 解析Transact-SQL语句
2.3.2 编译Transact-SQL语句
2.3.3 执行Transact-SQL语句
2.4 小结
第3章 数据库与表的操作
3.1 创建、修改和删除数据库
3.1.1 SQL Server数据库的组成
3.1.2 创建数据库——CREATE DATABASE
3.1.3 修改数据库——ALTER DATABASE
3.1.4 查看数据库信息——sp_helpdb、sp_spaceused
3.1.5 删除数据库——DROP DATABASE
3.2 SQL Server中的表
3.2.1 表的结构及设计
3.2.2 Transact-SQL对表的要求
3.2.3 表的类型
3.3 SQL Server 5中的数据类型
3.3.1 数字类型
3.3.2 时间和日期类型
3.3.3 字符数据类型
3.3.4 二进制数据类型
3.3.5 其他数据类型
3.3.6 用户自定义数据类型
3.3.7 数据类型同义词
3.4 创建表(CREATE TABLE)
3.4.1 实例表设计
3.4.2 创建基本表——CREATE TABLE
3.4.3 指定值非空——NOT NULL
3.4.4 指定列的默认值——DEFAULT
3.5 编辑表结构(ALTER TABLE)
3.5.1 添加列或约束——ADD
3.5.2 修改列的定义——ALTER COLUMN
3.5.3 删除列——DROP COLUMN
3.6 重命名、删除表
3.6.1 改变表的名字——sp_rename
3.6.2 删除基本表——DROP TABLE
3.7 小结
第4章 基本的查询
4.1 SELECT语句的结构与执行
4.1.1 SELECT语句的语法结构
4.1.2 SELECT各子句的顺序及功能
4.1.3 SELECT语句各子句的执行
4.2 最简单的查询
4.2.1 向实例表中添加数据
4.2.2 查询表中列的数据——FROM子句
4.2.3 去除结果的重复信息——DISTINCT
4.2.4 查询所有列——“*”
4.2.5 进行无数据源检索
4.2.6 返回查询的部分数据——TOP
4.3 带有搜索条件的查询
4.3.1 简单的选择查询——WHERE
4.3.2 使用比较表达式
4.3.3 使用基本的逻辑表达式——NOT、AND、OR
4.3.4 空值(NULL)的判断——IS [NOT] NULL
4.3.5 限定数据范围——BETWEEN
4.3.6 限制检索数据的范围——IN
4.3.7 模糊查询——LIKE
4.4 排序查询结果
4.4.1 基本排序——ORDER BY
4.4.2 对多列进行排序
4.5 小结
第5章 查询中表达式与函数的使用
5.1 SQL Server中的运算符
5.1.1 算术运算符
5.1.2 位运算符
5.1.3 比较运算符
5.1.4 逻辑运算符
5.1.5 字符串连接符
5.1.6 赋值运算符
5.1.7 运算符的优先级
5.2 SELECT子句中表达式的使用
5.2.1 使用连接符连接列——“+”
5.2.2 操作查询的列名——“=”、“AS”
5.2.3 对重命名列的操作
5.2.4 算术表达式的使用
5.3 数学函数的使用
5.3.1 三角函数
5.3.2 计算函数
5.3.3 近似函数
5.4 字符处理函数的使用
5.4.1 SQL Server 5中的字符处理函数
5.4.2 字符的转换处理函数
5.4.3 字符串的提取函数
5.4.4 其他字符串处理函数
5.5 日期、时间处理函数的使用
5.5.1 SQL Server 5中的日期处理函数
5.5.2 获取当前时间——GETDATE、GETUTCDATE、CURRENT_TIMESTAMP
5.5.3 增加、减少时间——DATEADD
5.5.4 获取时间间隔——DATEDIFF
5.5.5 获取时间整数值——DAY、MONTH、YEAR、DATEPART
5.5.6 获取时间的字符串——DATENAME
5.5.7 常用的时间计算
5.6 类型转换函数的使用
5.6.1 类型转换——CAST
5.6.2 类型转换——CONVERT
5.7 小结
第6章 系统函数、聚合函数与分组查询
6.1 系统函数的使用
6.1.1 信息查询相关系统函数
6.1.2 判断、分类系统函数
6.1.3 统计系统函数
6.2 聚合函数的使用
6.2.1 聚合函数的种类
6.2.2 计数函数——COUNT
6.2.3 求和函数——SUM
6.2.4 均值函数——AVG
6.2.5 最大值/最小值函数——MAX/MIN
6.2.6 统计函数——STDEV、STDEVP、VAR、VARP
6.2.7 聚合函数的重值处理——ALL、DISTINCT
6.2.8 聚合函数的执行机理
6.3 分组查询
6.3.1 简单分组——GROUP BY
6.3.2 多列分组
6.3.3 分组查询中NULL值的处理
6.3.4 汇总数据运算符——CUBE、ROLLUP
6.3.5 区分不同的NULL值——GROUPING
6.3.6 筛选分组结果——HAVING
6.3.7 多级分类汇总——COMPUTE
6.3.8 对分组聚合结果进行聚合分析
6.4 小结
第7章 数据连接与多表查询
7.1 多表连接的基本概念与实现
7.1.1 连接的概念
7.1.2 连接的类型与实现
7.1.3 创建实例表ReaderInfo
7.2 简单多表查询的实现
7.2.1 使用FROM子句实现多表查询
7.2.2 使用WHERE子句指定连接条件
7.2.3 使用别名作为表名的简写
7.2.4 自连接表进行查询
7.3 使用JOIN关键字实现表的连接
7.3.1 基本连接语法
7.2.2 内部连接——INNER JOIN
7.3.3 外部连接——OUTER JOIN
7.3.4 交叉连接——CROSS JOIN
7.3.5 连接与空值
7.3.6 表的连接与聚合分析
7.4 集合运算
7.4.1 关系的集合运算
7.4.2 集合并运算——UNION
7.4.3 多表的UNION操作
7.4.4 UNION与JOIN的区别
7.4.5 集合差/集合交运算——EXCEPT/INTERSECT
7.4.6 集合运算在Transact-SQL语句中的使用原则
7.5 小结
第8章 数据库数据操作
8.1 向表中添加数据——INSERT
8.1.1 INSERT命令的基本语法
8.1.2 整行插入数据
8.1.3 INSERT操作中NULL值的处理
8.1.4 INSERT操作中默认值的处理
8.1.5 INSERT操作中唯一值的处理
8.1.6 使用INSERT…SELECT插入数据
8.2 修改和更新表中的数据——UPDATE
8.2.1 UPDATE命令的基本语法
8.2.2 使用UPDATE更新数据行
8.2.3 使用FROM和WHERE子句根据多表连接更新数据
8.2.4 大值数据类型字段值的更新
8.2.5 使用OPENROWSET和BULK来操作大型数据对象
8.3 删除表中的数据——DELETE
8.3.1 DELETE命令的基本语法
8.3.2 使用DELETE删除行
8.3.3 使用TRUNCATE TABLE删除表中的所有数据
8.4 BLOB(text、ntext和image)数据处理
8.4.1 写入BLOB数据——WRITETEXT
8.4.2 更新BLOB数据——UPDATETEXT
8.4.3 TEXTSIZE选项和@@TEXTSIZE函数
8.5 OUTPUT子句
8.5.1 基本语法
8.5.2 OUTPUT子句的使用
8.6 表中数据的复制和导入、导出操作
8.6.1 复制表中数据——SELECT…INTO
8.6.2 导入、导出数据——BCP工具
8.7 小结
第9章 子查询及FOR XML子句的使用
9.1 子查询基础
9.1.1 相关子查询与非相关子查询
9.1.2 子查询的组成
9.1.3 子查询的使用方式及限制
9.2 比较运算符引入返回单值的子查询
9.2.1 比较运算符引入子查询
9.2.2 在子查询中使用聚合函数返回单值
9.3 IN或修改的比较运算符引入返回多值的子查询
9.3.1 使用[NOT]IN引入子查询
9.3.2 使用修改的比较运算符引入返回多值的子查询
9.4 EXISTS引入的存在测试子查询
9.4.1 使用EXISTS的子查询
9.4.2 EXISTS子查询的使用
9.4.3 使用EXISTS子查询检查表中的重复行
9.5 子查询的其他应用
9.5.1 在子查询中使用TOP关键字
9.5.2 在SELECT子句中使用子查询
9.5.3 在HAVING子句中使用子查询
9.5.4 在数据操作语言(DML)中使用子查询
9.6 FOR XML子句
9.6.1 FOR XML子句的基本语法
9.6.2 FOR XML RAW模式及使用
9.6.3 FOR XML AUTO模式及使用
9.6.4 FOR XML EXPLICIT模式及使用
9.6.5 FOR XML PATH模式及使用
9.6.6 使用TYPE指令返回xml数据类型
9.6.7 在数据操作语言(DML)中使用FOR XML子句
9.7 小结
第10章 表的约束、索引与视图
10.1 表键及其使用
10.1.1 表约束的种类
10.1.2 约束的创建
10.1.3 主键约束——PRIMARY KEY
10.1.4 外键约束——FOREIGN KEY
10.1.5 外键与级联引用完整性约束
10.1.6 标识符列——IDENTITY属性
10.1.7 查看、更改标识值——DBCC CHECKIDENT
10.2 表的约束
10.2.1 唯一性约束——UNIQUE
10.2.2 校验约束——CHECK
10.2.3 约束的删除、修改和禁用
10.3 索引及其操作
10.3.1 索引的基本知识
10.3.2 创建索引——CREATE INDEX
10.3.3 非聚集索引的创建和使用——NONCLUSTERED
10.3.4 聚集索引的创建和使用——CLUSTERED
10.3.5 聚集索引和非聚集索引的使用
10.3.6 查看、修改和删除索引
10.3.7 索引的使用准则
10.4 视图及其应用
10.4.1 视图的基本知识
10.4.2 创建视图——CREATE VIEW
10.4.3 查询视图的定义和相关信息
10.4.4 修改、更新和删除视图
10.4.5 通过视图修改表中记录
10.4.6 索引视图及其使用
10.5 小结
第11章 存储过程与用户自定义函数
11.1 理解存储过程
11.1.1 存储过程的基本概念
11.1.2 存储过程的优点
11.1.3 存储过程的种类
11.2 程序流控制语句
11.2.1 SQL Server中的程序流控制语句
11.2.2 IF…ELSE条件选择结构
11.2.3 BEGIN…END语句块
11.2.4 CASE结构
11.2.5 WHILE循环结构
11.2.6 WAITFOR等待语句
11.3 存储过程的创建和使用
11.3.1 系统存储过程
11.3.2 创建存储过程——CREATE PROCEDURE
11.3.3 存储过程的创建实例
11.3.4 执行存储过程——EXECUTE
11.3.5 查看、修改和删除存储过程
11.4 用户自定义函数的创建和使用
11.4.1 创建标量型自定义函数
11.4.2 创建内联表值自定义函数
11.4.3 创建多语句表值自定义函数
11.4.4 调用用户自定义函数
11.4.5 修改、查询和删除自定义函数
11.5 小结
第12章 触发器与错误处理
12.1 触发器的基本概念
12.1.1 触发器简介
12.1.2 触发器的类型
12.1.3 触发器的作用及使用
12.1.4 触发器的执行环境
12.2 创建和使用DML触发器
12.2.1 AFTER DML触发器的创建语法
12.2.2 AFTER DML触发器的创建实例
12.2.3 测试对指定列的UPDATE操作
12.2.4 INSTEAD OF DML触发器的创建和使用
12.2.5 嵌套触发器
12.2.6 递归触发器
12.2.7 查询DML触发器的相关信息
12.3 创建和使用DDL触发器
12.3.1 DDL触发器的创建语法
12.3.2 DDL触发器的创建实例
12.3.3 查询DDL触发器的相关信息
12.4 触发器的管理
12.4.1 使用系统存储过程查询触发器的相关信息
12.4.2 修改触发器——ALTER TRIGGER
12.4.3 禁用/启用触发器——DISABLE/ENABLE TRIGGER
12.4.4 设置触发器的激发顺序——sp_settriggerorder
12.4.5 删除触发器——DROP TRIGGER
12.5 错误的获取与处理
12.5.1 查询错误消息——sys.messages
12.5.2 使用用户自定义错误消息——sp_ addmessage/sp_dropmessage
12.5.3 激发错误消息——RAISERROR
12.5.4 获取错误消息——TRY…CATCH/@@ERROR
12.6 小结
第13章 安全性管理——主体、权限、安全对象
13.1 SQL Server 5安全模式
13.1.1 主体(Principals)
13.1.2 安全对象(Securables)
13.1.3 权限(Permissions)
13.2 创建与管理Windows级别的主体
13.2.1 创建Windows认证登录用户(组)——CREATE LOGIN
13.2.2 查看Windows认证登录用户
13.2.3 修改Windows认证登录用户——ALTER LOGIN
13.2.4 删除Windows认证登录用户——DROP LOGIN
13.3 创建与管理SQL Server级别的主体
13.3.1 创建SQL Server认证登录用户——CREATE LOGIN
13.3.2 修改SQL Server认证登录用户——ALTER LOGIN
13.3.3 查询服务器角色信息
13.3.4 管理服务器角色信息
13.4 创建与管理数据库级别的主体
13.4.1 创建数据库用户——CREATE USER
13.4.2 修改、删除数据库用户——ALTER/DROP USER
13.4.3 管理数据库用户
13.4.4 管理固定数据库角色
13.4.5 管理用户自定义数据库角色
13.4.6 管理应用程序角色
13.5 安全对象与权限
13.5.1 SQL Server的内置权限
13.5.2 服务器范围的安全对象及其权限管理
13.5.3 数据库范围的安全对象及其权限管理
13.5.4 架构范围的安全对象及其权限管理
13.5.5 对象类安全对象及其权限管理
13.6 主体、安全对象和权限的管理
13.6.1 评估当前用户对安全对象的有效权限——Has_perms_by_name
13.6.2 查询当前用户对安全对象的有效权限——fn_my_permissions
13.6.3 创建凭据——CREATE CREDENTIAL
13.7 小结
第14章 事务控制和并发处理
14.1 事务控制的基本概念
14.1.1 事务控制的必要性
14.1.2 事务的ACID特性及实现
14.1.3 事务的状态
14.1.4 Transact-SQL中事务的执行
14.2 SQL Server中事务的实现
14.2.1 启动事务——BEGIN TRANSACTION
14.2.3 提交事务——COMMIT TRANSACTION
14.2.3 回滚事务——ROLLBACK TRANSACTION
14.2.4 设置事务的保存点——SAVE TRANSACTION
14.3 并发控制及其实现
14.3.1 并发访问的问题
14.3.2 SQL Server中的锁
14.3.3 锁的使用
14.3.4 显示数据库中活跃的事务和锁信息——DBCC OPENTRAN
14.3.5 事务隔离级别
14.3.6 设置事务隔离级别——SET TRANSATION
14.3.7 不同事务隔离级别实现并发控制实例
14.3.8 事务阻塞及其解决方法
14.3.9 死锁及其预防
14.4 小结
第15章 游标与全文检索
15.1 游标的基本概念
15.1.1 游标的概念
15.1.2 游标的实现及应用过程
15.2 基本游标的创建和使用
15.2.1 创建游标——DECLARE CURSOR
15.2.2 打开游标——OPEN
15.2.3 检索游标数据——FETCH
15.2.4 关闭/删除游标——CLOSE/DEALLOCATE
15.2.5 遍历游标结果集——@@FETCH_STATUS
15.2.6 使用游标修改、删除数据
15.3 Transact-SQL扩展游标与游标的管理
15.3.1 Transact-SQL扩展游标语法
15.3.2 使用游标变量
15.3.3 事务中游标的使用
15.3.4 游标的管理
15.4 全文检索基础
15.4.1 全文索引和全文目录
15.4.2 创建全文目录——CREATE FULLTEXT CATALOG
15.4.3 创建全文索引——CREATE FULLTEXT INDEX
15.5 使用全文谓词和全文函数进行全文检索
15.5.1 使用CONTAINS谓词进行全文检索
15.5.2 使用FREETEXT谓词进行全文检索
15.5.3 使用全文函数——CONTAINSTABLE、FREETEXTTABLE
15.6 小结
第16章 服务器和数据库的配置与管理
16.1 管理服务器配置选项
16.1.1 查询服务器配置选项
16.1.2 更改服务器配置选项
16.2 管理数据库配置选项
16.2.1 查询数据库信息
16.2.2 自动选项及其设置
16.2.3 ANSI SQL选项及其设置
16.2.4 外部数据源对数据库的访问选项
16.2.5 游标选项及其设置
16.2.6 数据库恢复选项和磁盘I/O错误检查
16.2.7 控制数据库的状态和属性
16.2.8 数据库磁盘空间管理
16.3 数据库的维护
16.3.1 检查磁盘空间分配结构的一致性——DBCC CHECKALLOC
16.3.2 检查数据库对象的结构和逻辑完整性——DBCC CHECKDB
16.3.3 检查文件组分配和结构完整性——DBCC CHECKFILEGROUP
16.3.4 检查页和结构的完整性——DBCC CHECKTABLE
16.3.5 检查约束的完整性——DBCC CHECKCONSTRAINTS
16.4 数据库的备份与恢复
16.4.1 数据库备份与恢复的基本概念
16.4.2 备份操作相关的Transact-SQL语句
16.4.3 完整备份——BACKUP DATABASE
16.4.4 创建逻辑备份设备——sp_addumpdevice
16.4.5 事务日志备份——BACKUP LOG
16.4.6 差异备份——DIFFERENTIAL
16.4.7 文件备份
16.4.8 部分备份——READ_WRITE_FILEGROUPS
16.4.9 查询备份集的元数据
16.4.10 数据库还原——RESTORE DATABASE
16.5 信息架构视图
16.5.1 信息架构视图简介
16.5.2 TABLES信息架构视图
16.5.3 VIEWS信息架构视图
16.5.4 COLUMNS信息架构视图
16.5.5 ROUTINES信息架构视图
16.6 小结
附录A 标准的SQL语句
附录B SQL Server的全局变量
附录C SET语句及功能
书摘插图
第1章 数据库系统与SQL语言概述
1.1数据库系统与数据模型
数据库系统本质上是一个使用计算机存储记录的系统。数据库本身可被看作一种电子文件柜;也就是说,它是收集计算机数据文件的仓库或容器。系统用户可以对这些文件执行一系列的操作。
1.1.1基本术语
本节将对数据库使用中的一些常用术语进行简单介绍。
1.数据(Data)
描述事物的符号记录称为数据。数据是数据库中存储的基本对象,数据的种类很多,主要包括文字、图形、图像、声音、学生的档案记录、货物的运输情况等,它们都可以经过数字化后存入计算机。
2.数据库(Database,简称DB)
数据库,顾名思义,就是存放数据的仓库,过去人们把数据放在文件柜里,现在人们借助计算机和数据库技术,科学地保存和管理大量复杂的数据,以便能方便而充分地利用这些宝贵的信息资源。
所谓数据库是长期存储在计算机内、有组织、可共享的数据集合,数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户所共享。
3.数据库管理系统(Data Base Management System,简称DBMS)
数据库管理系统是指数据库系统中对数据进行管理的软件系统,它是数据库系统的核心组成部分。数据库系统的一切操作,包括查询、更新以及各种控制,都是通过DBMS进行的。
DBMS总是基于某种数据模型的,因此可以把它看成某种数据模型在计算机系统上的具体实现。
数据库管理系统是数据库系统的一个重要组成部分,它为用户提供一个可以方便、有效地存取数据库信息的环境。
4.数据库系统(Database System,简称DBS)
数据库系统是指在计算机中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。应当指出的是,数据库的建立、使用和维护等工作只靠一个DBMS远远不够,还要有专门的人员来完成,这些人被称为数据库管理员(Database Administrator,简称DBA)。
数据库系统的构成如图1.1所示。
1.1.2数据库技术的发展
数据库主要用于数据处理。随着数据处理量的不断增加,数据管理技术应运而生,其演变过程随着计算机硬件和软件的发展,大体经历了文件系统、层次模型和网状模型数据库、关系模型数据库以及新一代数据库系统几个阶段。
1.文件系统阶段
在数据库系统出现前,数据以文件为单位,与计算机程序脱离,由操作系统统一管理。用户的程序与数据可分别存放在外存储器上,各个应用程序可以共享一组数据,实现了以文件为单位的共享。
由于数据的组织仍然是面向程序的,所以存在大量的数据冗余,且不能方便地修改和扩充数据的逻辑结构。同时,由于文件之间是相互孤立的,因而它们不能反映现实世界中事务之间的联系。文件系统阶段程序与数据的关系如图1.2所示。
2.层次模型和网状模型数据库系统
层次模型和网状模型数据库系统也称为第一代数据库,其先驱是1969年IBM提出的IMs (InformationManagement System,层次数据库模型)。该种数据库系统以有向图为基础,一次一个记录地存取数据,采用的是过程化的存取方法。
简单的层次模型和网状模型数据库系统存储的数据结构,如图1.3所示。
3.关系模型数据库系统
关系模型数据库系统也称为第二代数据库,诞生于20世纪70年代。首先由IBM提出了关系模型,奠定了关系数据库技术的基础;而IBM、SystemR和Berkeley INGRES等系统的出现,标志着关系型数据库的成熟。
关系模型数据库系统以集合代数为基础,一次一个集合地存取数据,采用的是非过程化的存取方法。目前广泛使用的数据库软件都是基于关系模型的关系数据库管理系统。关系模型是现代数据库产品最广泛实现的模型,而且正是关系模型构成了SQL的基础。
关系模型与以往的模型不同,它是建立在严格的数学概念基础上的。在用户看来,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。现以图1.4所示的学生登记表为例,简单介绍关系模型中的一些术语。
关系(Relation):一个关系对应通常说的一张表,如图1.4所示的表。
元组(Tuple):表中的一行即为一个元组。
属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即为属性名;
如图1.4所示的表中有6列,对应6个属性(学号、姓名、年龄、性别、系名和年级)。
主键(Key):表中的某个属性组,它可以唯一确定一个元组,如图1.4所示的表中的学号,可以唯一确定一个学生,也就成为本关系的主键。
域(Dommn):属性的取值范围,如人的年龄一般在1-150岁之间,性别的域是(男,女)。
分量:元组中的一个属性值。
关系模式:对关系的描述一般表示为:
关系名(属性1,属性2,…,属性N
例如,上面的关系可描述为:
学生(学号,姓名,年龄,性别,系名和年级)
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项,也就是说,不允许表中还有表。
……