目录
Python中进行数据库表的"关联"的原理,并提供多种场景下的完整代码示例(以SQLite
为例,因为它无需额外安装数据库服务器,且兼容SQL语法;本方法同样适用于MySQL
、PostgreSQL
等,仅需更换连接方式即可)。
一、什么是数据库表的关联?
数据库表的简称“表”,关联(JOIN),就是通过表之间的外键(或相关字段)建立关系,从不同表中联合查询数据。常见表关系有:
- 一对一(如
用户
与用户档案
) - 一对多(如
班级
与学生
) - 多对多(如
学生
与课程
,靠第三张表,如选课表
完成关联)
最常用的SQL关联有:
INNER JOIN
:只返回两表中有匹配的记录。LEFT JOIN
/LEFT OUTER JOIN
:返回左表所有数据和右表匹配上的。RIGHT JOIN
(sqlite未直接支持):返回右表所有数据和左表匹配上的。FULL JOIN
:返回两表的全部数据(sqlite未直接支持,可用UNION模拟)。CROSS JOIN
:笛卡尔积。
二、准备数据库(以 SQLite 为例)
使用Python的sqlite3
模块。例子中的数据模型是「班级与学生」(一对多),以及「学生与课程」(多对多)。
1. 创建并插入数据
Python
import sqlite3
# 1. 建立连接并获取cursor
conn = sqlite3.connect(':memory:') # 用内存数据库,实际项目用文件名
cur = conn.cursor()
# 2. 创建表
cur.execute('''
CREATE TABLE class (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
''')
cur.execute('''
CREATE TABLE student (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
cla