1.关系型数据库基础知识
这个课程主要是帮助 SQL 零基础的 数据分析师 数据产品经理 快速入门 SQL 哒!( ̄▽ ̄)
课程视频链接在这里:https://www.bilibili.com/video/BV1DA411e7QU/
课程所用的 PPT 、教学示例数据、代码、作业习题可以到以下网址下载: https://github.com/XiaoMingOwO/Bilibili_SQL_guide
持续更新中~
1.1 数据库相关概念
- 数据库(DB):保存有组织的数据的容器。
- 数据库管理系统(DBMS):创建和操纵数据的容器。
- 数据库系统(DBS):DB+DBMS(含应用开发工具)+应用程序+数据库管理员(DBA)
- 数据模型:数据库的类型是根据数据模型来划分的,DBMS也是针对它进行设计的。
- 关系型数据库系统:支持关系模型的数据库系统
- 关系:一张二维表,可以反映某一特定业务。
前面的关系在面试题中常常会描述为下面这种形式。
学生(学生编号,学生姓名,学生性别,学生年龄)
选课(学生编号,课程编号,成绩)
1.2 键
键(key):又称作码,如果一个属性或多个属性组合可以唯一标识每一条记录,但是其子集不能标识,则该属性或属性组称为键。一个表可以有多个键。
- 学生表中“学生编号”是一个键,每一个学生只有一个编号,每一个编号只有一个键,它们是一对一的关系。
- 学生表中“学生姓名”如果根据业务意义绝对不重名的话也满足上述条件,这种情况下也可以称为键(键不能重复)。
- 学生表中“学生性别”不是一个键,因为一个性别可能对应多个学生,它们是多对一的关系。
- 课程表中的“学生编号”和“课程编号”单独都不是键,因为一个学生可以修多门课,一门课可以被多个学生修(多对多)。
- 课程表中(学生编号,课程编号)合在一起可以唯一标识每一个记录(如果不存在重修情况)。合在一起可以称为键。
1.3 索引、主键和外键
- 索引(Index):使用索引了的列查询速度更快。
- 主键(Primary Key):可以人为选定一个键作为一张表的主键。一张表可以没有主键。选定为主键的那一列数据里面不能出现空值(NULL),且要满足作为键的条件。
- 外键(Foreign key):用于强制约束表与表之间的联系。定义解释有点复杂,且数据分析人员不需要掌握,大家可以自行百度或者谷歌~
- 数据分析人员可以从定义的外键中知道表与表之间是根据哪个字段建立联系的,但是更多时候是直接通过字段命名和业务含义进行判断的~
- 例如,下面两张表中都有“学生编号”字段,含义一样时可以通过该字段建立两张表的联系。
学生(学生编号,学生姓名,学生性别,学生年龄)
选课(学生编号,课程编号,成绩)
1.4 SQL简介及MySQL环境安装
SQL:SQL 是一门用来访问和操作数据库系统的语言标准。版本众多但是基础语法相似,不同的SQL环境在语法细节上都会有稍许不同~
MySQL: 最流行的关系型数据库管理系统,也是本教程的示例环境。
- Windows安装: https://zhuanlan.zhihu.com/p/26657483
- Mac安装: https://www.jb51.net/article/163505.htm
- 懒哒安装(在线环境,定期自动删除): https://demo.phpmyadmin.net/master-config/
- 写SQL的图形界面:Navicat,记事本写。。。(随便用什么都行╮(╯▽╰)╭)
- 本教程使用MySQL Workbench:https://www.mysql.com/products/workbench/
安装教程见一二行Windows和Mac的MySQL安装教程