Logo
Section 1 / 12

SQL 命令入门

学习使用SQL命令的初步步骤。

导入

SQL 命令入门

学习使用SQL命令的初步步骤。

本课程将讲解实体与关系的基本概念,并结合实际的 SQL 命令和聚合函数进行演示。我们还将介绍主键、外键以及各种运算符,包括 LIKE、AND 和 OR。

客户关系管理系统(CRMS)

我们已经开始设计一个基础的**客户关系管理系统(CRMS)**的数据库。以下是该数据库包含的表及其相互关系的示意图。

...
CRMS 实体关系图

表格的基本信息

我们将从回顾上方的实体关系图(ERD)开始,然后讨论一些在图中可能不明显但重要的列规则。

我们看到共有四个表:

  • customers
  • orders
  • products
  • order_items

customers 表

  • customers 表包含一个 id 列,该列也是此表的主键。这意味着每个客户都拥有唯一的 id 值。
  • 该表包含一个 name 列。其值不要求唯一,即可以有多个客户具有相同的姓名。该列为必填项,因为无法存在没有名称的客户。

orders 表

  • 该表也包含一个 id 列,作为表的主键,确保每笔订单都有唯一的 ID。
  • 它有一个 customer_id 列,用于引用 customers 表中的对应行,表示该订单属于哪个客户。这被称为外键,因为它指向另一张表(customers)的主键(id)。customer_id 是必填项。
  • 它有一个 order_number 列,为字符串类型,必须填写且值唯一。
  • 它有一个 ordered_at 列,为时间戳类型,是必填项,用于记录客户下单的时间。如果创建订单时未指定,则自动使用当前时间。
  • customers 与 orders 之间存在一对多的关系:一个客户可以有多个订单,而每一个订单只能归属于一个客户。

products 表

  • 该表包含一个 id 列,作为主键。
  • 同时包含一个 name 列,为必填的字符串类型,且不允许两个产品具有相同的名称。

order_items 表

  • 该表包含一个 id 列,作为表的主键。
  • 它有一个 order_id 列,用于引用所属的订单,是外键。
  • orders 与 order_items 之间存在一对多的关系:一个订单可以包含多个订单项。
  • 该表还有一个 product_id 列,用于引用对应的 products 表中的产品实例,也是一个外键。该列是必填项,因为每个订单项都必须关联到一个具体的产品。
  • products 与 order_items 之间也存在一对多的关系:一个产品可以出现在多个订单项中。
  • 业务规则规定:同一订单中不能出现重复的产品。通过 quantity 字段来支持同一产品在同一个订单中出现多次的情况。quantity 为整数类型,是必填项,默认值为 1。
  • order_items 表的作用在于建模 orders 与 products 之间的多对多关系。正如前一章所述,多对多关系通常通过中间表来实现。在本例中,这个中间表就是 order_items,从而形成两个一对多的关系:一个订单可以有多个订单项,一个产品也可以出现在多个订单项中。

即使是一个简单的 CRMS 系统,其数据模型也涉及大量细节,我们尚未列出全部内容。

管理 MySQL 服务器

创建并选择数据库