mysql数据库的多表查询(一对一,一对多,多对多)
表关系_一对一
– 创建db3数据库
CREATE DATABASE db3;
– 使用db3数据库
USE db3;
– 创建person表
CREATE TABLE person( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id NAME VARCHAR(20) -- 姓名 );
– 添加数据
INSERT INTO person VALUES (NULL,张三),(NULL,李四);
– 创建card表
CREATE TABLE card( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id number VARCHAR(20) UNIQUE NOT NULL, -- 身份证号 pid INT UNIQUE, -- 外键列 CONSTRAINT cp_fk1 FOREIGN KEY (pid) REFERENCES person(id) );
– 添加数据
INSERT INTO card VALUES (NULL,12345,1),(NULL,56789,2);
表关系_一对多
– 创建user表
CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id NAME VARCHAR(20) -- 姓名 );
– 添加数据
INSERT INTO USER VALUES (NULL,张三),(NULL,李四);
– 创建orderlist表
CREATE TABLE orderlist( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id number VARCHAR(20), -- 订单编号 uid INT, -- 外键列 CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id) );
– 添加数据
INSERT INTO orderlist VALUES (NULL,hm001,1),(NULL,hm002,1),(NULL,hm003,2),(NULL,hm004,2);
/* 商品分类和商品 */ – 创建category表
CREATE TABLE category( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id NAME VARCHAR(10) -- 分类名称 );
– 添加数据
INSERT INTO category VALUES (NULL,手机数码),(NULL,电脑办公);
– 创建product表
CREATE TABLE product( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id NAME VARCHAR(30), -- 商品名称 cid INT, -- 外键列 CONSTRAINT pc_fk1 FOREIGN KEY (cid) REFERENCES category(id) );
– 添加数据
INSERT INTO product VALUES (NULL,华为P30,1),(NULL,小米note3,1), (NULL,联想电脑,2),(NULL,苹果电脑,2);
表关系_多对多
– 创建student表
CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id NAME VARCHAR(20) -- 学生姓名 );
– 添加数据
INSERT INTO student VALUES (NULL,张三),(NULL,李四);
– 创建course表
CREATE TABLE course( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id NAME VARCHAR(10) -- 课程名称 );
– 添加数据
INSERT INTO course VALUES (NULL,语文),(NULL,数学);
– 创建中间表
CREATE TABLE stu_course( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id sid INT, -- 用于和student表中的id进行外键关联 cid INT, -- 用于和course表中的id进行外键关联 CONSTRAINT sc_fk1 FOREIGN KEY (sid) REFERENCES student(id), -- 添加外键约束 CONSTRAINT sc_fk2 FOREIGN KEY (cid) REFERENCES course(id) -- 添加外键约束 );
– 添加数据
INSERT INTO stu_course VALUES (NULL,1,1),(NULL,1,2),(NULL,2,1),(NULL,2,2);