一、数据库基础知识
1.1 数据管理技术的发展
- 数据管理技术的三个发展阶段:人工管理、文件管理和数据库管理。
- 在数据管理技术的各个发展阶段中,数据独立性最高的是( 数据库管理 )阶段。
- 数据库管理系统的英文缩写是DBMS,DBA表示数据库管理员。
- 文件管理与数据库管理的区别与联系:
(1)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据; (2)文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离; (3)文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据; (4)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。
- 使用数据库管理数据有何好处?
实现数据共享,减少冗余,保证完整性安全性
1.2 数据库系统
- 数据库的三级模式:
(1)概念模式(逻辑模式OR模式):对数据库中全部数据的逻辑结构和特征的总体描述; (2)外模式(子模式OR用户模式):数据库用户所看见的数据库的局部数据的逻辑结构和特征的描述; (3)内模式(存储模式OR物理模式):对数据存储方式和物理结构的描述。
- 数据库三级模式之间的二级映射:
(1)外模式到概念模式的映射:保证了数据与应用程序之间的逻辑独立性; (2)概念模式到内模式的映射:保证了数据与应用程序之间的物理独立性。
- 什么叫数据的逻辑独立性?什么叫数据的物理独立性?
(1)数据逻辑独立性是指数据库总体逻辑结构的改变(如修改数据定义、增加新的数据类型、改变数据间的联系等)不需要修改应用程序。 (2)数据物理独立性是指数据的物理结构(存储结构、存取方式等)的改变,如存储设备的更换、物理存储格式和存取方式的改变等不影响数据库的逻辑结构,因而不会引起应用程序的变化。
- 在关系数据库中,当关系模式改变时,用户程序也可以不变,这是( 数据的逻辑独立性 )。
- 通常,一个数据库系统的外模式( 可以有多个 )。
- 数据库系统的组成:
(1)数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。 (2)硬件:构成计算机系统的各种物理设备,包括存储所需的外部设备。硬件的配置应满足整个数据库系统的需要。 (3)软件:包括操作系统、数据库管理系统及应用程序。其主要功能包括:数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立与维护。 (4)人员:主要有4类。第一类为系统分析员和数据库设计人员;第二类为应用程序员,负责编写使用数据库的应用程序。;第三类为最终用户,他们利用系统的接口或查询语言访问数据库。第四类用户是数据库管理员(data base administrator,DBA),负责数据库的总体信息控制。
1.3 数据模型
- 现实世界的信息抽象到计算机世界,第一层抽象须建立( 概念模型 )。
- 概念模型:
(1)实体之间的联系:1:1;1:n;m:n。 (2)E-R图表示
- 逻辑模型:
(1)层次模型:有一个结点没有父结点,这个结点即根结点;其他结点有且仅有一个父结点。 (2)网状模型:可以有一个以上的结点没有父结点;至少有一个结点有多于一个的父结点。 (3)关系模型:用二维表格表示实体及其相互之间的联系。
- 关键字:关系中能唯一区分、确定不同元组的单个属性或属性组合,称为该关系的一个关键字(key)。关系中的关键字可能有多个,都称为候选关键字(Candidate Key)。在候选关键字中选定一个作为关键字,称为该关系的主关键字或主键(Primary Key)。
- 外部关键字:如果关系中某个属性或属性组合是另一个关系的关键字,则称这样的属性或属性组合为本关系的外部关键字或外键(Foreign Key)。
- 关系的结构,可以用关系模式来表示。
1.4 关系数据库
- 关系的性质:
每个属性都必须是不可再分的数据项; 每个属性都具有相同的数据类型; 关系中不允许出现相同的属性名; 关系中不允许出现有完全相同的元组; 关系中元组的次序无关紧要; 关系中属性的次序无关紧要。
- 传统的关系运算:以元组为集合元素的集合运算,包括交、并、差、笛卡尔积:
R并S,记作R∪S:包含所有分属于R和S或同属于R和S的元组; R交S,记作R∩S:包含所有同属于R和S的元组; R差S,记作R-S:包含所有属于R但不属于S的元组; 笛卡尔积:
- 专门的关系运算,包括选择、投影和连接:
(1)选择:在关系R中挑选满足条件F的元组组成一个新的关系,记作 (2)投影:从关系R中挑选若干属性组成新的关系,记作 (3)连接:从两个关系的笛卡尔积 中选取属性间满足一定条件的元组组成新的关系,记作 a. 等值连接:从关系R与关系S的笛卡尔积中选取A和B属性值相等的那些元组; b. 自然连接:要求在结果中把重复的属性去掉。
- 关系完整性,即数据完整性:
(1)实体完整性规则:指关系的主属性不能取空值(NULL),并且不允许两个元组的关键字值相同; (2)参照完整性规则:定义两个关系之间的引用规则;(主键和外键) (3)用户自定义完整性规则:用户对数据必须满足的语义要求作出规定.
- 关系数据库是关系的集合,而关系是元组的集合
1.5 数据库的设计
- 数据库设计的基本步骤:
(1)需求分析:明确目标需求; (2)概念设计:设计概念模型; (3)逻辑设计:设计逻辑模型; (4)物理设计:设计物理存储结构; (5)实施与维护:建立数据库,评估与完善。
- E-R模型到关系模型的转换
(1)1:1联系的转换:在两个实体关系的任意一个关系中增加另一关系的关系属性; (2)1:n联系的转换:在n方实体关系中增加一方实体关系的关键属性和联系的属性; (3)m:n联系的转换:除对两个实体分别进行转换外,还要为联系单独建立一个关系,其属性为两方实体关系的关键属性加上联系的属性。如
- 有A和B两个实体集,它们之间存在着两个不同的多对多联系,根据转换规则,将它们转换成关系模型时,关系的个数是( 4 )。
- 数据库设计的关键步骤是( 概念设计、逻辑设计 )。
- 例:教学管理数据库
解: (1)列出系统涉及的实体: 学 生 ( 学 号 , 姓 名 , 性 别 ) 课 程 ( 课 程 号 ,课 程 名 , 学 时 ) 教师 ( 教 师 号 , 姓 名 , 性 别 , 职 称 ) 专 业 (专 业 名 ,成 立 年 份 , 专 业 简 介 ) 教 材 ( 教 材 号, 教 材 名 版 社 , 定 价 ) (2)实体之间的联系 学生 与 课程 的 联 系 是 多 对 多 联 系 (m:n) 教 师 与 课 程 的 联 系 是 多 对 多 联 系 (m:n) 专 业 与 学生 的 联 系 是 一 对 多 联 系 ( 1:n) 课 程 与 教 材 的 联 系 是 一 对 一 联 系 (1:1) (3)关系模型的转换
二、数据库创建与管理
2.1 数据库管理工具
2.1.1 SQL Server数据库管理系统
- SQL Server是微软公司推出的关系数据库管理系统(是DBMS),使用客户机/服务器体系结构,常用的管理工具有:SQL Server Management Studio(SSMS):用于访问、配置、管理和开发 SQL Server各种组件的集成环境;SQL Server 配置管理器:用于SQL Server服务、服务器协议、客户端协议和客户端别名提供基本配置管理的工具。
- SQL:结构化查询语言,包括数据查询DQL,数据操作DML,数据定义DDL,数据控制DCL。
- 注意:数据库逻辑文件名是由SQL Server管理的;数据库物理文件名是操作系统管理的。
2.1.2 数据库存储结构
- 数据库存储结构:
(1)逻辑存储结构:数据库是由哪些性质的信息所组成,如表、索引、视图、约束等各种不同的逻辑成分,这些逻辑成分被称为数据库对象。 (2)物理存储结构:SQL Server数据库表现为数据库文件,由数据文件和事务日志文件组成,是数据库在物理设备(如磁盘)上的存储结构与存取方法,它依赖于给定的计算机系统。
- 数据库对象:常用的数据库对象有表、视图、索引、约束、存储过程、触发器等,其中
(1)表:由行和列组成,用于组织和存储数据; (2)索引:是对数据表中一列或多列的值进行排序的一种结构; (3)视图:是用户查看数据表中数据的一种方式; (4)存储过程:是一组为完成特定功能的已编译的SQL语句的集合。
- 数据库文件包括主数据文件、次数据文件、事务日志文件:
(1)主数据文件:拓展名为mdf,一个数据库只能有一个主数据文件,用于存储数据库的数据和数据库的启动信息; (2)次数据文件:拓展名为ndf,一个数据库可以有0个或多个次数据文件,用于存储主数据文件没有存储的其他数据; (3)事务日志文件:拓展名为ldf,一个数据库可以有1个或多个日志文件,用来存放数据库的事务日志,记录每一个事务的开始、对数据的改变和取消修改等信息。
- 文件组:文件组是数据文件的逻辑组合,可以有1个主文件组、0个或多个用户定义文件组。
(1)主文件组:是系统自动创建的。系统文件你、每个数据库的主数据文件和没有被放入其他组的次数据文件分配在这一组。如果没有指定,则主文件组作为默认文件组。 (2)用户定义文件组:是指创建数据库时使用FILEGROUP关键字指定的文件组,可以定义0个或多个用户定义文件组。 (3)注意:事务日志文件不属于任何文件组!!!
2.1.3 数据库类型
- SQL Server数据库实例是指安装在计算机上的某个完整的SQL Server服务器,SQL Server数据库实例包含系统数据库和用户数据库。用户数据库是用户创建的数据库,为具体应用而创建,可以有一个或多个;每个数据库实例有4个系统数据库:
(1)master数据库:记录SQL Server系统的所有系统级信息; (2)model数据库:记录SQL Server所有新建数据库模板; (3)msdb数据库:是“SQL Server代理服务”数据库,为报警、任务调度和作业记录提供存储空间; (4)tempdb数据库:是一个临时数据库,保存临时对象和中间结果集。
2.2 SQL Server的命名规范
- 数据库对象是用标识符命名的,命名规则:
(1) 首字符为字母、下划线、@、#,后续字符为字母、数字、下划线、@、#、$所构成的字符串。
@:表示局部变量/参数,如:@day #:表示临时表/过程,如:表#grade
(2)字符个数在1-128之间,不区分大小写,不能有空格、其他特殊字符、SQL保留字。
- 标识符分为两种类型:常规标识符;分隔标识符,指包含在双引号(“”)或方括号([])中的标识符。
- 数据库对象的完整名称由4部分组成,格式如下:
[[[服务器名.][数据库名].][数据库架构名].]数据库对象名
2.3 创建数据库
- 如果要求创建的数据库有更大的存储空间,更利于管理,如何组织数据库文件?
解决办法:在数据库中,通过文件组管理多个次数据文件,以此扩大存储空间,又便于系统对数据的管理,提高数据的查询性能。
- 数据库的容量(可以设置为自动增长)。
2.4 修改和删除数据库
- 对于已存在的数据库可以进行以下修改:
(1)增加或删除数据库文件或文件组; (2)改变数据库文件的大小和增长方式; (3)重命名数据库,但不能修改数据文件名和日志文件名。
- 创建数据库:create;修改数据库:alter;删除数据库:drop;删除文件:remove
- 在SQL Server中,用来显示数据库信息的系统存储过程是(sp_helpdb)
三、数据表和表数据操作
3.1 数据类型
3.1.1 数据表
- 关系模型中的一个关系对应数据库中的一个数据表。
- 表是最主要的数据库对象,用来存放数据库中的数据。
- 每个数据库包含了多个表。
- 数据表由行和列组成,行称为记录,列称为字段。
3.1.2 数值型
- 数值型数据类型包括整数型、浮点型与精确数值型。
- 整数型:int(4字节)、smallint(2字节)、tinyint(1字节)、bigint(8字节)。
- 浮点型:real(4字节,7位有效数字)、float(4字节或8字节,15位有效数字)、numeric(5~17字节,精确数值型)。
3.1.3 字符型
- 字符型数据用于存储字母、数字符号和其他符号构成的字符串,包括定长型、变长型、文本型。输入时,串中的字符需要用单引号括起来。
- 字符型:char(n字节,1≤n≤8000)、varchar(n与char同,表示最大长度)、text(2^31-1个字符,存储长度为实际字符数)。
- unicode字符型:nchar(n个双字节空间,1≤n≤4000)、nvarchar(n个双字节空间,1≤n≤4000)、ntext(2^31-1个字符)。
3.1.4 二进制型
- 二进制型数据类型表示的是位数据流,包括定长型、变长型、图像型。输入时十六进制数字串前需要加前缀0x。
- 二进制型:binary(n个字节,1≤n≤8000,存储长度为n+4)、varbinary(n个字节,1≤n≤8000,存储长度为n+4)、image(2^31-1个字节)。
3.1.5 日期时间型
- 日期时间型用于存储日期和时间信息,输入时,日期时间值需要用单引号括起来。
- 日期时间型:datetime(8字节日期时间)、smalldatetime(4字节)、date(3字节)、time(5字节)
3.1.6 其他类型
注意:NUMERIC数据类型是一种精确数字数据类型,其精度在算术运算后保留到最小有效位,numeric是标准sql的数据类型,格式是numeric(m,n),前面一个为总的位数,后面一个参数是小数点后的位数。
3.2 表结构设计、创建、管理
- 数据表的第一行即为表结构,包含定义一个表的字段、类型、主键、外键、索引等元素。
- 创建表:use databaseName Go create table tableName(字段名 数据类型 [约束])。
- 修改表:Alter table tableName{Alter column 列名 数据类型 Add<列定义> Add 计算列名 AS 表达式 Drop{Column 列名}}
- 注意:使用Alter Column子句时,一次只能修改一个列的属性;在Alter Table语句中,一次只能包含Alter Column(修改列)、Add(添加列,注意后面没有Column)、Drop(删除列,注意后面没有Column)子句中的一项。
- ALTER TABLE语句向表中增加新列,使用 ( ADD子句 )。
- DROP TABLE命令:删除表里的数据,同时删除表的数据结构。
- 删除一个表时,该表的定义、表中的所有数据,以及表的索引 、触发器、约束等均被删除。
- ALTER命令修改表中列的属性时,修改前与修改后列的数据类型不能冲突,应完全相同,否则发生错误。
3.3 表数据操作
- 插入记录:Insert [INTO] 表名 [(字段列表)] Values (数据列表)[,…n].
- 修改记录:Update 表名 Set {列名=表达式 [,…n]} [From {<表源>}[,…n]] [Where <查询条件>]
- 删除记录:Delete [From] 表名 [Where <查询条件>]
- 删除表中所有记录:Truncate Table 表名。
- 数据表中增加一个新列后,各元组在新列上的值是NULL。
3.4 数据完整性
3.4.1 完整性约束
- 完整性是指数据库中的数据在逻辑上的一致性和准确性。
- 约束定义关于列中允许值的规则,是强制完整性的标准机制,约束可以作用的对象有:表、记录、字段。
- 数据完整性约束的类型:
(1)实体完整性:分为主键约束、唯一约束; (2)域完整性:检查约束、默认约束、非空约束; (3)参照完整性:外键约束。
3.4.2 实体完整性
- 实体完整性又称为行完整性,就是要求每个数据表都必须有主键,其值不能为空,且能唯一地标识对应的记录。
- 实体完整性的实现:主键约束&唯一约束。
- 主键约束和唯一约束的区别:
主键约束:只能有一个,其值不能为空,属于聚集索引; 唯一约束:可以有多个,其值可以为空,属于非聚集索引。
-
表约束语法: -
列约束语法: -
例: 对应的DROP 子句用于删除约束。
3.4.3 域完整性
- 域完整性也称为列完整性,是对数据表中字段属性的约束,检验给定列输入的有效性,是用户自定义完整性的主要内容。
- 域完整性的实现:数据类型、非空约束(Not NULL)、默认约束(Default(表达式))、检查约束(Check(表达式))。
3.4.3 参照完整性
- 参照完整性又称为引用完整性,用于保证主表中的数据与从表中数据的一致性。
- 参照完整性通过定义外键与主键之间的对应关系来实现:
Foreign Key定义表的外键; Primary Key定义主表的主键 或 Unique定义主表中的唯一键。
- 例:
|