Skip to main content

1-数据库系统概论复试

1.绪论

数据:数据是数据库中存储的基本对象,描述事物的符号记录称为数据,数据的含义称为数据的语义

数据库(DB):数据库是长期储存在计算机内、有组织的、可共享的大量数据集合

  • 数据按照一定数据模型组织、描述和存储
  • 具有较小的冗余度
  • 较高的数据独立性
  • 易扩展性
  • 永久存储、有组织、可共享

数据库管理系统(DBMS):数据库管理系统是位于用户与操作系统之间的一层数据管理软件

数据库系统(DBS):由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统

物理独立性:用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的,数据的物理存储改变了,但是其应用程序不用改变

逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构变了,但是应用程序可以不变

2.关系数据结构

关系:只包含单一的数据结构,用户视角来看就是一张数据库的表

域、笛卡尔积:数据的取值范围叫做域、笛卡尔积就是配对乘起来

元组和属性:元组就是表中的一行,属性就是表中的一列

2.1 关系的完整性

实体完整性:如果属性A是关系R的主属性,A不能为NULL

参照完整性:关系R和关系S,若R中的主键A与S中的B对应,则称B为关系S中的外码,对于S中元组中B的值:

  • 为空(NULL)
  • 等于关系R中主键A的值

关系代数:并交差和笛卡尔

选择σ\sigma (选择条件)(表名),选择符合条件的一行元组

投影π\pi (列名)(表名),选择符合条件的一列

连接:将两个关系的笛卡尔积中选取属性间符合条件的一些元组,理解成SQL语句中的表连接

:有点抽象,理解成关系里面的差运算,关系R和关系S,R÷S=T,首先找到R和S共同的属性C,然后在R中找到 不属于C中的属性T,T和S的组合要全部出现在R中

3.SQL

3.1 建表

create table <表名>(
列名 数据类型(integervarchar、等等)not null,
...............,
...............,
primarry key(key1,key2....), //主键
foreign key(key1) references2(key1) // 外键
)

修改表:

alter table <表名>
add 列名 数据类型 约束条件(主键、不为空等等)
add 约束
drop 列名 [cascade|restrict]cascade就是删除引用该列的其他对象,例如视图)(restrict如果该列有其他对象引用,则拒绝删除该列)
drop constraint 完整性约束
alter 列名 数据类型

3.2 CRUD

模板

select a,b,c 
from table_1,table_2
where 条件语句
group by 分组列名 having 分组条件
order by 排序列名 desc|asc
  • where:添加查询条件
between x1 and x2 x1~x2范围内 
in 嵌套语句中使用,可以筛选
例:select Sname,Ssex
from Student
where Sdept in(
select Sdept
from Course
where core>=30
)
not in 不在
like 用于字符串匹配,基本不用
  • group by:查询出来的元组按某列进行分组
  • order by:按某列的属性值进行排序

表连接

  • 自身连接,两张一样的表,通过条件语句连接
select a.cno,b.cpno
from Course a,Course b
where a.Cpno = b.Cno
  • 外连接,两张或多张不一样的表通过条件语句连接,一般采用left join on语句,这样会将多表连接起来,有一些属性原本不存在的会被赋值为NULL
select Student.Sno,Sname,Ssex
from Student left join SC
on Student.Sno = SC.Sno

聚集函数

count(*)
avg(*)
max(*)
min(*)

集合查询

查询语句1
union|intersect|except(并、交、差)
查询语句2

插入数据

insert into <表名>1,列2.... values(1,值2.....)

更新数据

update <表名>
set 列名 = 操作(加减乘除都可以)
where 条件(此处可以嵌套in配合select查询)
例:
update SC
set grade = grade+10
where Sno in
(
select Sno
from Student
where Sname = '牛顿'
)

删除数据

delete from 表名
where 条件

删除一行元组

3.3 视图

视图是将几个表导出一些数据的表,是虚表,不是实际存在的。类似一个窗口,透过它可以看到数据库中自己感兴趣的那部分数据的变化,经过定义后,这个虚表也可以查询和删除。

create view <视图名>
as<查询语句>
[with check option]加入这个语句的话,进行UID的时候,需要满足子查询中的条件
例:
create view IS_student
as
select Sno,Sname,Sage //通过这种方式就不用再view那里写列名式子
from Student
where Sdept=IS

例:将学生的学号及平均成绩定义为一个视图
create view S_G
as
select Sno,avg(Grade)
from SC
group by Sno

4.关系数据理论

4.1 函数依赖

函数依赖:数据表中,给定一个属性X,唯一确定一个Y,则X函数确定Y或者Y函数依赖于X,X->Y。也就是对于一个函数F,给定F(X)=Y

非平凡的函数依赖:平凡函数依赖就是(A,B)->A|B|A,B。非平凡就是 (A,B)->C

完全函数依赖:(A,B)->C,少了A或者B都推不出来C

部分依赖:(A,B)->C,同时A|B->C

传递函数依赖:A->B,B->C,且B推不出A,则C对于A传递函数依赖

候选码:K能够完全函数依赖整个关系集R,K的闭包完整退出R

主属性:候选码中的都是主属性,无论是否入选主码