查询mysql主键表和外键关联查询
引言
在mysql数据库中,有时我们需要查询主键表和外键关联表的数据。本文将介绍实现这一查询的具体步骤和代码示例。
流程图
以下是查询mysql主键表和外键关联查询的流程图:
erDiagram
CUSTOMER ||--|| ORDERS : has
步骤
- 连接到mysql数据库。
- 创建主键表
CUSTOMER
和外键关联表ORDERS
。 - 插入数据到
CUSTOMER
表和ORDERS
表。 - 查询
CUSTOMER
表和ORDERS
表的关联数据。
代码示例
1. 连接到mysql数据库
import mysql.connector
# 连接到mysql数据库
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
替换
yourusername
、yourpassword
和yourdatabase
为实际的数据库用户名、密码和数据库名称。
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
表包含id
、name
和email
三个字段,ORDERS
表包含id
、customer_id
和product
三个字段。ORDERS
表的customer_id
字段是外键,关联到CUSTOMER
表的id
字段。
结论
通过以上步骤和代码示例,我们可以成功查询mysql主键表和外键关联表的数据。这对于需要获取相关数据的开发任务是非常有用的。