数据库系统

 姓名:许颖

学号:210162704048

标题:数据库系统 https://i.cnblogs.com/posts/edit;postId=16897485


数据库系统


 

数据库的四个基本概念:

1、数据:描述事物的符号记录

2、数据库:

3、数据库管理系统

4、数据库系统

数据库系统的特点:

  1. 数据结构化
  2. 数据共享性高,冗余度低且易扩充
  3. 数据的独立性高

         4.数据由数据库管理系统统一管理和控制

a、数据的安全性保护

b、数据的完整性检查

c、并发控制

d、数据库恢复

数据模型的组成要素:

1、数据结构

2、数据操作

3、数据完整性约束

常用的数据模型:

1、层次模型——1:n

2、网状模型——m:n

3、关系模型

关系的完整性约束

 1、实体完整性

2、参照完整性

3、用户定义完整性

 

 


关系数据库


 

关系的三种类型:

基本关系、查询和视图表

关系的每一个分量都必须是不可再分的数据项

关系代数:

笛卡尔积



 



 

 

 

 

 



 

除运算


 


 

选择


 

选择又称为限制(Restriction)

选择运算的含义
在关系中选择满足给定条件的诸元组
选择运算符σ

[例1]  查询信息系(IS系)全体学生

复制代码
σ
sdept
=
'IS'
(Student)
复制代码

[例2]  查询年龄小于20岁的学生       

σ
sage<20
(Student)

[例3]  查询信息系年龄小于20岁的学生

 

复制代码
σ
sdept='IS'
(Student)∩
sage<20
(Student)
复制代码

∧  逻辑与
∨  逻辑或

注:选择运算是从行的角度进行的运算


 

投影


  投影运算的含义: 从R中选择出若干属性列组成新的关系

 投影运算符π

但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
[例1]  查询学生的姓名和所在系
    即求Student关系上学生姓名和所在系两个属性上的投影

π Sname,Sdept(Student)

[例2]查询学生关系Student中都有哪些系          

π Sdept(Student)

[例3]  查询CS系的学生姓名           

π Sname(σSdept='CS'(Student) )

[例4] 查询没有选过课的学号
思路:所有学生号-选过课的学生号

π Sno(Student)-  π Sno(SC)

[例5]查询没有不及格的学号
思路:所有学号-有不及格的学号

π Sno(Student)-  π Sno(σGrade < 60 (SC))

查询没有不及格的学号
这样做有错, 为什么?

π Sno(σGrade>= 60 (SC))

这是查询有过及格的学号!!!

[例6]查未被选修的课号
所有课号 -  被选修的课号

π cno(Course)  -π cno(SC)

连接


 1)连接运算的含义

从两个关系的笛卡尔积中选取属性间满足一定条件的元组

 
A和B:分别为R和S上的属性组
θ:比较运算符 

2)两类常用连接运算

等值连接(equijoin)
θ为“=”的连接运算称为等值连接

自然连接(Natural join)
两关系中相同属性组的等值连接
结果中去掉重复属性列

[例 1]查询有成绩>95的学号,姓名
分析:成绩在SC表中, 姓名在STUDENT表中如果有一张大表,有学号、姓名、成绩 就好了 自然连接STUDENT和SC即可
π Sno,Sname (σgrade>95(Student连接SC) )

[例 2]  查询选修了2号课程的学生的学生名。

π Sname(σCno=‘2’(Student 连接 SC ))

[例3]  查询选修了先行课为5号课的课程的学生姓名。

π Sname(σ Cpno='5'(Student 连接 SC 连接 Course))

π Sname(π Sno,Sname(Student) 连接 SC 连接 σCpno='5'(Course))//性能更好

[例4] 查询没有选过课的学号,姓名

π Sno,Sname (Student  连接 (πSno(Student) -  πSno(SC))  )

练习题:

1.查询CS系的学生姓名

投影 Sname(选择 Sdept=’cs’( Student))

2.查询有成绩>90的学号

投影 Sno 选择 Grade90(c))

3.查询没有被选修的课号

投影Cno(Course)-投影cno(sc)

4.查询没有被选修的课号,课名

投影 Cno, Cname(Course连接(投影Cno( Course)-投影cno(Sc)

5.查询CS系成绩〉90的学号,姓名

投影sno, Sname选择 Sdept='cs'( Student)连接选择 Grade>90(sC)连接 Student)

6.查询数据库原理课成绩〉90的学号

投影 sno(选择 Cname='数据库原理'(Course)连接 选择Grade>90(sc))

7.查询CS系数据库原理课成绩〉90的学号,姓名

投影 Sno, Sname(选择 Cname='数据库原理'( Course)连接 选择 Grade>90 (Sc )连接 Student)
posted @   粉头老爷爷  阅读(295)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示