tb(売上情報テーブル)
CREATE TABLE tb (bang VARCHAR(10), uria INT, tuki INT) CHARSET=utf8; INSERT INTO tb(bang, uria, tuki) VALUES ('A103', 101, 4), ('A102', 54, 5), ('A104', 181, 4), ('A101', 184, 4), ('A103', 17, 5), ('A101', 300, 5), ('A102', 205, 6), ('A104', 93, 5), ('A103', 12, 6), ('A107', 87, 6);
tb1(社員情報テーブル)
CREATE TABLE tb1(bang VARCHAR(10), nama VARCHAR(10), tosi INT) CHARSET=utf8; INSERT INTO tb1 VALUES('A101','佐藤','40'); INSERT INTO tb1 VALUES('A102','高橋','28'); INSERT INTO tb1 VALUES('A103','中川','20'); INSERT INTO tb1 VALUES('A104','渡辺','23'); INSERT INTO tb1 VALUES('A105','西沢','35');
tb2(別の営業所の社員情報テーブル)
CREATE TABLE tb2 (bang VARCHAR(10), nama VARCHAR(10), tosi INT) CHARSET=utf8; INSERT INTO tb2 (bang,nama,tosi) VALUES ('A106','中村',26), ('A107','田中',24), ('A108','鈴木',23), ('A109','村井',25), ('A110','吉田',27);
tb3(社員の出身県情報テーブル)
CREATE TABLE tb3 (bang VARCHAR(10), ken VARCHAR(10)) CHARSET=utf8; INSERT INTO tb3 (bang,ken) VALUES ('A101','東京都'), ('A102','埼玉県'), ('A103','神奈川県'), ('A104','北海道'), ('A105','静岡県');
SELECT カラム名1 FROM テーブル名1 UNION SELECT カラム名2 FROM テーブル名2;
★
SELECT * FROM tb1 UNION SELECT * FROM tb2; (SELECT * FROM tb1) UNION (SELECT * FROM tb2);
★
(SELECT * FROM tb WHERE bang='A102') UNION (SELECT * FROM tb WHERE bang='A103') UNION (SELECT * FROM tb WHERE bang='A104') UNION (SELECT * FROM tb WHERE bang='A107'); SELECT * FROM tb WHERE bang NOT IN('A101'); SELECT * FROM tb WHERE bang IN('A102','A103','A104','A107');
★
(SELECT bang FROM tb WHERE uria>=200) UNION (SELECT bang FROM tb1 WHERE tosi>=35);
★
(SELECT bang FROM tb WHERE uria>=200) UNION ALL (SELECT bang FROM tb1 WHERE tosi>=35);
SELECT カラム名 FROM テーブル1 JOIN 結合するテーブル2 ON テーブル1のカラム=テーブル2のカラム;
★
SELECT * FROM tb JOIN tb1 ON tb.bang=tb1.bang; SELECT * FROM tb INNER JOIN tb1 ON tb.bang=tb1.bang;
★
SELECT tb.bang, tb1.nama, tb.uria FROM tb JOIN tb1 ON tb.bang=tb1.bang;
テーブル名 AS エイリアス
★
SELECT x.bang, y.nama, x.uria FROM tb as x JOIN tb1 as y ON x.bang=y.bang;
★
SELECT tb.bang, tb1.nama, tb.uria FROM tb JOIN tb1 USING(bang);
★
SELECT tb.bang AS 社員番号, tb1.nama AS 氏名, tb.uria AS 売上 FROM tb JOIN tb1 USING(bang) WHERE tb.uria>=100;
SELECT ~ FROM テーブル名1 JOIN テーブル名2 結合の条件 JOIN テーブル名3 結合の条件 ... ;
★
SELECT tb.bang, tb.uria, tb1.nama, tb3.ken FROM tb JOIN tb1 USING(bang) JOIN tb3 USING(bang);
SELECT カラム名 FROM テーブル1 LEFT JOIN 結合するテーブル2 ON テーブル1のカラム=テーブル2のカラム;
★
SELECT tb.bang,tb1.nama FROM tb LEFT JOIN tb1 USING(bang); SELECT tb.bang,tb1.nama FROM tb LEFT OUTER JOIN tb1 USING(bang);
SELECT カラム名 FROM テーブル1 RIGHT JOIN 結合するテーブル2 ON テーブル1のカラム=テーブル2のカラム;
★
SELECT tb.bang,tb1.nama FROM tb RIGHT JOIN tb1 USING(bang); SELECT tb.bang,tb1.nama FROM tb RIGHT OUTER JOIN tb1 USING(bang);
SELECT カラム名 FROM テーブル名 AS エイリアス1 JOIN テーブル名 AS エイリアス2;
★
SELECT * FROM tb1 AS a JOIN tb1 AS b;
★
SELECT a.nama, a.tosi, COUNT(*) FROM tb1 AS a JOIN tb1 AS b WHERE a.tosi<=b.tosi GROUP BY a.bang;
★
SELECT * FROM tb WHERE uria IN (SELECT MAX(uria) FROM tb);
★
SELECT * FROM tb1 WHERE tosi >=(SELECT AVG(tosi) FROM tb1);
SELECT 表示するカラム FROM テーブル名 WHERE カラム名 IN(SELECTによるサブクエリでカラムを抽出);
★
SELECT * FROM tb1 WHERE bang IN (SELECT bang FROM tb WHERE uria>=200);
★
SELECT * FROM tb1 WHERE EXISTS (SELECT * FROM tb WHERE tb.bang=tb1.bang);
★
SELECT * FROM tb1 WHERE NOT EXISTS (SELECT * FROM tb WHERE tb.bang=tb1.bang);
CREATE TABLE tb_zyun LIKE tb; ALTER TABLE tb_zyun ADD zyun INT AUTO_INCREMENT PRIMARY KEY; INSERT INTO tb_zyun (bang,uria,tuki) (SELECT bang,uria,tuki FROM tb ORDER BY uria DESC);
テーブル「tb」で、「uria」の少ないものから順位を付け、1番から順に、「bang」、「uria」、順位を表示させてください。
SELECT a.bang,a.uria,COUNT(*) FROM tb AS a JOIN tb AS b WHERE a.uria>b.uria GROUP BY a.uria;
次のテーブル「tb1」および「tb」で、テーブル「tb1」に存在するレコードだけテーブル「tb」から抽出してください。
SELECT * FROM tb WHERE EXISTS (SELECT * FROM tb1 WHERE tb.bang=tb1.bang);