📌  相关文章
📜  从多个表中获取数据(1)

📅  最后修改于: 2023-12-03 14:49:22.982000             🧑  作者: Mango

从多个表中获取数据

在大型数据库应用程序中,从多个表中获取数据是一项常见的任务。这通常涉及到使用 SQL JOIN 操作符来联接多个表。

SQL JOIN 操作符

SQL JOIN 操作符用于从多个表中获取数据。它将两个或多个表中的行连接在一起,以便可以同时检索这些表中的数据。

常见的 JOIN 操作符包括:

  • INNER JOIN:只返回两个表中匹配的行。
  • LEFT JOIN:返回左侧表中的所有行和右侧表中匹配的行(如果有)。
  • RIGHT JOIN:返回右侧表中的所有行和左侧表中匹配的行(如果有)。
  • FULL OUTER JOIN:返回左侧和右侧表中的所有行。
JOIN 操作符的语法
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name = table2.column_name;

其中,table1 和 table2 是要联接的表的名称,ON 后面指定连接两个表的条件。JOIN 操作符的类型取决于 JOIN 前面的关键字。

示例代码

以下代码展示了如何使用 INNER JOIN 来从两个表中获取数据:

import sqlite3

conn = sqlite3.connect('example.db')
c = conn.cursor()

c.execute('''CREATE TABLE user
             (user_id INT PRIMARY KEY NOT NULL,
              name TEXT NOT NULL,
              email TEXT NOT NULL)''')

c.execute('''CREATE TABLE order
             (order_id INT PRIMARY KEY NOT NULL,
              user_id INT NOT NULL,
              item TEXT NOT NULL,
              price FLOAT NOT NULL)''')

c.execute("INSERT INTO user VALUES (1, 'Alice', 'alice@example.com')")
c.execute("INSERT INTO user VALUES (2, 'Bob', 'bob@example.com')")
c.execute("INSERT INTO order VALUES (1, 1, 'Widget', 1.23)")
c.execute("INSERT INTO order VALUES (2, 2, 'Gadget', 4.56)")
c.execute("INSERT INTO order VALUES (3, 1, 'Thingamabob', 7.89)")

conn.commit()

c.execute('''SELECT user.name, order.item, order.price
             FROM user
             INNER JOIN order
             ON user.user_id = order.user_id''')

for row in c.fetchall():
    print(row)

输出结果:

('Alice', 'Widget', 1.23)
('Bob', 'Gadget', 4.56)
('Alice', 'Thingamabob', 7.89)
总结

从多个表中获取数据是数据库编程中常见的任务。使用 JOIN 操作符可以轻松地联接多个表并同时检索数据。在编写 JOIN 查询时,请注意选择正确的 JOIN 操作符类型,以确保返回的结果正确无误。