31.多表查询之笛卡尔积

发布时间 2024-01-03 21:21:36作者: 想要暴富的小男孩

目录

 
  • 多表查询与数据准备
  • 笛卡尔积简介

多表查询的定义

 
  • 定义: 通过查询多张表格获取数据,至少涉及两张表
  • 数据准备:
    • 创建部门表,插入三条数据
    • 创建员工信息表添加外键约束,允许级联删除,并向三个部门插入对应的员工信息
## 创建部门信息表 
CREATE TABLE dept(  
id INT PRIMARY KEY AUTO_INCREMENT,  
dept_name VARCHAR(20),  
dept_manager VARCHAR(20),  
dept_location VARCHAR(20)  
); 
INSERT INTO dept VALUES(1,'研发部','张无忌','北京');
INSERT INTO dept VALUES(2,'运营部','赵敏','深圳');
INSERT INTO dept VALUES(3,'销售部','周芷若','成都');

# 创建员工信息表并添加级联删除的外键约束 
CREATE TABLE emp_part(  
emp_id INT PRIMARY KEY AUTO_INCREMENT,  
ename VARCHAR(20),  
age INT ,  
gender VARCHAR(10),
dept_id INT,
salary INT,
-- 添加外键约束 
CONSTRAINT emp_dept FOREIGN KEY(dept_id) REFERENCES dept(id)
-- 设置允许级联删除 
ON DELETE CASCADE
);

向员工信息表中插入数据

 
INSERT INTO emp_part VALUES(1,'令狐冲',25,'男','1',20000);
INSERT INTO emp_part VALUES(2,'任盈盈',23,'女','1',15000);  
INSERT INTO emp_part VALUES(3,'岳不群',45,'男','1',40000);
INSERT INTO emp_part VALUES(4,'任我行',40,'男','1',30000); 
INSERT INTO emp_part VALUES(5,'岳灵珊',21,'女','1',10000);
INSERT INTO emp_part VALUES(6,'赵灵儿',21,'女','2',7000); 
INSERT INTO emp_part VALUES(7,'林月如',22,'女','2',10000); 
INSERT INTO emp_part VALUES(8,'阿奴',20,'女','2',7000); 
INSERT INTO emp_part VALUES(9,'李逍遥',25,'男','2',15000); 
INSERT INTO emp_part VALUES(10,'景天',28,'男','2',20000);
INSERT INTO emp_part VALUES(11,'邱莹莹',21,'女','3',5000);
INSERT INTO emp_part VALUES(12,'关雎尔',22,'女','3',8000);
INSERT INTO emp_part VALUES(13,'曲筱绡',23,'女','3',10000);
INSERT INTO emp_part VALUES(14,'樊胜美',30,'女','3',10000);
INSERT INTO emp_part VALUES(15,'安迪',28,'女','3',20000);

笛卡尔积

 
  • 定义: 笛卡尔积是一个数学概念,又称直积,它是指两个集合元素所有可能有序对的集合。

  • 例子:

    • A={a,b},B={c,d}
    • A*B ={(a,c),(b,c),(a,d),(b,d)}
  • 语法:select 字段名称 from 表1, 表2

案例

 
  • 查询出运营部的部门信息及该部门下的员工信息