点击标题 适合非计算机专业的其他领域专家通过数据获得见解。
目标受众
- Rachel 拥有细胞生物学硕士学位,现在在一家研究医院从事细胞分析工作。
- 她在本科生生物统计学课程中学习了一些 R 语言,并完成了有关 Unix shell 的 Carpentries 课程。
- Rachel 正在考虑成为一名数据科学家,并想了解数据是如何存储和管理的。
- 她的工作日程不可预测且变化很大,因此她需要能够一次学习一点。
先决条件
- 基本 Unix 命令行:cd, ls,*通配符
- 基本表格数据分析:过滤行、在组内聚合
学习成果
- 解释数据库和数据库管理器之间的区别。
- 编写 SQL 来选择、过滤、排序、分组和聚合数据。
- 定义表并插入、更新和删除记录。
- 描述不同类型的联接并编写使用它们组合数据的查询。
- 使用窗口函数对相邻行进行操作。
- 解释什么是事务并编写在违反约束时回滚的查询。
- 解释什么是触发器并编写 SQL 来创建它们。
- 使用 SQL 操作 JSON 数据。
- 直接使用 Python、从 Jupyter Notebook 以及通过 ORM 与数据库进行交互。
设置
- 下载最新版本
- 将文件解压到临时目录中创建:
- ./db/*.db:示例中使用的 SQLite 数据库
- ./src/*.*:SQL 查询、Python 脚本和其他源代码
- ./out/*.*:示例的预期输出
背景概念
- 数据库是可以搜索和检索的数据的集合
- 数据库管理系统(DBMS)是管理特定类型数据库的程序
- 每个 DBMS 以自己的方式存储数据
- SQLite将每个数据库存储在单个文件中
- PostgreSQL将信息分散到多个文件中以获得更高的性能
- DBMS 可以是嵌入其他程序的库 ( SQLite ) 或服务器 ( PostgreSQL )
- 关系数据库管理系统( RDBMS) 将数据存储在表中并使用SQL进行查询
- 不幸的是,每个 RDBMS 都有自己的 SQL 方言
- 还有一些NoSQL 数据库,例如MongoDB,不使用表