数据库用于存储表格、列和行中的结构化信息。为了与这些数据库进行实际交流,并提出诸如“显示所有客户姓名”或“上个月的总销售额是多少?”这样的问题,需要一种通用语言。这种语言就是SQL。SQL代表结构化查询语言。它是用于与关系型数据库管理系统(RDBMS)通信的标准化、被广泛接受的语言。可以把它看作是专门设计用于管理和查询表格中数据的专用语言。如果你想获取信息、修改数据,甚至定义数据库本身的结构,你几乎肯定会用到SQL。SQL能做些什么?虽然SQL是一种全面的数据库管理语言,但在数据科学的背景下,我们主要关注它在数据获取和准备方面的作用。以下是你将在本课程中使用SQL完成的一些主要任务:获取数据: 这是最基本的操作。你可以精确指定需要从一个或多个表中获取哪些列和行。SELECT语句是完成此操作的核心,我们将投入大量时间来掌握它。筛选数据: 你很少需要所有数据。SQL允许你根据特定条件筛选行。例如,你可以使用WHERE子句请求某个特定区域的客户,或某个日期之后下的订单。排序数据: 你可以控制结果的显示顺序,例如使用ORDER BY子句按姓氏字母顺序或按销售额从高到低对客户进行排序。汇总数据: SQL提供了对多行数据进行计算的函数。你可以统计记录数量 (COUNT)、计算总和 (SUM)、查找平均值 (AVG),或确定最小值 (MIN) 和最大值 (MAX)。这对于信息归纳非常重要。 "5. 组合数据: 分析通常需要来自多个表的信息(例如将客户与其订单关联)。SQL的JOIN操作允许你根据相关列合并这些表,从而形成数据的统一视图。"SQL还包括用于插入新数据 (INSERT)、更新现有数据 (UPDATE) 和删除数据 (DELETE) 的命令,以及管理数据库结构本身(如创建或修改表)的命令。虽然了解这些内容是有益的,但本课程将侧重于与数据分析任务最相关的查询方面(SELECT及其相关子句)。SQL为何对数据科学很重要在数据科学方面,数据是原始材料。通常,这些原始材料存在于支持网站、业务运营或科学研究的关系型数据库中。能够直接使用SQL访问、查看和提取这些数据是一项基本技能。在你应用复杂的机器学习算法或创建有见地的数据可视化之前,你通常需要以正确的格式获取正确的数据。SQL正是能让你做到这一点的工具。熟练掌握SQL可以帮助你:直接与数据源交互。高效执行初步数据查看和清洗步骤。准备专为你的分析目标量身定制的数据集。了解数据在组织内部的结构和关联方式。digraph SQL_Interaction { rankdir=LR; node [shape=box, style=rounded, fontname="Arial", fontsize=10, margin=0.1]; edge [fontname="Arial", fontsize=9]; User [label="数据科学家/分析师", fillcolor="#e9ecef", style=filled]; SQL_Query [label="SQL查询\n(例如:SELECT name\nFROM customers\nWHERE region = 'North')", shape=note, fillcolor="#a5d8ff", style=filled]; DBMS [label="数据库管理系统 (DBMS)", fillcolor="#ced4da", style=filled]; Database [label="关系型数据库\n(表:客户、订单等)", shape=cylinder, fillcolor="#adb5bd", style=filled]; Results [label="查询结果\n(例如:北部客户列表)", shape=table, fillcolor="#b2f2bb", style=filled, fontcolor="#37b24d"]; User -> SQL_Query [label="编写"]; SQL_Query -> DBMS [label="发送请求"]; DBMS -> Database [label="执行查询"]; Database -> DBMS [label="获取数据"]; DBMS -> Results [label="格式化数据"]; Results -> User [label="接收"]; }这是一个用户如何使用SQL与数据库交互的简化视图。用户编写查询,数据库管理系统(DBMS)对数据库进行处理,然后返回结果。SQL是声明性的SQL的一个有意思的特点是,它通常是一种声明性语言。这意味着你指定你想要什么数据,而不是如何获取它。你描述所需的结果(例如,“给我按注册日期排序的加利福尼亚客户姓名”),数据库系统的复杂查询优化器会找出访问表、筛选行并返回信息的最有效方法。这与过程性语言形成对比,在过程性语言中,你通常需要编写计算机遵循的分步指令。这种声明性使得基本的SQL通常相对容易学习和编写。标准化和方言SQL是ANSI(美国国家标准协会)和ISO(国际标准化组织)的标准。然而,大多数数据库系统(如PostgreSQL、MySQL、SQL Server、Oracle、SQLite)在实现标准功能的同时,也包含了它们自己的专有扩展或变体。这意味着,虽然核心的SQL命令(SELECT、WHERE、INSERT等)在不同系统间非常相似,你可能会遇到语法或可用函数上的细微差异。这些变体通常被称为不同的SQL“方言”。暂时不用担心这一点;本课程所涵盖的核心内容和命令几乎适用于你可能遇到的所有关系型数据库。现在你已经了解了什么是SQL以及它为何重要,我们准备开始使用它。在下一章中,我们将编写第一个SQL查询,使用SELECT语句来获取数据。