phpMyAdmin | MySQL | SQL演算子の利用方法

phpMyAdminは,PHPで構築されたフリーソフトウェアツールであり,MySQLの管理操作を意図されている.MySQLやMariaDBについて,幅広い操作範囲がサポートされており,当該ツールによりdatabase, tables, colums, relations, indexes, permissionsなどの操作を実行できる.

MySQLとは,世界で最も人気のあるopen-sourceのrelational database management system (RDBMS)である.NetflixやAirbnb,Uberなどアクセスの多いアプリケーションに利用されている.

phpMyAdminを利用してデータベースのテーブルに格納しているデータを検索する際,SQL演算子を利用する.本記事ではSQL演算子の利用方法を説明する.

phpMyAdminにおける検索時に利用するSQL演算子

phpMyAdminを開くと,以下画面が表示されるので,"検索"をクリックする.

以下画面に遷移するので,"演算子"タイトル下の選択肢をクリックすると,SQL演算子の一覧が表示される.今回はこれらのSQL演算子を説明する.

SQL演算子の利用方法

上記にて利用可能となるSQL演算子の一覧が選択可能となるので,各演算子を以下に説明する.

LIKE

そのまま利用

以下は,abcである文字列が対象となる.

WHERE column LIKE 'abc'

“%" (パーセント)を利用

以下は,abcから始まるすべての文字列が対象となる.

WHERE column LIKE 'abc%'

例) abc, abcd, abc123

以下は,abcで終わるすべての文字列が対象となる.

WHERE column LIKE '%abc'

例) abc, xxabc, 1abc

“_" (アンダーバー)を利用

以下は,abcから始まる4桁の文字列が対象となる.

WHERE column LIKE 'abc_'

例) abcd, abc1

LIKE %…%

以下は,abcが含まれるすべての文字列が対象となる.

WHERE column LIKE '%abc%'

例) abc, xabcdef, abcd, xxabc

NOT LIKE

以下は,abcから始まる文字列を除くパターンが対象となる.

WHERE column NOT LIKE 'abc%'

以下は,abcで終わる文字列を除くパターンが対象となる.

WHERE column NOT LIKE '%abc'

NOT LIKE %…%

以下は,abcが含まれる文字列を除くパターンが対象となる.

WHERE column NOT LIKE '%abc%'

“=" (イコール)

以下は,abcである値が対象となる.

WHERE column = 'abc'

“!="

以下は,abc以外の値が対象となる.

WHERE column != 'abc'

REGEXP

REGEXPとはRegular Expressionsの略であり,機能はLIKEに類似している.なお,"^"は後ろには付けないので,REGEXP 'abc^’といった使い方はしない.

以下は,abcから始まるパターンが対象となる.

WHERE column REGEXP '^abc'

例) abc, abc123, abcd, abc-xy

以下は,最初の1文字がA-Zの大文字のアルファベットで,その後が数字であるパターンが対象となる.

WHERE column REGEXP '^[A-Z][0-9]+'

例) Z111, Y87463,

以下は,最初の2文字以上が数字であるパターンが対象となる.

WHERE column REGEXP '^[0-9]{2,}'

例) 12abc, 24, 4857hjg

以下は,最初の1文字がA-Zの大文字のアルファベットで,その後が数字(空も含む)であるパターンが対象となる.

WHERE column REGEXP '^[A-Z][0-9]*'

例) A, A12, B897, A0, A123B, B9XZ

以下は,A-Zから始まりその後2桁の小文字であるパターンが対象となる.

WHERE column REGEXP '^[A-Z][a-z]{2}'

例) Cat, Dog, Abc

補足 (“+"(プラス)と"*"(アスタリスク))

REGEXPでは,"+"(プラス)や"*"(アスタリスク)が利用される."+"が入る場合,空は含まれず,"*"が入る場合,空は含まれる.以下は対象例となる.

"*"の対象例)
a*: "", "a", "aaa", etc
[0-9]*: "", "1", "123", "000", etc
abc*: "ab", "abc", "aabbc", etc
"+"の対象例)
a+: "a", "aaa", etc (""は対象外)
[0-9]*: "1", "123", "000", etc (""は対象外)
abc*: "ab", "abc", "aabbc", etc (""は対象外)

