数据库系统学习(二)

时间:2022-06-20 01:30:51

一、关系型数据库

1.关系数据库是什么?

数据模型采用关系模型的数据库就是关系数据库。

2.关系数据库的结构?

关系数据库由表的集合组成,每个表名字唯一。每张表都有行和列,一行可以代表一组值之间的联系。表的概念和数学上的关系概念是密切相关的。

元组(tuple):一组值得序列。(n元组就是有n个值的元组)

关系模型术语:关系用来指代表,元组指代行,属性指代列。

关系实例:表示一个关系的特定实例。

域:关系的每个属性的可取值范围。

空值:表示值未知或不存在。空值会给数据库的访问和更新带来很多困难,所以应避免使用空值。

3.数据库模式

数据库模式是数据库的逻辑设计,数据库实例是数据库数据的一个实例。

关系数据库是基于关系模式的数据库。

码:用于区分不同的元组。

超码:一个或多个属性的集合,这些集合可以使唯一的标识每一个元组。

最小超码(候选码):任意子集都不能成为超码的超码,就是候选码。

主码:代表数据库设计者选中的、主要用来在一个关系中区分不同元组的候选码。

码是整个关系的一种性质,而不是单个元组的性质。码的指定代表了被建模的事物在现实世界中的约束。

主码对的选择应该是值很少或从不变化的属性。

外码:一个关系模式(r1)包含另外一个关系模式(r2)的主码,这个属性在r1上成为r2的外码。r1也称为外码依赖的参照关系。r2叫做外码的被参照关系。

参照完整性约束:参照关系中任意元组在特定属性上的取值必然等于被参照关系中某个元组在特定属性上的取值,

4.模式图

用图形表示数据库模式的图就是模式图。

5.关系查询语言

分为过程化和非过程化语言。

过程化语言:如关系代数。

关系代数以一个或两个关系为输入,产生一个新的关系作为结果。

非过程化:如关系演算。

关系演算使用谓语定义所需的结果,而不需要给出获取结果的特定过程。

6.关系运算

单个关系:(1)选出满足特定谓词的符合条件的元组(2)从一个关系中选出特定的属性。

两个之间的关系:自然连接,笛卡尔积,并,内连接,外连接。

关系代数:选择,投影,自然连接,笛卡尔积,并

二、SQL

SQL是使用最广泛的数据库查询语言。

1. 组成:(1)数据定义语言:(2)数据操纵语言:(3)完整性(4)视图定义(5)事务控制(6)嵌入式SQL和动态SQL(7)授权

2. sql数据定义

(1)基本类型

char(n)/varcahr(n)/int/smallint/numeric(p,d)/real,double precision/float(n)

(2)基本模式定义

create table....

完整性约束:主键约束,外键约束,非空约束

(3)SQL查询的基本结构

  • 单关系查询
  • 多关系查询
  • 自然连接
  • 外连接等

3. 附加的基本运算

(1)更名运算

(2)字符串运算

字符串函数、like操作符、定义转义字符escape、not like、similar to(比like匹配更强)

(4)查询属性说明  

*匹配所有属性

(5)排序

order by desc/asc

(6) where子句谓语

between ... and ...    (a,b,c)

4.集合运算

union 并集 intersect 余集 except 补集

(1)union 对两个结果集进行合并,返回一个新的结果集

union 会对结果集进行去重 union all不会进行去重

(2)intersect 交运算

同理,intersect all不去重

(3)except 差运算

同上,except all不去重

5.空值 null

涉及空值的比较运算,结果为unknow

  • and: true and unknow结果为unknow,false and know结果为false,unknow and unknow结果为unknow
  • or: true or unknow结果为true,false or unknow结果为unknow,unknow or unknow结果为unknow
  • not:not unknow结果为unknow

6.聚集函数

聚集字面意思就是把多个物品放到一起。就是以一个集合或多重集合为输入,返回单个值得函数

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

(1)基本聚集

(2)分组聚集

(3)having子句

(4)对空值和布尔值的聚集

除了count(*)以外所有的聚集函数都会忽略空值

SQL:1999引入布尔数据类型,有true,false,unknow三个值。有两个聚集函数some,every

(5)嵌套子查询

from,where后嵌套子查询

(6)集合成员资格 

in

(7)集合的比较

some,all

(8)空关系测试

exists

(9)重复元组存在性测试

unique

(10) with子句

用于定义临时关系

(11)标量子查询

7.数据库修改

(1)删除

delete from where

(2) 插入

insert into values

(3)更新

update set where