MySQLのデータ操作

テーブルにデータを追加したり、編集するコマンドです。

データを抽出する

基本構文

SELECT カラム名 FROM テーブル名 WHERE 条件 ORDER BY ソート条件;

全カラム抽出

SELECT * FROM テーブル名;

指定したカラムのみ抽出

SELECT カラム名[, カラム名2...] FROM テーブル名;

DISTINCT

重複した値は1行として抽出します。

SELECT DISTINCT カラム名[, カラム名2...] FROM テーブル名;
カラムを複数指定した場合は、全てが同じものを1行として抽出します。

抽出条件

値、条件が文字列の場合は''で囲みます。

カラムの値が一致する行を抽出

WHERE カラム名 = 値

カラムの値が一致しない行を抽出

WHERE カラム名 <> 値

カラムの値がNULLの行を抽出

WHERE カラム名 IS NULL;

カラムの値がNULL以外の行を抽出

WHERE カラム名 IS NOT NULL;

カラムの値がリストのいづれかと一致する行を抽出

WHERE カラム名 IN (値1, 値2, ...)

カラムの値がリストのどれとも一致しない行を抽出

WHERE カラム名 NOT IN (値1, 値2, ...)

あいまい検索

前方一致や部分検索で条件を指定します。下記では、@mail.comの手前はどんな文字列でもヒットします。

WHERE カラム名 LIKE '%@mail.com';

複数条件を満たす行を抽出する場合はANDで指定します。
複数条件のいづれかと一致であればORで指定します。同一カラムのOR指定はWHERE INと同じ意味になります。

ソート

抽出結果を指定したカラム名でソートします。

ORDER BY カラム名 ASC|DESC
  • ASC - 昇順
  • DESC - 降順

レコード数の取得

全レコード数を取得

SELECT COUNT(*) FROM テーブル名;

カラムの値がNULLでないレコード数を取得

SELECT COUNT(カラム名) FROM テーブル名;

結果は扱いやすいよう別名を付けます。下記ではRECORD_COUNTとして結果を取得できます。

SELECT COUNT(*) AS RECORD_COUNT FROM テーブル名;

行を追加する

INSERT INTO テーブル名 (カラム名[, カラム名2...]) VALUES (値[, 値...]);

一度に複数行追加する場合

INSERT INTO テーブル名 (カラム名[, カラム名2...])
VALUES (値[, 値...]), (値[, 値...]), (値[, 値...]);

削除

行を削除する

DELETE FROM テーブル名 WHERE 条件;

全データを削除する

TRUNCATE TABLE テーブル名;

データを更新する

UPDATE文で更新したいカラムと値を指定します。

UPDATE テーブル名 SET カラム名 = 値[, カラム名2 = 値...] WHERE 条件;

-- sample
UPDATE samplemeta SET meta_key = 'a_index' WHERE meta_key = 'd_index';

データを変えずに日時を更新したい場合

テーブル定義にて、カラム名 DATETIME default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPとしても、更新前と更新後でデータが同じ場合は日時が更新されません。
データは変わらないけど、日時だけは更新したい場合は、次のようにします。

UPDATE テーブル名 SET カラム名=CURRENT_TIMESTAMP WHERE 条件;

別のテーブルからデータを抽出して追加する

INSERT文で値の部分にSELECT文を記述します。固定値を入れたい場合は、抽出カラムではなく値を記述します。

tableAからデータを抽出して、tableBに追加する例

下記ではnoは全て固定値1が入ります。

INSERT INTO tableB(
    product_id,
    no,
    product_name
)
SELECT
    product_id,
    '1',
    name
FROM tableA;
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です