Python 数据库表的关联

目录

一、什么是数据库表的关联?

二、准备数据库(以 SQLite 为例)

1. 创建并插入数据

三、表关联查询的SQL和Python结合示例

1. 一对多(班级-学生)

2. 多对多(学生-课程)

3. LEFT JOIN 示例

四、使用 ORM (如 SQLAlchemy) 进行表关联

五、常见场景和注意点

六、小结


Python中进行数据库表的"关联"的原理,并提供多种场景下的完整代码示例(以SQLite为例,因为它无需额外安装数据库服务器,且兼容SQL语法;本方法同样适用于MySQLPostgreSQL等,仅需更换连接方式即可)。


一、什么是数据库表的关联?

数据库表的简称“表”,关联(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值