Table

Joining Tables

  • 通过将多张表连接成一张表来组合数据,这是数据库系统中的基本操作。

  • 我们在本类中只重点介绍一种方法(内部连接)。

  • 如果连接两个表,左边的表有 m 条记录,右边的表有 n 条记录,那么连接后的表将有 mn 条记录

CREATE TABLE dogs AS
 SELECT "abraham" AS name, "long" AS fur UNION
 SELECT "barack"         , "short"       UNION
 SELECT "clinton"        , "long"        UNION
 SELECT "delano"         , "long"        UNION
 SELECT "eisenhower"     , "short"       UNION
 SELECT "fillmore"       , "curly"       UNION
 SELECT "grover"         , "short"       UNION
 SELECT "herbert"        , "curly";

CREATE TABLE parents AS
 SELECT "abraham" AS parent, "barack" AS child UNION
 SELECT "abraham"          , "clinton"         UNION
 ...;
  • 两张表 A和B 用逗号连接,得出 A和B中某行 的所有组合。

    • Select the parents of curly-furred dogs

用 Python 描述 SQL join

联接就像创建嵌套for循环。

  • 每一行table_1和每一行table_2,联接将对行的每种可能的组合进行迭代,并将其视为输入表

Aliases and Dot Expressions(别名和点表达式)

  • 两个表可能共用一个列名,所以我们需要一种方法来区分表的列名。

  • 点表达式和别名 可以消除列值的歧义。

  • SQL允许我们在 FROM 子句中使用关键字 AS 给表赋予别名,

  • 使用点表达式来引用特定表内的列。

    SELECT [columns] FROM [table] WHERE [condition] ORDER BY [order];

  • [table] 是一个以逗号分隔的表名列表,可选择别名

  • 选择所有相同 parent 的 child

Numerical Expressions

  • 表达式可以包含函数调用和算术运算符

  • SELECT [columns] FROM [table] WHERE [expression] ORDER BY [expression];

  • Combine values: +, -, *, /, %, and, or

  • Transform values: abs, round, not, -

  • Compare values: <, <=, >, >=, <>, !=, =

    • <>, != ANSI标准中是用<>(所以建议用<>)

    • = 因为 SQL 没有赋值,所有用 = 比较

String Expressions

Last updated

Was this helpful?