查询mysql主键表和外键关联查询

引言

在mysql数据库中,有时我们需要查询主键表和外键关联表的数据。本文将介绍实现这一查询的具体步骤和代码示例。

流程图

以下是查询mysql主键表和外键关联查询的流程图:

erDiagram
    CUSTOMER ||--|| ORDERS : has

步骤

  1. 连接到mysql数据库。
  2. 创建主键表CUSTOMER和外键关联表ORDERS
  3. 插入数据到CUSTOMER表和ORDERS表。
  4. 查询CUSTOMER表和ORDERS表的关联数据。

代码示例

1. 连接到mysql数据库

import mysql.connector

# 连接到mysql数据库
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="yourdatabase"
)

替换yourusernameyourpasswordyourdatabase为实际的数据库用户名、密码和数据库名称。

2. 创建主键表和外键关联表

# 创建主键表CUSTOMER
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE CUSTOMER (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255))")

# 创建外键关联表ORDERS
mycursor.execute("CREATE TABLE ORDERS (id INT AUTO_INCREMENT PRIMARY KEY, customer_id INT, product VARCHAR(255), FOREIGN KEY (customer_id) REFERENCES CUSTOMER(id))")

3. 插入数据

# 插入数据到CUSTOMER表
sql = "INSERT INTO CUSTOMER (name, email) VALUES (%s, %s)"
val = [
  ('John Doe', 'john@example.com'),
  ('Jane Smith', 'jane@example.com'),
  ('Bob Johnson', 'bob@example.com'),
  ('Alice Williams', 'alice@example.com')
]
mycursor.executemany(sql, val)
mydb.commit()

# 插入数据到ORDERS表
sql = "INSERT INTO ORDERS (customer_id, product) VALUES (%s, %s)"
val = [
  (1, 'Product 1'),
  (1, 'Product 2'),
  (2, 'Product 3'),
  (3, 'Product 4'),
  (3, 'Product 5'),
  (4, 'Product 6')
]
mycursor.executemany(sql, val)
mydb.commit()

4. 查询关联数据

# 查询主键表和外键关联表的数据
sql = "SELECT CUSTOMER.name, ORDERS.product FROM CUSTOMER INNER JOIN ORDERS ON CUSTOMER.id = ORDERS.customer_id"
mycursor.execute(sql)
result = mycursor.fetchall()

# 输出查询结果
for row in result:
  print(row)

以上代码示例中的CUSTOMER表包含idnameemail三个字段,ORDERS表包含idcustomer_idproduct三个字段。ORDERS表的customer_id字段是外键,关联到CUSTOMER表的id字段。

结论

通过以上步骤和代码示例,我们可以成功查询mysql主键表和外键关联表的数据。这对于需要获取相关数据的开发任务是非常有用的。