mysql数据库的多表查询,子查询,联合查询
Posted 帅涛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库的多表查询,子查询,联合查询相关的知识,希望对你有一定的参考价值。
/*多表查询*/
/*交叉连接*(表1条数*表2条数)*/
SELECT * FROM emp JOIN dept;
/*内连接(在交叉连接基础上加条件)*/
SELECT * FROM emp JOIN dept ON deptid=id;
SELECT * FROM emp JOIN dept ON emp.deptid=dept.id;
/*左外连接*(以左表为主表)*/;
SELECT * FROM product_type LEFT JOIN product ON product.`protype_id`=product_type.`protype_id`;
/*右外连接*(以右表为主表)*/;
SELECT * FROM product_type RIGHT JOIN product ON product.`protype_id`=product_type.`protype_id`;
/*子查询:把一个查询结果当作另一个查询的条件*/
/*找出索尼手机所属类别*/
SELECT protype_id FROM product WHERE pro_name LIKE ‘%索尼%4G手机%‘;
SELECT protype_name FROM product_type WHERE protype_id=(
SELECT protype_id FROM product WHERE pro_name LIKE ‘%索尼%4G手机%‘
);
/*找出所有属于手机数码的产品*/
SELECT * FROM product WHERE protype_id=(
SELECT protype_id FROM product_type WHERE protype_name=‘手机数码‘
);
/*找出所有属于手机数码或者电脑办公的产品*/
SELECT protype_id FROM product_type WHERE protype_name=‘手机数码‘ OR protype_name=‘电脑办公‘;
SELECT * FROM product WHERE protype_id IN(
SELECT protype_id FROM product_type WHERE protype_name=‘手机数码‘ OR protype_name=‘电脑办公‘
);
/*联合查询*/
CREATE TABLE app1(
aid INT PRIMARY KEY AUTO_INCREMENT,
aname VARCHAR(10),
adesc VARCHAR(50)
);
CREATE TABLE bpp1(
bid INT PRIMARY KEY AUTO_INCREMENT,
bname VARCHAR(10),
bdesc VARCHAR(50)
);
INSERT INTO app1(aname,adesc) VALUES(‘熊大‘,‘保护森林‘);
INSERT INTO app1(aname,adesc) VALUES(‘光头强‘,‘砍树‘);
INSERT INTO bpp1(bname,bdesc) VALUES(‘小红帽‘,‘傻吊‘);
INSERT INTO bpp1(bname,bdesc) VALUES(‘大灰狼‘,‘牛逼‘);
SELECT aid,adesc FROM app1
UNION
SELECT bname,bdesc FROM bpp1;
以上是关于mysql数据库的多表查询,子查询,联合查询的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 基础 -- 多表关系(一对一1对多(多对一)多对多)多表查询(内连接外连接自连接子查询(嵌套查询)联合查询 union)笛卡儿积