数据库系统基础3-7周总结
这是我第二次对我的《数据库系统基础》进行总结。学期也基本过了一半了,虽然是第七周但是之前国庆和中秋节放假冲了好几节课,所以这3-7周也没有比1-2周两周的进度快到哪去。
本书名字是《数据库基础教程》,机械工业出版社,作者是斯坦福的Jeffrey D. Ullman和Jennifer Widom。岳丽华,金培权,万寿红翻译。我的任课老师叫叶庆生。
回顾这两周的教学,大概学习了以下几点:
- 代数和逻辑查询语言(包和集合)
- 数据库语言:SQL语句
一,代数和逻辑查询语言(包和集合)
一个集合必须满足这两个条件:
- 不能有相同的元素重复出现
- 一个集合的子集不可以是自己。
而包不一样,包可以有重复的元素出现,所以又被称为多集。
包的笛卡儿积集:如果元组r在关系R中出现了m次,元组s在关系S中出现了n次,那么元组rs在笛卡尔积R×S中将出现mn次。
包的连接:它不像集合的连接,包的连接不需要去掉重复元组。
二,关系代数的拓展操作符(主要是记住对印的符号)
- 消除重复操作符
把包中重复的元素去掉,只保留一个拷贝在关系当中。
- 聚集操作符 会忽略NULL,并不将NULL加入计算:
1)SUM 求和
2)AVG 求平均值
3)MIN和MAX求最小,最大值
4)返回一个属性元组的数量,包括重复的元组,但不包括NULL
- 分组操作
根据元组在一个或多个属性上的值把关系把关系的元组拆分成“组”。从而对其中一个或某几个组进行单独的计算。
- 扩展投影
可以将变量关系的列作为参数进行计算,并产生新的列。
- 排序算子
把一个关系变成一个元组的列表,并根据一个或多个属性进行排序。
- 外连接算符
它不会产生悬浮元组
三,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
这对应着这样的代数逻辑查询语言:
即首先对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

浙公网安备 33010602011771号