2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【MySQL】基本SQL構文まとめ

Posted at

はじめに

MySQLを勉強していますが、構文が多くてなかなか覚えられないので、チートシートとして本記事を書きました。

環境

以下のバージョンを使用していることが前提となります。
MySQLバージョン:Ver 8.0.27

基本SQL構文

データベース操作

データベース一覧の確認

mysql
SHOW DATABASES;

使用するデータベースの選択

mysql
USE データベース名;

データベース作成

CREATE DATABASE データベース名;

データベース削除

DELETE DATABASE データベース名;

テーブル操作

テーブル一覧の確認

SHOW TABLES;

テーブルの作成

mysql
CREATE TABLE テーブル名 (
  カラム名1 データ型1 (オプション1), 
  カラム名2 データ型2 (オプション2),
    ・
    ・
  カラム名n データ型n
);

データ型の例:数値型(INT, DECIMALなど)、文字列型(CHAR, VARCHARなど)、時間型(DATE, TIMEなど)など
詳しいデータ型については下記MySQLホームページが参考になります。
https://dev.mysql.com/doc/refman/8.0/en/data-types.html

オプションの例
UNSIGNED:0を含む自然数のみ扱うようにする。例としてINTにUNSIGNEDオプションをつけると0〜4294967295まで扱えるようになる

CREATE TABLEはいろいろと細かく設定できるので、詳しい内容は下記MySQLホームページが参考になります。
https://dev.mysql.com/doc/refman/8.0/en/create-table.html

レコード追加

mysql
INSERT INTO テーブル名 (カラム名1, カラム名2) VALUES (値1, 値2);
mysql
INSERT INTO テーブル名 (カラム名1, カラム名2) VALUES (値1, 値2), (値3, 値4), ・・・;

上記のように複数のレコードを一度に入れることも可能。

テーブルの削除

mysql
DROP TABLE テーブル名;

データ取得

mysql
SELECT カラム名1, カラム名2 FROM テーブル名;
mysql
SELECT * FROM テーブル名;

全てのカラムのデータ取得する

条件を指定してデータ取得

mysql
SELECT * FROM テーブル WHERE カラム名1 >= 10;

上記例ではカラム名1が10以上のレコード(WHERE カラム名 >= 10)の全てのカラムデータ(*)を取得する。

WHEREで使える比較演算子

比較演算子 意味
> ~より大きい
>= ~以上
< ~より小さい
<= ~以下
= ~と等しい
!=または<> ~と等しくない

条件の組み合わせ(AND:かつ)

mysql
SELECT * FROM テーブル WHERE カラム名1 >= 10 AND カラム名1 <= 20;

カラム名1が10以上かつ20以下のレコードの全てのカラムのデータを取得する。以下のようにも書くことができる。

mysql
SELECT * FROM table1 WHERE カラム名1 BETWEEN 10 AND 20;

条件の組み合わせ(OR:または)

mysql
SELECT * FROM テーブル名 WHERE カラム名1 = 5 OR カラム名1 = 10;

カラム名1が5または10であるレコードの全てのカラムのデータを取得。以下のようにも書くことができる。

mysql
SELECT * FROM テーブル名 WHERE カラム名1 IN (5, 10);

特定の文字列を持つデータ抽出

mysql
SELECT * FROM テーブル名 WHERE カラム名 LIKE 'UTSUBO';

カラム内に'UTSUBO'という文字列を持つレコードの全てのカラムデータを取得する。
※'UTSUBO'の大文字・小文字を区別しない

mysql
SELECT * FROM テーブル名 WHERE カラム名 NOT LIKE 'UTSUBO';

カラム内に'UTSUBO'という文字列を持たないレコードの全てのカラムデータを取得する。
※'UTSUBO'の大文字・小文字を区別しない

上記だと大文字、大文字・小文字の区別ができないので、

mysql
SELECT * FROM テーブル名 WHERE カラム名 LIKE BINARY 'utsubo';

とすると、小文字の'utsubo'を持つレコードの全てのカラムデータを取得する。

また%や_のワイルドカードを使うことができる。

%や_自体の抽出をしたいときは%や\_のようにバックスラッシュをつける。

NULLの抽出にはISを使う。条件反転はIS NOT

mysql
SELECT * FROM テーブル名 WHERE カラム名 IS NULL;

抽出したデータの並び替え

mysql
SELECT * FROM テーブル名 ORDER BY カラム名;

カラム名を小さい順で並べる(アルファベットの場合Aから並べる)

mysql
SELECT * FROM テーブル名 ORDER BY カラム名 DESC;

カラム名を大きい順で並べる(アルファベットの場合Zから並べる)

上位のレコードの抽出

mysql
SELECT * FROM テーブル名 LIMIT 3;

上位3つのレコードを抽出する

mysql
SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 3;

上記のように大きい順に並べ替えた後に上位3つを抽出することもできる。

また、OFFSETをつけることもできる。

mysql
SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 3 OFFSET 2;

上記を実行すると上から2つのレコードを無視して、大きい順に並び替えた後、上位から3, 4, 5つ目のレコードを抽出する。

レコードの更新

mysql
UPDATE テーブル名 SET カラム名1 = カラム名1 + 5 WHERE カラム名1 >= 10;

上記ではカラム名1内で値が10以下のデータ(WHERE カラム名1 >=10)に5を加えている(カラム名1 =カラム名1 + 5)。
※カラム名1 += 5のように書くとエラーになるので注意

レコードの削除

mysql
DELETE FROM テーブル名 WHERE カラム名 < 10;

カラム名内のデータが10未満のレコードを削除する

全てのレコードの削除

mysql
TRUNCATE TABLE テーブル名;

カラムの追加

mysql
ALTER TABLE テーブル名 ADD カラム名 データ型;
mysql
ALTER TABLE テーブル名 ADD カラム名2 データ型 AFTER カラム名1;

上記のように追加したいカラムの列を指定できる。上記ではカラム1の次にカラム名2を追加している。

mysql
ALTER TABLE テーブル名 ADD カラム名2 データ型 FIRST;

上記を実行すると元のテーブルの初めの列にカラム名1があるとして、カラム名1の前の列にカラム名2を追加できる。

カラムの削除

mysql
ALTER TABLE テーブル名 DROP カラム名;

カラムの変更

mysql
ALTER TABLE カラム名1 CHANGE カラム名2 データ型2;

カラム名1からカラム名2、データ型2へ変更する

カラム名の変更

mysql
ALTER TABLE カラム名1 RENAME カラム名2;

カラム名1をカラム名2に変更する。

参考記事

以下の記事を参考にさせていただきました。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?