REGEXP ^…$

“REGEXP ^…$"では,"$"(ダラーサイン)が利用される."…"の条件を満たした後,すぐに終了という意味を持つ.以下は,A-Zから始まりその後が数字(空も含む)となり完了するパターンとなる."$"が最後に含まれているので,数字のあとにアルファベットなどが追加されることはない.

WHERE column REGEXP '^[A-Z][0-9]*$'

例) G11, G

以下は,A-Zから始まりその後が数字(空は含まない)であるパターンが対象となる..

WHERE column REGEXP '^[A-Z][0-9]+$'

例) G11, K5

NOT REGEXP

REGEXPとはRegular Expressionsの略であり,機能はLIKEに類似している.そのため,NOT REGEXPはNOT LIKEと類似している.

以下は,abcから始まるパターンが対象とならない.

WHERE column NOT REGEXP '^abc'

例) xtabc, 123

以下は,最初の1文字がA-Zの大文字のアルファベットで,その後が数字であるパターンが対象となる.

WHERE column NOT REGEXP '^[A-Z][0-9]+'

例) 87Y, 463

= "

以下は,空の文字列が対象となる.

WHERE column = ''

!= "

以下は,空の文字列以外が対象となる.

WHERE column != ''

IN (…)

特定の複数の値が対象となる.以下は,’abc’, 'def’, 'ghi’が対象となる.

WHERE column IN ('abc', 'def', 'ghi')

NOT IN (…)

特定の複数の値以外が対象となる.以下は,’abc’, 'def’, 'ghi’以外が対象となる.

WHERE column NOT IN ('abc', 'def', 'ghi')

BETWEEN

特定の範囲の値が対象となる.以下は,1~5の値が対象となる.

WHERE column BETWEEN 1 and 5

NOT BETWEEN

特定の範囲以外の値が対象となる.以下は,2~7以外の値が対象となる.

WHERE column NOT BETWEEN 2 and 7

IS NULL

以下は,NULLが対象となる.

WHERE column IS NULL

IS NOT NULL

以下は,NULL以外が対象となる.

WHERE column IS NOT NULL

REGEXPにおける"*", “+", “$"有無の比較

REGEXPを利用する際,"*", “+", “$"を使うことができる."+"が入る場合,空は含まれず,"*"が入る場合,空は含まれる."$"が最後に含まれると,最後の文字が指定され,追加文字の追加が許可されない.

パターン最後の文字の指定
(“$"の有無)
Digitsの要求
(“+" vs “*")
追加文字の可否
(“$"の有無)
^[A-Z][0-9]*$あり0以上のdigits
^[A-Z][0-9]+$あり1以上のdigits
^[A-Z][0-9]*なし0以上のdigits
^[A-Z][0-9]+なし1以上のdigits

“^[A-Z][0-9]*$"の場合

  • “^[A-Z]": 最初の文字が大文字となる
  • “[0-9]*": 次が0以上の桁数 (空も含む)となる
  • “$": 数字もしくは空のあと,完了となる

“^[A-Z][0-9]+$"の場合

  • “^[A-Z]": 最初の文字が大文字となる
  • “[0-9]+": 次が0以上の桁数 (空は含まれない)となる
  • “$": 数字のあと,完了となる

“^[A-Z][0-9]*"の場合

  • “^[A-Z]": 最初の文字が大文字となる
  • “[0-9]*": 次が0以上の桁数 (空も含む)となる
  • “$"なし: 数字もしくは空のあと,追加の文字や数字の挿入がl許可される

“^[A-Z][0-9]+"の場合

  • “^[A-Z]": 最初の文字が大文字となる
  • “[0-9]+": 次が0以上の桁数 (空は含まれない)となる
  • “$"なし: 数字もしくは空のあと,追加の文字や数字の挿入がl許可される

参照

MySQL | 14.4 Operators

MySQL | Chapter 14 Functions and Operators

以上