数据库系统基础3-7周总结

这是我第二次对我的《数据库系统基础》进行总结。学期也基本过了一半了,虽然是第七周但是之前国庆和中秋节放假冲了好几节课,所以这3-7周也没有比1-2周两周的进度快到哪去。

本书名字是《数据库基础教程》,机械工业出版社,作者是斯坦福的Jeffrey D. Ullman和Jennifer Widom。岳丽华,金培权,万寿红翻译。我的任课老师叫叶庆生。

回顾这两周的教学,大概学习了以下几点:

  • 代数和逻辑查询语言(包和集合)
  • 数据库语言:SQL语句

一,代数和逻辑查询语言(包和集合)

一个集合必须满足这两个条件:

  • 不能有相同的元素重复出现
  • 一个集合的子集不可以是自己。

而包不一样,包可以有重复的元素出现,所以又被称为多集。

包的笛卡儿积集:如果元组r在关系R中出现了m次,元组s在关系S中出现了n次,那么元组rs在笛卡尔积R×S中将出现mn次。

包的连接:它不像集合的连接,包的连接不需要去掉重复元组。


二,关系代数的拓展操作符(主要是记住对印的符号)

  1. 消除重复操作符\delta 把包中重复的元素去掉,只保留一个拷贝在关系当中。
  2. 聚集操作符 会忽略NULL,并不将NULL加入计算:

               1)SUM  求和

               2)AVG 求平均值

               3)MIN和MAX求最小,最大值

               4)返回一个属性元组的数量,包括重复的元组,但不包括NULL

  3. 分组操作\gamma 根据元组在一个或多个属性上的值把关系把关系的元组拆分成“组”。从而对其中一个或某几个组进行单独的计算。
  4. 扩展投影\pi 可以将变量关系的列作为参数进行计算,并产生新的列。
  5. 排序算子\tau 把一个关系变成一个元组的列表,并根据一个或多个属性进行排序。
  6. 外连接算符\bowtie \circ 它不会产生悬浮元组

三,sql语句

1)创建数据库和相应的的表

USE IT
GO
create table PC
(
    model int primary key,
    speed float,
    ram int,
    hd int,
    type varcahr(50)
)

创建了一个数据库,名为IT。其中又创建了一个表名为PC。有五个属性int型的model和ram和hd,float型的speed,还有varcahr(50)的type。其中int型的model被设为主键。

2)添加check约束。

在创建表时就添加check约束,以上一个例子为例:

USE IT
GO
create table PC
(
    model int primary key,
    speed float,
    ram int check(ram>1024),
    hd int,
    type varcahr(50)
)

这样子,ram的值就必须大于1024。

 

接着给一个已经创建好的表里的一个属性添加check约束:

alter table PC
add check (PC>1024) 

如果需要重命名check约束:

alter table PC
add constraint check_1 check (hd>1024)

这里把它命名为了check_1。

3)添加外键约束

alter table PC
add constraint FK_1 foreign key type references Product(type)

给PC表的type属性,添加名为FK_1的外键约束,引用自Product表的type属性。


ALTER TABLE PC ADD CONSTRAINT FK_1 FOREIGN KEY (type) 

REFERENCES Product(type) on delete cascade on update restrict;

添加删除时的关联操作。

2)查询语句select-from-where

sql查询都具有这样的形式:

SELECT L
FROM R
WHERE C

这对应着这样的代数逻辑查询语言:

                                                                                      \pi _{L}\left ( \sigma _{C}\left ( R \right ) \right )

即首先对FROM子句关系中的每个元组使用WHERE子句中指定的条件进行筛选,然后投影到SELECT子句中的属性或表达式列表上。

3)匹配模式LINK

这个类似RE(正则表达式),可以用来匹配字符串。

SELECT type
FROM PC
WHERE type LINK '__'

SELECT type
FROM PC
WHERE type LINK 'p%'

上一段匹配到pc,因为只有pc是两个字母组成的。下一段匹配到pc和printer,因为他们都是以p字母开头的。

所以可以看出一个下划线‘_'匹配一个字符,而一个百分号‘%’表示匹配任意个字符。


END

posted @ 2021-01-23 17:12  TIM3347_Tian  阅读(47)  评论(0)    收藏  举报  来源