MySQL – レコードの検索

フィールド選択

全レコードの全フィールド

指定したフィールド

レコードの条件検索

文字列検索

たとえば国名で検索する場合。

LIKEによるあいまい検索

LIKE指定で任意の文字・文字列を含む検索ができる。

任意の一文字

アンダースコア('_')は任意の一文字に相当。

任意長の文字列

任意長(0文字以上)の文字列に対応するのは'%'

数値検索

年齢の範囲で検索する場合。

上限と下限で検索する場合、ANDで複数条件を結ぶ。

同じ検索条件をBETWEENで指定できる。

対象列挙

IN(...)でカンマで区切った値の何れかと一致するレコードが抽出される。

 

 

さくらサーバー – MySQL – CSVファイルのインポート

概要

ローカルでつくったCSVファイルをさくらレンタルサーバにアップロードしてテーブルに読み込む手順。

  1. CSVファイルを準備する
  2. CSVファイルをアップロードする
  3. MySQLにログオン(ファイルを読めるようにするオプションが必要)
  4. ファイルをテーブルに読み込む。

CSVファイルの準備

  1. 表計算ソフトでCSVファイルを作成して保存
  2. Excelの場合は文字コードにUTF-8を指定できないので、エディタで読み込んで文字コードと改行コードを指定して保存
    • 文字コードはUTF-8
    • 改行コードはLF

CSVファイルのアップロード

さくらレンタルサーバの場合、ファイルのアップロード先は~/www/のディレクトリ下。フルパスだと、/home/USERNAME/www

必要に応じてファイルの場所を移動。

MySQLへのログイン

MySQLがローカルファイルから読み込めるよう、--enable-local-infileオプションをつけてログイン。

ファイルの読み込み

  • コマンドはLOAD DATA INFILEコマンド
  • サーバにアップロードしたファイルをローカルで読み込むので”LOAD DATA LOCAL INFILE ...“とする
  • コマンドが長いので、エディタなどで複数行に打ち込んで、コンソールへコピー・ペースト

改行がCR+LFの場合、LINES TERMINATED BY "\r\n"を付加する。

実行例

以下のようなテストファイルを用意してアップロードしておく。

 

 

 

コンソールでのMySQLの文字化け

症状

コンソールからテーブルに、日本語を含んだレコードを追加すると文字化けしてしまう。

たとえば以下のようなデータを持つテーブルがあるとする。

これをそのままSELECTコマンドで表示させると、以下のように文字化け。

WHERE句で無理矢理元の文字列’山田’で探そうとすると、以下のようなエラーが出る。

これはその文字列は存在しているがコードが違うと言われているようだ。

そこでMySQLのcharacter_set群がどのように設定されているかを確認。確認コマンドは以下の形式。

以下、実行結果。

さくらレンタルサーバでDBを追加する際の文字コード指定はUTF-8としていて、ターミナル側の設定はUTF-8だが、ほとんどがujis = EUC_jpになっている。

対策

MySQLにログインした後、一度だけ以下を実行する。

以下、実行例。

適切に表示され、chracter_set変数群も_serverを除いて全てUTF-8になっている。

なお、SET CHARSET utf8での文字コード設定を説明しているサイトが殆どだが、この方法だと文字化けはなくなるが、カラム幅が崩れてしまう。この時のcharacter_setの設定値は上と同じに変更されるが表示のされ方が違う。

対策・改

その後、MySQLに入る時に以下を実行する方法も知った。--default-character-set=utf8mb4を指定する。

この結果文字コードは以下のようになって、文字化けも解消。

20210604

 

MySQL – カラムの追加・変更・削除

カラムの追加

最後尾に追加

以下のコマンドで最後尾に新しいカラムが追加される。追加されたカラムのフィールド値には初期値が設定される。

以下、実行例。

先頭に追加

FIRSTを指定すると、新たな列が先頭に追加される。

指定位置への追加

AFTERで指定したカラムの後に新たな列が追加される。

カラムの変更

