数据库系统概述复习
1、数据库是长期存储在计算机内部,有组织的、可共享的大量数据的集合。有较小的冗余度、较高的数据独立性、和易扩展性,可共享。
2、
数据模型:对现实世界 数据特征 的抽象。反应系统的特征和完整性约束条件。
数据模型的组成:数据结构(描述数据库的组成对象 及 对象之间的联系)、数据操作(对数据库中各种对象的实例允许执行的操作的集合 增删改查等)、数据的完整性约束条件(一套完整性规则)。
常见的数据模型有 层次模型、网状模型、关系模型。
层次模型:(数据结构中的树) 家族关系
用树形结构来表示各类实体及实体间的联系。
有且只有一个根节点。
跟以外的节点都有且仅有一个双亲节点。
只能处理一对多的实体联系。
网状模型:
允许一个以上的节点无双亲。
一个节点可以有多于一个的双亲。
关系模型:
有一组关系组成。每个关系的数据结构是一张规范的二维表。
关系:一个关系对应一张表。 学生信息表
元组:表中的一行为一个元组。 一个学生的基本信息
属性:表中的一列即为一个属性。 学号、姓名等都是属性
码:某个属性组可以唯一确定一个元组。 学号是唯一的,可以通过学号找到对应的一行确定某个元组。学号即为码
域:一个相同数据类型的值的集合。年龄的数字集合1-120就被称为一个域。
分量:元组中的一个属性值。 一条记录的一个列值。
关系模式:关系名(属性1,属性2...) 并且每个分量必须是一个不可分的数据项。表头(表格的描述)
关系名:表名。
3、概念模型:按照用户的观点来对数据和信息建模,主要用于数据库设计。对信息世界建模。常用的表示方法是E-R图。
4、数据库系统的结构
三级结构:数据库系统由外模式、模式、内模式三级构成。
外模式:又称子模式或者用户模式,它是用户能看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,通常是模式的子集。
模式:又称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述。是数据库数据在逻辑上的视图。一个数据库只有一个模式。
内模式:又称存储模式,一个数据库只有一个内模式。它是数据物理存储结构和存储方式的描述,是数据在数据库内部的组织方式。
两级映像:外模式/模式映像 和 模式/内模式映像。
外模式/模式映射。模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。一个模式可有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。当模式改变时(新增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序就是依据数据的外模式编写的,从而应用程序不必改变,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映像。数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。 例如说明逻辑记录与字段在内部是如何表示的。 当数据库的存储结构改变时,由数据库管理员对模式/内模式映像做出相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。
第二章:
了解 关系数据库系统 与 非关系数据库系统 的区别。
理解关系模型的数据结构和三类完整性。
掌握关系代数和关系演算的方法。
关系数据库系统是支持 关系模型 的 数据库系统。
若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。
若一个关系有多个候选码,则选定其中一个为主码。
候选码的诸属性成为主属性。不包含在任何候选码中的属性为非主属性。
关系可以有三种类型:基本关系、查询表、视图表。其中,基本表是实际存在的表,它是实际存储数据的逻辑表示。查询表是查询结果对应的表;视图表是由基本表或其他视图表导出的表,是虚表,不对应实存储的数据。
关系的每一个分量必须是一个不可分的数据项。
关系模型中常用的关系操作包括:增删改查
查询分为:选择select、投影project、连接join、除divide、并union、差except、交intersec、笛卡尔积等。
5、关系模型中有三类完整约束:实体完整性、参照完整性、和用户定义的完整性。
实体完整性和参照完整性是 关系模型 必须满足的 完整性约束条件,被称作是关系的两个不变性。
实体完整性规则:若属性A是基本关系R的主属性(主码中的属性即主属性),则A 不能取空值。就是说主码不能为空值。若主码由若干属性组成,则所有这些主属性都不能取空值。
参照完整性:表A中有一个外码引用的是表B的某个属性,那么A中该外码的取值 必须为空 或者 是表B中该属性域中的某个值。
用户定义的完整性:针对某一具体关系数据库的约束条件,它反映某数据必须满足的语义的要求。比如认为规定某个属性必须取唯一值。
6、关系代数
关系代数的运算对象时 关系,运算结果亦是关系。 关系代数的运算包括:集合运算和专门的关系运算。
集合运算包括: 并、交、差、笛卡尔积(注意有顺序,每行 R的列在前,S的列在后; 行数是R行数*S行数 列的表示是R.A....)。分别如下
关系运算:
1、选择 :选择满足条件的 元组
2、投影 :选择若干属性列组成新的关系(表)
3、链接:从两个关系的二笛卡尔积中选取属性满足一定条件的元组。
等值连接:从笛卡尔积中 选出某些属性值相同的那些元组。
自然连接:比较分量必须是同名的属性组,并且在结果中把重复的属性列去掉。
在自然连接时,R中的某些元组可能被舍弃,S中的某些元组也可能被舍弃。这些舍弃的元组称为 悬浮元组。
把悬浮元组保存在结果关系中,而在其他属性上填空值,这种连接叫做外连接。只保留左边关系中的悬浮元组叫做左连接,只保留右边关系中的悬浮元组叫做右连接。
4、除运算
象集:表中所有元组,某个属性等于它要求的值的元组 在某个分量的的集合。
找R/S的方法:
R/S 首先找到R和S中的共有的属性。然后把属性值相同的那些值写成一个集合。 (b1,c2)(b2,c3)(b2,c1)
在R中的所有元组中找全部包含这些集合的元组,找出非公有属性。R中非公有属性是A ,A属性中a1 有这些集合。
关系演算:
1、元组关系演算ALPHA语言:
格式为 操作语句 工作空间名(表达式):操作条件
检索操作:
GET W (SC.Cno) //查询所有被选修的课程号
GET W (Student.Sno,Student.Sage):Student.Sdept='IS' ^Student.Sage<20 //查询IS中年龄小于20的学生的学号和年龄
GET W (Student.Sno,Student.Sage):Student.Sdept='CS' DOWN Student.Sage //查询CS系学生的学号、年龄,结果按年龄降序排序。
GET W(1)(Student.Sno):Student.Sdept='IS' //取出一个信息系学生的学号 ,W后括号中的数量就是指定的返回元组的个数
以后再学吧 有点多。
三、SQL
数据定义:
创建:CREATE SCHEMA(模式)/TABLE(表)/VIWE(视图)/INDEX(索引)
删除:DROP ......
修改:ALTER TABLE/INDEX 模式和视图是不可以修改的。
1、定义模式:
CREATE SCHEMA<模式名>AUTHORIZATION<用户名>
CREATE SCHEMA "S-T" AUTHORIZATION WANG; 为用户WANG定义了一个学生-课程模式 S-T
定义了模式就相当于定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象。例如 基本表、视图、索引。
CREATE SCHEMA TEST AUTHORIZATION ZHANG //给ZHANG创建了模式 TEST
CREATE TABLE TAB1(COL1 SMALLINT, //在模式TEST中创建表
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3)
COL5 DECIMAL(5,2)
);
2、删除模式:
DROP SCHEMA<模式名><CASCADE|RESTRICT>; //CASCADE 和 RESTRICT两者必选其一 选择了第一个就在删除模式的同时把该模式中所有的数据库对象全部删除;选择了RESTRICT 表示如果模式中已经定义了表、视图等就拒绝该删除语句的执行。
3、基本表的定义。
CREATE TABLE<表明>(<列名><数据类型>[列级完整性约束条件],
<列名><数据类型>[列级完整性约束条件],
[<表级完整性约束条件>]
);如果完整性约束条件涉及该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。
创建一个学生表 Student:
CREATE TABLE STUDENT(
Sno CHAR(9) PRIMARY KEY, /*列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE, /*Sname 取唯一值 */
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
4、修改基本表
5、删除基本表:
前者是有条件删除、后者是无条件删除。
6、数据查询
SELECT Sname,Sno,Sdeot
FROM Studentl;
ELECT * //查询全部属性列
FROM Student;
SELECT Sname,2023-Sage //得到出生年份
FROM Student;
SELECT DISTINCT Sno //把sc中的sno消除重复地选择出来。
FROM SC;
WHERE 用于查询满足指定条件的元组。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下