数据库(基础)

数据库部分的复习(预习)用的是机械工业出版社的书
数据库系统概念(豆瓣)
本文主要是对前三章(引言、关系模型、SQL、中级SQL)内容的概要,比较简单的内容就跳过了。

第一章 引言

数据抽象

一个可用的数据库系统可以抽象成以下三个层次

  • 物理层
    最低层次的抽象,是复杂的底层结构,描述数据实际上是怎样存储的。比如数据在硬盘中的实际存储方式。
  • 逻辑层
    比物理层层次稍高的抽象,描述数据库中储存什么数据以及数据之间的关系,面向应用逻辑。逻辑层不必理解底层复杂的物理层的实现,称为物理数据独立性。比如数据库中的普通数据表。
  • 视图层
    最高层次的抽象,描述数据库的某个部分。类似数据库中的视图。

实例、模式

某一时刻在数据库中的数据的集合称为数据库的实例,而数据库的总体设计称为数据库模式。
可以理解为,前者表示结构+数据,后者表示结构。
根据上面的抽象层次,有物理模式、逻辑模式(最重要)、子模式(视图层),分别在各个层描述数据库的设计。

第二章 关系模型介绍

关系数据库由表构成,用关系指代表,用元组指代行,属性指代表中的列。
关系实例表示一个关系的特定实例,关系中的值的所有可能的取值的集合叫做

key

超码 superkey

一个关系中属性集的子集,通过这个子集中的属性可以唯一确定一个元组。

候选码 candidate key

上面的子集中会有多余的属性,即用更少的属性就可以唯一确定一个元组,比如学生表,用学号一个属性就可以确定一个学生。这样的最少的可以确定一个元组的属性集叫做候选码。

主码 primary key

在候选码的基础上,比如学生表中,既可以通过学号确定唯一性,也可以通过身份证号确定唯一性,所以这两个属性都分别是候选码,主码就是选其中一个候选码,用于区分关系中不同的元组。

外码 foreign key

关系r1中的一个属性可能包含另一个关系r2的主码,这个属性叫做外码,r1叫做外码依赖的参照关系,r2叫做外码依赖的被参照关系

第三章 SQL

SQL(结构化查询语言)包括以下几个部分:

  • 数据定义语言(DDL):定义、删除、修改关系模式
  • 数据操纵语言(DML):CRUD
  • 完整性: 数据必须满足完整性约束
  • 视图定义
  • 事务控制
  • 嵌入式SQL和动态SQL:使用编程语言调用SQL
  • 授权:访问权限

基本数据类型

  • char:固定长度的字符串
  • varchar:可变长度的字符串
  • int
  • smallint: 小整数类型
  • numeric:定点数,表示固定小数的数值类型
  • real、double precision:浮点数和双精度浮点数,精度和机器相关
  • float:精度至少为n位的浮点数
  • date:表示日期
  • time:表示时间
  • timestamp:表示日期+时间

自然连接 natural join

自然连接会把两张表中相同属性合并

集合运算

并运算union

1
2
3
4
5
6
7
(select course_id
from p
where semester = 'Fall' and year 2009)
union
(select course_id
from p
where semester = 'Spring' and year = 2010)

以上结果集中会自动去除重复,如果需要保留重复,使用union all

交运算intersect (all)
差运算except (all)

空值null

涉及空值的任何运算都为unknown,表示其值位false或true不确定,所以表达式true and unknown的结果还是unknown。

聚集函数

  • 平均值:avg
  • 最小值:min
  • 最大值:max
  • 总和:sum
  • 计数:count

分组 group by

这个使用的时候注意一下,分组之后,select之后不能写没有在group by 中的属性,因为分组后有多个结果,不知道要显示哪个,所以会报错。

having子句

配合分组使用,在分组后添加筛选条件。

嵌套子查询

select num1 from tb1 where num1>some(select num2 from tb2);

其中的some表示num1比后面那个集合中任意一个元素大也就是比最小的大就可以了。另外有all表示比后面集合中最大的元素大。
子查询还可以写在from后面。

空关系测试

exist表示结果是否为空,为空就是false。

内连接、左外连接、右外连接、全外连接

https://blog.csdn.net/u012219371/article/details/85056526

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值