# TiDB SQL for Developers

## 课程基本信息
+ 课程名: TiDB SQL for Developers
+ 版本
  + TiDB base version: 5.3.0 (5.3.0 以上的功能显性声明)
  + 课程: 0.1.0

## 简介
+ 本课程注重实际操作技能, 为后端开发者或意向成为后端开发的学习者们详细介绍如何在 TiDB 上使用 SQL 语言、以及利用 Connectors API 对数据进行各种操作。

## 课程学习前提条件
+ 本课程对学习者无任何前提要求, 工作经验与起点不同的学习者可以采取不同路径学习:
  + **初学者**, 请按顺序完成全部章节
  + 因为 TiDB 具有与 MySQL 兼容性良好, 如果您已经**熟悉 MySQL SQL 或标准 SQL**, 但对 `Database Connector API` 比较陌生, 在完成第1章的学习后, 请从第7章开始学习
  + 额外地, 如您已经**具备丰富的 MySQL 数据库之上开发应用的经验**, 在完成第1章之后请跳转至第7, 第8, 与第12章学习

## 大纲
+ 第一部分: 介绍
  + 章节 01: TiDB 集群的架构与特点
+ 第二部分: TiDB SQL 基础
  + 章节 02: 查询数据
  + 章节 03: 数据类型和表达式
  + 章节 04: SQL 函数
  + 章节 05: 表连接 - Join
  + 章节 06: 子查询 - Subquery
  + 章节 07: 使用 TiDB DDL
  + 章节 08: 使用 TiDB DML
+ 第三部分: 通过编程接口连接到 TiDB 并进行开发
  + 章节 09: 使用数据库连接器 - Connector API
  + 章节 10: 使用预编译语句 - Prepared Statement
  + 章节 11: 在程序中处理异常
+ 第四部分: 综合
  + 章节 12: 最佳实践精要总结

## 参考与引用
+ TiDB 文档: https://docs.pingcap.com/tidb
+ MySQL 文档: https://dev.mysql.com/doc
+ 外部示例 Schema: https://dev.mysql.com/doc/index-other.html
  + world

## 计划引入的扩展练习资源
+ WIP: *github workshop demo*
+ 外部示例 Schema: https://dev.mysql.com/doc/index-other.html
  + world_x
  + Employee: https://github.com/datacharmer/test_db
    + `git clone https://github.com/datacharmer/test_db.git`

## 详细大纲
+ 第一部分: 介绍
  + 章节 01: `TiDB` 集群的架构与特点
    + `TiDB` 整体架构
    + 与传统数据库架构相比的优势
    + 存储集群 `TiKV Servers` 概览
    + 计算集群 `TiDB Servers` 概览
    + 调度集群 `Placement Servers` 概览
    + 实验 01a: 在单机 `(Linux/MacOS)` 环境中启动 `TiDB Playground`
    + 实验 01b: 在单机 `(Linux/MacOS/Windows)` 环境中启动容器中的 `TiDB`
    + 实验 01c: 在单机 `Windows` 中启动虚拟机 `(Ubuntu)`, 并从中启动 `TiDB Playground`
    + 实验 01d: 注册并连接到 `TiDB Cloud`
+ 第二部分: `TiDB SQL` 基础
  + 章节 02: 查询数据
    + 查询语句语法
    + `SELECT` 投射
    + `SELECT` 过滤
    + `SELECT` 排序
    + `SELECT` 限制输出行数量
    + `SELECT` 实用技巧
    + `SELECT` 分页查询
    + 执行计划初探
  + 章节 03: 数据类型和字面值
    + 数字整型、浮点和定点类型
    + 布尔类型
    + 时间类型
    + 字符串
    + 枚举型
    + 字符集与定序
    + 选择数据类型的原则
    + 空值的定义
  + 章节 04: SQL 函数
  + 章节 05: 表连接 - Join
  + 章节 06: 子查询 - Subquery
  + 章节 07: 使用 TiDB DDL
  + 章节 08: 使用 TiDB DML
+ 第三部分: 通过编程接口连接到 TiDB 并进行开发
  + 章节 09: 使用数据库连接器 - Connector API
  + 章节 10: 使用预编译语句 - Prepared Statement
  + 章节 11: 在程序中处理异常
+ 第四部分: 综合
  + 章节 12: 最佳实践总结

## 知识点索引

| 知识点 | 章节 |
| :---        |    :----:   |
| sql_mode | 03 04 11 |
| 悲观锁 | 08 |
| 分页 | 02 |
| 乐观锁 | 08 |
| 事务控制 | 08 |
| 游标 | 09 10 |
| 整体架构 | 01 |
| 执行计划 | 01 02 04 |
| 自动提交 | 08 |