MYSQL(基础命令9)

3.多表查询

3.1 什么是多表查询

  • DQL: 查询多张表,获取到需要的数据
  • 比如 我们要查询家电分类下 都有哪些商品,那么我们就需要查询分类与商品这两张表

3.2 数据准备

3.2.1 创建db3_2数据库

-- 创建 db3_2 数据库 , 指定编码
CREATE DATABASE db3_2 CHARACTER SET utf8;

3.2.2 创建分类表与商品表

# 分类表 ( 一方 主表 )
CREATE TABLE category (
cid VARCHAR ( 32 ) PRIMARY KEY ,
cname VARCHAR ( 50 )
);
# 商品表 ( 多方 从表 )
CREATE TABLE products(
pid VARCHAR ( 32 ) PRIMARY KEY ,
pname VARCHAR ( 50 ),
price INT ,
flag VARCHAR ( 2 ), # 是否上架标记为: 1 表示上架、 0 表示下架
category_id VARCHAR ( 32 ),
-- 添加外键约束
FOREIGN KEY (category_id) REFERENCES category (cid)
);

3.2.3 插入数据

# 分类数据
INSERT INTO category(cid,cname) VALUES ( 'c001' , ' 家电 ' );
INSERT INTO category(cid,cname) VALUES ( 'c002' , ' 鞋服 ' );
INSERT INTO category(cid,cname) VALUES ( 'c003' , ' 化妆品 ' );
INSERT INTO category(cid,cname) VALUES ( 'c004' , ' 汽车 ' );
# 商品数据
INSERT INTO products(pid, pname,price,flag,category_id) VALUES ( 'p001' , ' 小米电视
' , 5000 , '1' , 'c001' );
INSERT INTO products(pid, pname,price,flag,category_id) VALUES ( 'p002' , ' 格力空
' , 3000 , '1' , 'c001' );
INSERT INTO products(pid, pname,price,flag,category_id) VALUES ( 'p003' , ' 美的冰
' , 4500 , '1' , 'c001' );
INSERT INTO products (pid, pname,price,flag,category_id) VALUES ( 'p004' , ' 篮球
' , 800 , '1' , 'c002' );
INSERT INTO products (pid, pname,price,flag,category_id) VALUES ( 'p005' , ' 运动
' , 200 , '1' , 'c002' );
INSERT INTO products (pid, pname,price,flag,category_id) VALUES ( 'p006' , 'T
' , 300 , '1' , 'c002' );
INSERT INTO products (pid, pname,price,flag,category_id) VALUES ( 'p007' , ' 冲锋
' , 2000 , '1' , 'c002' );
INSERT INTO products (pid, pname,price,flag,category_id) VALUES ( 'p008' , ' 神仙
' , 800 , '1' , 'c003' );
INSERT INTO products (pid, pname,price,flag,category_id) VALUES ( 'p009' , '
' , 200 , '1' , 'c003' );

3.3 笛卡尔积

交叉连接查询 , 因为会产生笛卡尔积 , 所以 基本不会使用
3.3.1 语法格式
SELECT 字段名 FROM 1, 2

3.3.2 使用交叉连接查询 商品表与分类表

SELECT * FROM category , products;

3.3.3 观察查询结果,产生了笛卡尔积 (得到的结果是无法使用的)

 

3.3.4 笛卡尔积

  • 假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值