天天看点

MySQL笔记6.18—2

数据库联合查询

电商网站数据库
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)

)
           
MySQL笔记6.18—2
MySQL笔记6.18—2

使用SELECT子句进行多表查询

SELECT 字段名 FROM 表1,表2 … WHERE 表1.字段 = 表2.字段 AND 其它查询条件

SELECT * FROM goods,category WHERE goods.category_id=category.id;
           
MySQL笔记6.18—2
# 将表和分类合并
SELECT * FROM category,
	(SELECT * FROM goods WHERE goods.`price`>2500) AS tablel
WHERE category.id=tablel.category_id;
           
MySQL笔记6.18—2
# 找出每一个价格大于50的商品以及对应的商品分类
SELECT * FROM goods,category WHERE goods.`category_id`=category.`id` AND goods.`price`>50;
           
MySQL笔记6.18—2
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 
           

继续阅读