MySQL

【MySQL】DBのDumpファイルをターミナルからインポートする方法。

PhpMyAdminでダンプファイルを生成したはいいものの、インポートする際にsqlファイルのアップロード容量制限にひっかかってしまうので、どうにかこうにか流し込む方法はないかと調べてみた。

1, まずは手に入れたダンプファイル(.sql)を任意のディレクトリに置く

2, 次にターミナルを起動。su権限でログインしたら、ダンプファイルが置いてある階層まで移動する

3, 最後に下記コマンドを実行

mysql -u [ユーザー名] -p [テーブル名] < [ダンプファイル名]  

例。

mysql -u root -p hoge < dump.sql

この方法であれば何十メガだろうが何百メガだろうが数ギガバイトだろうがSQLを流し込むことが出来る(はず)。
しかもブラウザからインポートするよりも圧倒的に高速なので激オススメ。

 

【MySQL】カラムの名前に別名をつけて取得する。

メモ。

SELECT
	col_1 AS hoge,
	col_2 AS fuga
FROM
	tbl_1

としてやると、本来「col_1」という名前だったカラム名が「hoge」として、「col_2」という名前のカラムは「fuga」として取得することが出来る。

以下PHPMYADMIN上で実行した際の参考画像。

0940fc81d9f939d7f864be36e7f9a09c

 

【MySQL】 JOIN (表結合)の違いまとめ。

いつもの如く超絶自分用。

結合方式 詳細
LEFT JOIN(LEFT OUTER JOIN)

・JOIN左側のテーブルデータは全て表示。(WHERE句があればそれに順ずる)

・そこへ対応する右側のテーブルデータが追される。

・対応するデータが右側のテーブルに存在しない場合、 NULLが挿入される。

RIGHT JOIN(RIGHT OUTER JOIN)

・基本的にLEFT JOINの逆動作

・JOIN右側のテーブルデータは全て表示。(WHERE句があればそれに順ずる)

・そこへ対応する左側のテーブルデータが追される。

・対応するデータが左側のテーブルに存在しない場合、 NULLが挿入される。

INNER JOIN

・指定したテーブルの双方に結びつくレコードが存在している場合のみ表示される。

・いずれかがNULLの場合どちらも表示されない。

SQLとしては以下のような感じ。

SELECT
	*
FROM 
	sites LEFT JOIN items
ON
	sites.id = items.site_id

上記は、サイトに対して結びつくアイテムをリレーションで管理しているような場面を想定した際の一例。
「LEFT JOIN」の部分を「RIGHT JOIN」「INNER JOIN」にすれば、上の表通りな挙動になる。