数据科学家学习100个SQL查询教程


点击标题 适合非计算机专业的其他领域专家通过数据获得见解。

目标受众

  • Rachel 拥有细胞生物学硕士学位,现在在一家研究医院从事细胞分析工作。
  • 她在本科生生物统计学课程中学习了一些 R 语言,并完成了有关 Unix shell 的 Carpentries 课程。
  • Rachel 正在考虑成为一名数据科学家,并想了解数据是如何存储和管理的。
  • 她的工作日程不可预测且变化很大,因此她需要能够一次学习一点。

先决条件

  • 基本 Unix 命令行:cd, ls,*通配符
  • 基本表格数据分析:过滤行、在组内聚合

学习成果
  • 解释数据库和数据库管理器之间的区别。
  • 编写 SQL 来选择、过滤、排序、分组和聚合数据。
  • 定义表并插入、更新和删除记录。
  • 描述不同类型的联接并编写使用它们组合数据的查询。
  • 使用窗口函数对相邻行进行操作。
  • 解释什么是事务并编写在违反约束时回滚的查询。
  • 解释什么是触发器并编写 SQL 来创建它们。
  • 使用 SQL 操作 JSON 数据。
  • 直接使用 Python、从 Jupyter Notebook 以及通过 ORM 与数据库进行交互。

设置

  • 下载最新版本
  • 将文件解压到临时目录中创建:

  1. ./db/*.db:示例中使用的 SQLite 数据库
  2. ./src/*.*:SQL 查询、Python 脚本和其他源代码
  3. ./out/*.*:示例的预期输出

背景概念

  • 数据库是可以搜索和检索数据的集合
  • 数据库管理系统(DBMS)是管理特定类型数据库的程序
  • 每个 DBMS 以自己的方式存储数据
    • SQLite将每个数据库存储在单个文件中
    • PostgreSQL将信息分散到多个文件中以获得更高的性能
  • DBMS 可以是嵌入其他程序的库 ( SQLite ) 或服务器 ( PostgreSQL )
  • 关系数据库管理系统( RDBMS) 将数据存储在表中并使用SQL进行查询
    • 不幸的是,每个 RDBMS 都有自己的 SQL 方言
  • 还有一些NoSQL 数据库,例如MongoDB,不使用表