名称と型の変更

カラムの名前や型の変更ALTERコマンドを使う。

CHANGEでフィールド名と型を同時に変更する。

以下、実行例。

型のみの変更

型のみの変更はMODIFY

以下、実行例。

 

カラムの削除

以下のコマンドで、指定したカラムを削除できる。

以下、実行例。

 

 

MySQL – レコードの追加・変更・削除

レコードの追加

全フィールド追加

INSERT INTO ~ VALUESコマンドで、全フィールドの内容をフィールドの順番通りに追加する。

以下、実行例。

フィールドを指定した追加

フィールドを指定した実行は次の通り。

以下、実行例。

フィールドの一部だけを指定すると、指定していないフィールドには初期値が設定される。

レコードの変更

レコードのフィールド値の変更はUPDATE ~ SET ~ WHEREコマンドを使う。

以下、実行例。

UPDATEの注意点

UPDATEコマンドは必ずWHEREで対象となるレコードを指定する。さもないと、全レコードのフィールドが指定した内容で変更されてしまう。

レコードの削除

レコードの削除は、DELETE FROM ~ WHEREコマンドで行う。

以下、実行例。

DELETEの注意点

DELETEコマンドでWHEREを省略すると、全データが削除されてしまうので注意。

 

MySQL – テーブルの追加・確認・変更・複製・削除

追加

テーブルの追加

テーブルの追加はCREATE TABLEコマンドで行う。

以下、実行例。

カラムの追加

テーブルにカラムを追加する場合はALTER TABLE ... ADDを使う。

確認

テーブル一覧の確認

テーブル一覧の確認はSHOW TABLESコマンド。

テーブル構造の確認

テーブル構造の確認はDESCまたはDESCRIBEコマンド。

変更

テーブル名の変更

テーブルのカラム名・カラムの型の変更

テーブルのカラム名やカラムの型の変更ALTER TABLE ... CHANGEALTER TABLE ... MODIFYで行う。

複製

テーブルの複製

テーブルの複製は、MySQLの場合、CREATE TABLEとSSELECT文を組み合わせる。

削除

テーブルの削除

テーブルの削除はDROP TABLEコマンド。

テーブルのカラムの削除

テーブルのカラムを削除する場合はALTER TABLE ... DROP COLUMNとする。

 

MySQL – データベースの作成・権限付与・削除

データベースの作成

基本コマンド

データベースの作成はCREATE DATABASEコマンドを使う。

文字コードと照合順序

データベースの文字コードと照合順序(COLLATE~照合順序)を指定して作成するコマンド。

CREATE DATABALSE db_name CHARACTER SET char_set COLLATE collation_name;

たとえばutf8mb4の場合の例

さくらレンタルサーバー

さくらレンタルサーバーの場合はwebのコントロールパネルでデータベースを作成・削除する方法のみが示されていて、コンソールでのコマンド操作はエラーとなる。

データベースアクセスの権限設定

必要に応じて、ユーザーへのデータベースアクセスの権限を設定する。

GRANT ALL PRIVILEGES ON dbname.* TO dbuser@'localhost'

データベースの削除

データベースの削除にはDROP DATABASEコマンドを使う。

存在しないデータベースを削除しようとするとエラーになるが、DROP DATABASE IF EXISTSコマンドを使うと、データベースが存在しない場合もエラーにならない。

 

 

MySQL – データベースの一覧表示と接続・確認

既存のデータベースを確認するコマンドはSHOW DATABASES;

データベースに接続するにはuseコマンドを使う。useコマンドは最後にセミコロン(;)を入れなくてもよい。

以降、useコマンドで接続するデータベースを切り替えることができる。

接続中のデータベースの確認

接続中のデータベースの確認方法は、以下の二通り。

または

以下、実行例。

 

MySQL – 状態の確認とコマンド一覧

statusコマンドでMySQLのバージョンや文字セット、ポート番号などを状態を確認できる。

また、helpコマンドでコマンド一覧を表示できる。