随笔分类
CS 186
这是一门 UCB开设的有关数据库的一门课程,适用于本科阶段自学,课程相关文档:http://cs186berkeley.net/fa20/
本门课来讲述如何开发系统去高效管理、维护、处理,与数据交互处理、理解数据,并且在非常大的数据集上以高效的方式来完成所有操作,即讲述开发系统背后需要遵循的原则
现如今,数据增长的速度远快于计算增长的速度,并且在未来计算的关键瓶颈,即计算管道,在于数据处理,大规模的数据系统成为了现代计算的核心(关于数据的言论很多,甚至衍生出了新的课程:数据科学专业)
对于这门课,one task: 建立一个没有"数据库"的银行数据管理系统
在这门课中,你将学习:
1.使用 SQL进行编程
基础和算法
2.数据系统设计基础
存储、索引(B+Tree Index)
查询处理和优化
3.事务
并发(2PL)、一致性、恢复(ARIES)
4.数据建模
数据的应用及变式
SQL
值得去学习的关系型数据库:Mysql、PostgreSQL、SQLite
对于数据库,一个比较粗糙的定义:提供高效、方便、安全的多用户存储和访问大量持久化数据的系统
早期的数据库系统是由文件系统演变而来的,在某种程度上提供了海量持久化的数据,但系统本身安全性方面无法得到保证,System Crash时系统无法安全运行,有丢失数据的风险,其次就是不一定高效,不支持快速定位访问文件中未知位置的数据。
SQL是一种声明式语言,即说出你想要什么数据,而不是怎么得到
Logic Processing Order
1.FROM \
2.[WHERE \
3.[GROUP BY \
4.[HAVING \
5.SELECT \
a. [DISTINCT] - keep only distinct rows(filter out duplicates)
6.[ORDER BY \
7.[LIMIT \
DBMS may execute a query in an equivalent but different order
For multi-table queries:perform joins with FROM
Join
Some times we would use Join, it is an another syntx
SELECT
FROM table_name
[INNER | NATURAL
| {LEFT |RIGHT | FULL } OUTER] JOIN table_name
ON
WHERE ...
Inner Join is the default Join way, it is the same effect as the way we use no join
Natural Join would effect on the fields which have the same name
Out join returns all matched rows, and preserves all unmatched rows from the table on the left/right or the join clause.
Full outer join returns all (matched or unmatched) rows from the tables on both sides or the join clause.
Null
NULL op x; x op Null is Null
Where Null: do not send to output
Boolean connectives: 3-valued logic
Aggregate ignore Null-Valued inputs