1. 程式人生 > >mysql資料庫的多表查詢,子查詢,聯合查詢

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;