数据库联合查询
电商网站数据库
CREATE TABLE category(
id INT UNSIGNED PRIMARY KEY,
cname VARCHAR(20) NOT NULL
)
CREATE TABLE goods(
id INT UNSIGNED PRIMARY KEY,
gname VARCHAR(100),
price DECIMAL(8,2),
gstatus TINYINT DEFAULT 1,
category_id INT UNSIGNED,
FOREIGN KEY (category_id) REFERENCES category (id)
)

使用SELECT子句进行多表查询
SELECT 字段名 FROM 表1,表2 … WHERE 表1.字段 = 表2.字段 AND 其它查询条件
SELECT * FROM goods,category WHERE goods.category_id=category.id;
# 将表和分类合并
SELECT * FROM category,
(SELECT * FROM goods WHERE goods.`price`>2500) AS tablel
WHERE category.id=tablel.category_id;
# 找出每一个价格大于50的商品以及对应的商品分类
SELECT * FROM goods,category WHERE goods.`category_id`=category.`id` AND goods.`price`>50;
99语法
select * from goods inner join category
on goods.`category_id`=category.`id`
where goods.`price`>2500
多表查询
sql92
select * from 表1,表2.。。。 where 连接条件,筛选条件1,筛选条件2.。。
sql99
select * from 表1 连接方式 表2 on 连接条件 where 筛选条件
按照功能
内连接:
查询结果是两张表都匹配到的数据
左连接:
查询的结果是两张表都匹配到是数据,和以左表为主表,对于右表中没有的数据,用 null 填充
右链接:
反之
交叉连接:(笛卡尔乘积)
SELECT 字段名 FROM 表1 CROSS JOIN 表2