数据库的多表关系:
建立数据表person和card,设置person数据表id为主键且自增,设置card的id为外键
// 创建card表
CREATE TABLE card (
id INT PRIMARY KEY AUTO_INCREMENT, // 主键 自增
number VARCHAR(20) UNIQUE NOT NULL,// 不能为null
pid INT UNIQUE,// pid唯一
CONSTRAINT cp_fk1 FOREIGN KEY (pid) REFERENCES person(id) // 外键列
);
创建user数据表和orderlist数据表,这里不再设置uid为唯一值,因此是一对多的关系
// 添加数据
INSERT INTO USER VALUES (NULL, ‘张三’),(NULL, ‘李四’);
//创建orderlist表
CREATE TABLE orderlist(
id INT PRIMARY KEY AUTO_INCREMENT,
number VARCHAR(20),
uid INT, // 这里没有再设置唯一值
CONSTRAINT out_fk1 FOREIGN KEY (uid) REFERENCES USER(id) // 外键列
);
— 添加数据
INSERT INTO orderlist VALUES (NULL, ‘hm001’, 1), (NULL, ‘hm002’, 1),(NULL, ‘hm003’, 2),(NULL, ‘hm004’, 2);
);
// 创建course表
CREATE TABLE course (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10)
);
//创建中间表
CREATE TABLE stu_course(
id INT PRIMARY KEY AUTO_INCREMENT,
sid INT,
cid INT,
CONSTRAINT sc_fk1 FOREIGN KEY (sid) REFERENCES student(id),// 设置外键
CONSTRAINT sc_fk2 FOREIGN KEY (cid) REFERENCES course(id)// 设置外键
);
多表查询-内链查询:
通过规定语法,进行内链查询
多表查询-隐式内连接:
多表查询-左外连接:
// 查询所有用户信息,以及用户对应的订单信息
SELECT u.* o.number FROM USER u LEFT OUTER JOIN orderlist o ON o.uid = u.id;
多表查询-右外连接:
多表查询-子查询:
// 查询年龄最高的用户姓名
SELECT NAME,age FROM USER WHERE age=(SELECT MAX(age) FROM USER);
// 结果是多行单列的
// 标准语法:SELECT 列名 FROM 表名 WHERE 列名 [NOT] IN (SELECT 列名 FROM 表名 [WHERE 条件]);
// 查询张三和李四的订单信息
SELECT * FROM orderlist WHERE uid IN (SELECT id FROM USER WHERE NAME IN (‘张三’,’李四’));
// 结果是多行多列的
// 标准语法: SELECT 列名 FROM 表名 [别名],(SELECT 列名 FROM 表名 [WHERE 条件]) [别名] [WHERE 条件];
// 查询订单表中id大于4的订单信息和所属用户信息
SELECT u.name, o.number FROM USER u, (SELECT * FROM orderlist WHERE id > 4) o WHERE o.uid=u.id;
到此这篇关于MySQL数据库的多表操作的文章就介绍到这了,更多相关MySQL表操作内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!