Topic 1.1 - 数据库与 SQL 语言简介¶
1. 数据库基本介绍¶
(1) 数据库¶
数据: Data,这个东西大家都不陌生,简单理解,数据就是将现实世界中的事物记录下来:
- 数据的形式可以是多种多样的,例如:文本、图片、视频、音频等
- 而我们本门课所关注的数据,主要是结构化数据(Structured Data),说白了就是有行有列的表格数据,表格中的列决定了表格将会记录哪些信息
- 表格数据的一个重要特征就是规整,也就是说每行要记录的信息其实是一样的
- 例如下面身高体重表,每行都记录了一个人的姓名、班级、身高和体重,而并没有灵活性可以记录额外的信息:
数据库: Database,是一个有组织的数据集合,大家可以简单理解,数据库就是多个表格放在一起的组合
- 我们本门课所接触的数据库,主要是关系型数据库(Relational Database),它的特点就是表格之间是有一定关系的
- 例如,我们的数据库中有两张表,一张就是上面的身高体重表,另一张是班级信息表:
- 这两张表中是有共同信息的,就是班级,我们可以通过这个共同信息将两张表连接起来,查询出每个人的姓名、身高、体重以及班主任是谁:
那么到此我们就见到了两种数据记录的形式:
- 一种是像上面的身高体重表和班级信息表一样,记录和维护两个小表
- 一种是将上面两张表连接起来,形成一个大表,记录和维护一个大表
- 这两种形式哪个更好呢?其实对于关系型数据库来说,我们更倾向于第一种形式,也就是记录和维护多个小表,而不是一个大表
- 因为记录两个小表比记录一个大表是更省空间的,而且更方便维护,比方说,如果一班的班主任换成了李老师,那么我们只需要在班级信息表中修改一下就可以了,而如果是一个大表的话,我们就需要修改每一行数据,工作量就会非常大
(2) 数据库管理系统¶
数据库管理系统: Database Management System (DBMS)是一个软件系统,用于管理数据库,具体的功能包括查询、插入、更新和删除等操作:
-
我们举一个简单的例子:
- 大家在 APP Store 上面下载安装的哔哩哔哩,其实就是 B 站的数据库管理系统,通过这个数据库管理系统,大家可以浏览(查询)、发布(插入)、修改(更新)和删除(删除)视频等内容,当然查询是全网查询,但是发布、修改和删除只能针对自己的账号进行操作
- 注意我们下载的可不是 B 站的数据库,因为 B 站数据库里成千上万的视频是不可能下载下来的
- 因此,我们下载的其实是 B 站的数据库管理系统,通过这个数据库管理系统,我们可以访问或者管理 B 站数据库中的数据
-
其实大家后续学习的过程中,会越来越淡化数据库和数据库管理系统的区别,甚至有时候会直接将两者混用,但是在一开始学习的时候,一定要清楚两者的区别,避免混淆
-
为什么会混淆呢,其实是因为大部分的个人和小企业,数据管理的方式就是 Excel 表格,根据我们之前的定义,Excel 其实是一个数据库与数据库管理系统高度集成的产物:
- Excel 本身是一个数据库管理系统,提供了查询、插入、更新和删除等功能
- 同时,Excel 最大的特点就是,它可以让数据直接对用户可见,也就是说,用户可以直接看到表格中的数据
-
我们本门课所接触的数据库都不会像 Excel 那样直接对用户可见:
- 数据储存在数据库中,用户并不能直接看到数据长什么样子,而是需要通过数据库管理系统提供的查询功能,才能看到数据的内容
-
这样做的好处是可以高效地存储和管理大量数据:
- 大家在用 Excel 的时候,如果数据量过大,表格就会变得非常卡顿
- 而我们本门课所接触的数据库,数据都是存储在后台的,并不会把所有数据都直接加载到前台展示给用户
- 只有当用户通过查询功能请求数据的时候,数据库管理系统才会从后台把相关数据加载到前台展示给用户,这样就可以高效地存储和管理大量数据了
2. SQL 语言基本介绍¶
(1) SQL 语言的定义¶
SQL: Structured Query Language 是一种用于管理关系型数据库的编程语言,主要用于查询、插入、更新和删除数据库中的数据:
SQL 语言是可以管理整个数据表,或者单条数据的,按照这两个管理对象,SQL分为一下两类:
-
SQL DDL: Data Definition Language: 数据定义语言:用于定义数据库结构的 SQL 语言,其实就是对数据表的操作:
- 增加表(Table Create)
- 修改表(Table Update)
- 删除表(Table Delete)
-
SQL DML: Data Manipulation Language: 数据操作语言:用于操作数据库中一条条数据的 SQL 语言,其实就是对表中数据的操作:
- 增加数据(Data Create)
- 修改数据(Data Update)
- 删除数据(Data Delete)
- 查询数据(Data Retrieve)
我们本门课所讲的内容,就只局限于 SQL DML 中的 Data Retrieve,也就是对表中数据的查询操作
- 我们不涉及 SQL DDL,也就是对数据表的操作
- 也不会涉及 SQL DML 中的 Data Create、Data Update 和 Data Delete,也就是对表中数据的增删改操作
- 只会设计 SQL DML 中的 Data Retrieve,也就是对表中数据的查询操作
- 这个也是商业分析专业对同学们的要求,掌握数据查询即可,以后到了企业中,数据的增删改操作,基本上都是由数据工程师来完成的,而商业分析师只需要掌握数据查询就可以了
虽然其他的 SQL 功能都不涉及,但是我们可以简单看一下 SQL DDL 和 SQL DML 中的语言风格:
-- SQL DDL
-- Table Create
CREATE TABLE students (ID INT, Name VARCHAR(50))
-- Table Update
ALTER TABLE students ADD COLUMN Grade VARCHAR(2)
-- Table Delete
DROP TABLE students
-- SQL DML
-- Data Create
INSERT INTO students (ID, FirstName, LastName) VALUES (1234, 'Jane', 'Smith');
-- Data Update
UPDATE students SET Grade = 'H2' WHERE ID = 1234;
-- Data Delete
DELETE FROM students WHERE ID = 1234;
-- Data Retrieve
SELECT FirstName, LastName FROM students WHERE Grade = 'H1';
(2) SQL 语言的特点¶
SQL 语言和大家学的 Python 或者 R 语言不太一样:
-
首先 SQL 语言是比较接近自然语言的,SQL 语言的语法结构和英语比较相似,上手难度会相对较低
-
其次 SQL 语言是一个声明式语言(Declarative Language):
- 也就是说,我们在使用 SQL 语言的时候,不需要告诉计算机具体的操作步骤,而是只需要告诉计算机我们想要什么样的结果
- 之后,计算机会自己去推断出实现这个结果的具体操作步骤
- 这个是 SQL 与 Python 或者 R 语言的一个重要区别
SQL 语言的语法是会随数据库系统的不同而有所差异的,不同数据库语法大概 60% 相同,40% 不同:
- 我们本门课使用的是 Azure SQL Database,所学的语法也是基于 Azure SQL Database 的语法
- 但是市面上还有很多其他的数据库系统,例如 MySQL、PostgreSQL、Oracle Database 等等,这些数据库系统的 SQL 语法可能会有一些差异
- 举个简单的例子,如果想查询成绩排名第一的学生,Azure SQL Database 的语法是:
SELECT TOP 1 *
FROM students
ORDER BY score DESC;
- 而 MySQL 的语法则是:
SELECT *
FROM students
ORDER BY score DESC
LIMIT 1;
- 因此同学们以后如果进了企业,可能需要先了解一下企业数据库系统的 SQL 语法,它和大家在学校学的还是会有一些差异的