SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS) において、データの操作や定義を行うためのデータベース言語(問い合わせ言語)です。SQLは国際標準化されているので、MySQLやOracleなどのデータベースが変わったとしても、同じSQLで操作することが可能です。
[ リレーショナルデータベース ]
リレーショナルデータベースでは、データをExcelのように表形式のイメージでデータを保存しています。
![リレーショナルデータベースのイメージ図](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c01a.jpg)
RDBMSはデータベース内の「テーブル」に入っているデータを「SQL」という言語を使って操作します。主に以下のようなデータ操作が可能です。
・Create・・・データの生成(INSERT命令で追加)
・Read・・・・データの読み取りと表示(SELECT命令で実現)
・Update・・・データの更新(UPDATE命令で実行)
・Delete・・・データの削除(DELETE命令で実行)
※上記の4つの機能をCRUD(クラッド)「Create(生成)、Read(読み取り),Update(更新),Delete(削除)」といい、基本的にデータベースを使ったWebアプリはこれらの機能が前提になっています。
[ SQLの実行 ]
SQLは基本的はコマンドラインと言われるもので利用します。Macの場合はターミナルというソフトウェア、Windowsの場合はコマンドプロンプトというソフトウェアで利用しますが、ここではソフトを利用せずに、phpMyAdminのツールを使ってSQLを利用する方法をご紹介します。「SQL」というタブをクリックすると、大きなテキストエリアが表示されます。ここにSQLを記述することで、データベースにそのSQLの指示を与えることができます
![データベースjinjiのSQLタブのテキストエリア](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c02a.jpg)
SQLを記述する際には、次のような基本的なルールがあります。
- SQL文の最後にセミコロン「;」を付ける
PHPと同じ、SQLでも命令の終わりには;(セミコロン)を付けます。例:SELECT * FROM tables; - 大文字/小文字は区別しない
SQLでは命令部の大文字/小文字は区別しません。このため「SELECT」でも「select」でも構いませんが、キーワードは大文字で記述するのが慣例です。但し、データベース名やテーブル名、カラム名等は区別されます。 - 文字列はシングルクォーテーション「’」で囲む
例:INSERT INTO staff_list SET id=1, staff_name=’中村’, age=67;
※数値は何かで囲む必要はなく、そのまま記述します。 - カラムの設定文字数を超えない
カラムに設定した文字数を超える値を指定すると、その値は切り捨てられます。
テーブルの作成とデータの挿入(C)
XAMPPの起動
ApacheとMySQLの起動
![起動したxamppのコントロールパネル](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c11a.jpg)
phpMyAdminの起動
![起動したphpMyAdminの初期画面](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c12a.jpg)
データベースの選択
jinjiを選択します。
![データベースjinjiのテーブル一覧](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c13a.jpg)
テーブルの作成
SQLタブのクリック
![SQLタブをクリックしたデータベースjinji](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c14a.jpg)
SQL構文の入力(CREATE TABLE)
![入力されたSQL構文](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c15a.jpg)
SQL実行結果
![SQLの実行で追加されたテーブルstaff_list](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c16a.jpg)
staff_listというテーブルができました。
注意:「返り値が空でした」と表示されますが、これは正常な動作です。
staff_listをクリックすると、idとstaff_nameとageという3つのカラムがあります。
![「返り値が空でした」と表示されたstaff_list](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c17a.jpg)
データの挿入
SQLタブのクリック
![表示されたstaff_listのSQL入力画面](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c18a.jpg)
SQL構文の入力(INSERT)
中身を消して、次のように入力します。
![SQL構文を入力したstaff_list](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c19a.jpg)
SQL実行結果
![SQLを実行したstaff_list](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c20aa.jpg)
表示タブをクリックすると、
![SQL実行結果が表示されたstaff_listの表示タブ](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c20ba.jpg)
データの検索(R)
XAMPPの起動
ApacheとMySQLの起動
![起動したxamppのコントロールパネル](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c11a.jpg)
phpMyAdminの起動
![起動したphpMyAdminの初期画面](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c12a.jpg)
データベースの選択
jinjiを選択
![選択されたデータベースjinji](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c31a.jpg)
データの検索
SQLタブのクリック
![SQL入力エリアの表示されたデータベースjinji](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c32a.jpg)
SQL構文の入力(SELECT)
![SQL構文が入力されたSQL入力エリア](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c33a.jpg)
※SQLは、大文字で記述するのが慣例的です。
SELECTとは、テーブルの内容を見るという意味のSQLで、※は全て、FROMはどこから、tablesというのは、テーブルの名前となります。
SQL実行結果
テーブル(tables)の内容が表示されます。
![実行結果が表示されたtables](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c34a.jpg)
「表示」タブをクリックすると
ここで表示タブをクリックすると同じSQLが発行されていることがわかります。つまり、表示タブをクリックした時と同じ動きをSQLで記述したのです。
![実行結果が表示されたtables](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c35a.jpg)
データの変更・削除(UD)
データの変更
テーブルの選択
staff_listを選択します。現在、id=1、staff_name=中村、age=67のレコードが1件登録されています。この中村さんのage(年齢)を65に変更します。
![データが表示されたstaff_listの表示タブ](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c41a.jpg)
SQLタブのクリック
SQLタブをクリックして、UPDATE構文を入力して、「実行」します。
![SQL構文の記載されたstaff_list](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c42a.jpg)
※WHERE構文がなければ、全てのデータが対象となります。
SQL実行結果
![SQL実行結果が表示されたstaff_list](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c43a.jpg)
表示タブをクリックすると
![データが表示されたstaff_listの表示タブ](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c44a.jpg)
データの削除
テーブルの選択
staff_listを選択します。現在、id=1、staff_name=中村、age=67のレコードが1件登録されています。これを削除してみます。
![データが表示されたstaff_listの表示タブ](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c45a.jpg)
SQLタブのクリック
SQLタブのクリックして、DELETE構文を入力して、「実行」します。
![SQL構文の入力されたstaff_listのSQLテキストエリア](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c46a.jpg)
SQL実行結果
![SQL実行結果が表示されたstaff_list](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c47a.jpg)
表示タブをクリックすると
![データが表示されたstaff_listの表示タブ](https://gungii.com/wp/wp-content/uploads/2020/04/admin-c48a.jpg)