テーブルの閲覧の仕方いろいろ
SQLについて軽くまとめてみた - LeafCage備忘録より分離。
結合して一覧する
SELECT {フィールド名}[, {テーブル名}.{フィールド名}] FROM {テーブル名} [INNER] JOIN {相手テーブル名} ON {テーブル名}.{フィールド名} = {テーブル名}.{フィールド名}; SELECT {フィールド名}[, {テーブル名}.{フィールド名}] FROM {テーブル名} LEFT [OUTER] JOIN {相手テーブル名} ON {テーブル名}.{フィールド名} = {テーブル名}.{フィールド名}; SELECT {フィールド名}[, {テーブル名}.{フィールド名}] FROM {テーブル名} RIGHT [OUTER] JOIN {相手テーブル名} ON {テーブル名}.{フィールド名} = {テーブル名}.{フィールド名};
- 参考: 地獄のようによくわかるSQLテーブル結合 - こせきの技術日記
- MySQLのLEFT JOIN, RIGHT JOIN, INNER JOINの自分用まとめ - (゚∀゚)o彡 sasata299's blog
- MySQLでは"full outer join"が使えないので、inner, left, rightの3パターン
- SELECT * FROM tableA, tableB WHERE tableA.field = tableB.field;と、inner joinとの違いは、単に見やすさらしい(結合と条件の切り分け)
結合時重複レコードを除外(DISTINCT)
SELECT DISTINCT 顧客名, 商品名, 単価 FROM 受注表, 商品表 WHERE 受注表.商品番号=商品表.商品番号
SELECT文で得た結果を結合する(UNION)
カラム数やデータ型を一致させなければUNIONできない。
UNION 重複したレコードは削除する(DISTINCT処理みたいなことをする)
(SELECT 1, 2 FROM DUAL) UNION (SELECT 1, 2 FROM DUAL);
UNION ALL 重複したレコードでもそのまま表示
SELECT 1, 2 FROM DUAL UNION ALL SELECT 1, 2 FROM DUAL;
FROMの後にUNIONを使うときには固有名をつける必要あり
SELECT count(*) FROM ( (SELECT id FROM BBS_MESSAGE) UNION ALL (SELECT id FROM BBS_REPLY) ) as UNI;
ソートする(ORDER BY句)
SELECT * FROM {テーブル名} WHERE {条件} ORDER BY {フィールド名} [DESC][, {フィールド名2} [DESC]]
DESCを付けると降順(ASCは昇順)
フィールド名2を指定したとき、フィールド名1が全体に影響、フィールド名2はフィールド名2部分にのみ影響
グループ化する
SELECT dept_no, count(*) FROM user_master2 GROUP BY dept_no ;
つまりGROUP BY以下で指定したフィールドで同じ内容のものは1レコードに圧縮され、圧縮された部分は集合関数を使わないと取り出せなくなる。
(この場合dept_noを基準にレコードが圧縮される)
ダミーデータ
SELECT のあとFROMを付けないとダミーカラムが作成される。
ダミーカラムに名前を付けないと'COUNT'という名前になる。
(一番最初のダミーデータにAS xxx)とすると以後ダミーカラムはxxxになる)
SELECT SUM(COUNT) FROM( SELECT COUNT(countTestA.*) FROM ( SELECT '333' UNION SELECT 'fffff' UNION SELECT '88888888' ) countTestA UNION ALL SELECT COUNT(countTestB.*) FROM ( SELECT 'uuu' UNION SELECT 'r' ) countTestB UNION ALL SELECT COUNT(countTestC.*) FROM ( SELECT 'erer' UNION SELECT 'erer' UNION SELECT 'erer' UNION SELECT '6' ) countTestC ) uninTest