MENU

MySQL覚書(概念から検索まで)

本手順はphpMyAdminで操作を前提としている

目次

準備

公式サイトのサンプルデータベースを使用する

公式サイトのDOCUMENTATION→Moreから

world database.zipをダウンロード

ダウンロードしたファイルを解凍し、world.sqlをphpmyadminにインポート

worldデータベースがインポートされる

データベースの概念

テーブル(table):データの集まり、表形式

行(row)→一つのデータ、一般呼称はレコード

列(column)→データの属性、名前とデータ型から成る

データベース:テーブルをまとめたもの(上図だと3つのテーブルから構成されている)


データの取得

データの取得はSELECT文を使ってデータベースに命令を送る(クエリを投げる)

SELECT column FROM table_name;
/* キーワードは大文字、小文字どちらでも良い */
/* column = `column` , table_name = `table_name` どちらでもOK */
/* column, table_name以外はバッククォート使用不可 */

SELECT文の実行結果はテーブルで出力される

/* sample */
SELECT ID, Name, Population FROM city
/* cityテーブルからID,Name,Populationを取得する */
/* アスタリスクで全て選択 */
SELECT * FROM city;

検索

制限

WHERE句:ある条件を満たすレコードのみを取り出す操作

SELECT column FROM table_name WHERE [条件式];

等価演算「=」:与えられた2つの値が等しいか(SQLは代入操作がないためイコール1つ)

SELECT * FROM city WHERE Name = 'Tokyo'
/* cityテーブルのNameがTokyoのみ抽出される */
/* 文字列はシングルorダブルクォートで囲む */

補足)MySQLのTRUEは1,FALSEは0→条件式の値が1のレコードのみ抽出される

SELECT * FROM city WHERE 1;
/* この場合、TRUEが対象のため全てのレコードが抽出される */

不等式

「>=」:以上、「>」:より大きい

「<=」:以下、「<」:より小さい

※文字列型の大小比較は辞書順でされる

SELECT * FROM city WHERE CountryCode > 'Y';
/* Yより後ろに出てくる文字列が抽出される */

照合順序 デフォルト例(utf8mb4_general_ci)

utf8:文字コード、mb4:4バイト文字(絵文字)対応、general:多言語対応、ci:大小文字区別無し

大小文字区別の場合はci(Case Insensitive)→cs(Case Sensitive)


非等価演算「!=」「<>」どちらも同じ意味

SELECT * FROM city WHERE CountryCode != 'JPN';
/* 日本以外のレコードを抽出 */

Andキーワード

SELECT * FROM city WHERE CountryCode != 'JPN' and Population > 500000;
/* 日本かつ人口500000以上のレコードを抽出 */

SELECT * FROM city WHERE Population between 400000 and 500000;
/*人口400000以上500000以下のレコードを抽出 */

ORキーワード

SELECT * FROM city WHERE CountryCode = 'JPN' or Population > 500000;
/* 日本もしくは世界で人口500000以上の国のレコードを抽出 */

SELECT * FROM city WHERE CountryCode in ('FRA', 'ITA');
/* フランスもしくはイタリアのレコードを抽出 */

SELECT * FROM city WHERE CountryCode not in ('FRA', 'ITA' 'JPN');
/* フランス、イタリア、日本以外のレコードを抽出 */
/* キーワード数は制限無し */
/* notキーワードはbetweenも使用可 */

あいまい検索

likeキーワード:あるキーワードを含む

SELECT * FROM city where Name like 'ab%';
/* 名前がabから始まるレコードを抽出 */
SELECT * FROM city where Name like '%un';
/* 名前がunで終わるレコードを抽出 */
SELECT * FROM city where Name like '%oky%';
/* 名前にokyを含むレコードを抽出 */
SELECT * FROM city where Name like '___';
/* 名前が3文字のレコードを抽出 */

%:ワイルドカード(0文字以上のあらゆる文字列)

_:アンダーバー(1文字のあらゆる文字列)

andキーワードとの併用も可能

SELECT * FROM city where Name like '___' and Population > 100000;
/* 名前が3文字かつ人口100000以上のレコードを抽出 */

並び替え

ORDER BY句

SELECT * FROM city where CountryCode = 'JPN' ORDER BY Population;
/* 日本の都市を人口順に並び替え(昇順) */
SELECT * FROM city where CountryCode = 'JPN' ORDER BY Name desc;
/* 日本の都市を名前順に並び替え(辞書の後ろから Z~) */
/* desc=descending(降順), asc=ascending(昇順) */

limitキーワード:検索結果を絞る

SELECT * FROM city where CountryCode = 'JPN' ORDER BY Population desc limit 5;
/* 日本の都市を人口順に降順で並び替えて、5件だけレコード取得(並び替えた後で取得) */
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次
閉じる