Kintarou'sBlog

プログラミング学習中。学習内容のアウトプットや読書で学んだことなど随時投稿!

【MySQL】データ抽出(基本)

こんにちは😊Kintarouです。

現在エンジニア転職を目指してプログラミング学習中です👨‍🎓
夢はフリーランスエンジニアになって働く人にとって働く事が楽しくなるシステムを作ること!
と、愛する妻と海外移住すること🗽

プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry


今回参考にさせて頂いたサイト様🙇‍♂️ dotinstall.com


MySQLでのデータ抽出方法です。簡単なものをいくつかまとめます。

全カラム出力

CREATE TABLE tweets (
  id INT NOT NULL AUTO_INCREMENT,
  message VARCHAR(140), 
  PRIMARY KEY (id)
);

INSERT INTO tweets (message) VALUES 
  ('Arigato'),
  ('arigatai'),
  ('Arigataya'),
  ('Nemutai'),
  ('Kanmuryo');

全カラム出力する場合は以下コマンドです。'*'がtweetsテーブルの全カラムを表しています。

  SELECT * FROM tweets;

f:id:ryosuke-toyama:20201110181511p:plain

完全一致

以下のようにWHEREで条件式をつけます。

SELECT id,message FROM tweets WHERE message = 'Arigato';

f:id:ryosuke-toyama:20201110180512p:plain

完全不一致

条件式の!=は、等しく無い場合という事です。

SELECT id,message FROM tweets WHERE message != 'Arigato';

f:id:ryosuke-toyama:20201110181553p:plain

前方一致

LIKEと%を使い表現します。%は任意の文字列という解釈で大丈夫でしょう。

SELECT id,message FROM tweets WHERE message LIKE 'Ari%';

f:id:ryosuke-toyama:20201110181739p:plain

大文字小文字区別

LIKEにBINARYオプションをつける事で、大文字小文字を区別します。
id:2の'arigatai'が抽出から外れている事がわかります。

SELECT id,message FROM tweets WHERE message LIKE BINARY 'Ari%';

f:id:ryosuke-toyama:20201110181921p:plain

後方一致

%を前方につけ、任意の文字列の最後に'tai'がついているものを抽出します。

SELECT id,message FROM tweets WHERE message LIKE '%tai';

f:id:ryosuke-toyama:20201110182041p:plain

部分一致

部分一致の場合は%で囲みます。(下記の場合、'mu'が先頭や末尾にあった場合でも抽出します。)

SELECT id,message FROM tweets WHERE message LIKE '%mu%';

f:id:ryosuke-toyama:20201110182134p:plain

文字位置指定

'_'を使う事で特定文字位置を指定できます。例えば全てのmessageに'a'は入っていますが...

SELECT id,message FROM tweets WHERE message LIKE '%a%';

f:id:ryosuke-toyama:20201110183734p:plain

2文字目に'a'のあるmessageは'Kanmuryo'しかありません。

SELECT id,message FROM tweets WHERE message LIKE '_a%';

f:id:ryosuke-toyama:20201110183924p:plain

'_'は任意の文字列という解釈です。
仮に4文字目に'u'の入ったmessageを抽出したい場合は以下のようにします。

SELECT id,message FROM tweets WHERE message LIKE '___u%';

f:id:ryosuke-toyama:20201110184111p:plain

以上、どなたかの参考になれば幸いです😊