跳转至

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 语法,它和大家在学校学的还是会有一些差异的