- 更新日: 2017年03月21日
- 公開日: 2015年12月08日
ゼロから始めるPHP講座Vol22 phpMyAdminの基礎と使い方②
ゼロから始めるPHP講座phpMyAdminの基礎と使い方その2
クエリとSQL
人間が「データベースに伝える処理」を文字列として表したのがクエリ(query)です。データの追加や更新、削除などの命令は、クエリで行います。
レコードを追加するクエリ
INSERT INTO ・・・
レコードを選択するクエリ
SELECT * FROM ・・・
このクエリを書く規則が、SQL(Structured Query Language)という言語です。
これからレコードの追加/選択/変更/削除といった操作をSQLで行う方法を学んで行きますが、PHPに限らずどのプログラミング言語でもMySQLを扱う際のSQLは共通となります。
なお先ほど行ったテーブル作成も、phpMyAdminの内部では「CREATETABLE」というSQLを実行しています。
ただし、RDBMSの種類ごとにSQLの文法は少しづつ異なります。基本は同じですが、微妙に異なる書き方をします。もしMySQL以外のデータベースを利用することになった際は注意が必要です。
SQLの基本的なルールとして、以下の4つがあります。
大文字/小文字は区別しない
SQLでは命令部の大文字/小文字は区別しません。このため「INSERT」でも「insert」でも構いません。ただしデータベース名やテーブル名、カラム名は、環境によっては区別されますので、正確に入力してください。本講義ではSQLの命令は大文字で統一しています。
文字列は「’」で囲む
文字列は’(シングルクォート)で囲みます。”(ダブルクォート)も使用可能ですが、様々な理由から文字列は’を使って囲むべきです。
カラムの設定文字数を超えない
カラムに設定した文字数を超える値を指定すると、その値は切り捨てられます。しかしMySQL設定により切り捨てでなくエラーとすることも可能で、本講義ではエラーが出る設定にしてあります。
命令の最後に「;」を付ける
PHPと同じ、SQLでも命令の終わりには;(セミコロン)を付けます。
レコードの追加
レコードをテーブルに追加するには、INSERT文を使います。
テーブル名の後の「()」中にカラムを、VALUESの後の「()」中にカラムの中に入れるデータを、「,(カンマ)」で区切って記述します。カンマで区切ったカラムとデータの順番は連動しています。
goods_tableのレコードを追加する場合、SQLは次のようになります。
実際にテーブル「goods_table」にデータを追加してみましょう。
goods_id | goods_name | price |
---|---|---|
1 | コーラ | 100 |
2 | USB | 2000 |
3 | 傘 | 500 |
4 | お茶 | 100 |
phpMyAdmin上でも表示されておりますが、4行のレコードが追加されました。これでgoods_tableのテーブル作成とデータ追加は完了しました。
次にデータ検索を、goods_tableに対して行っていきます。
データ検索
データ検索には、SELECT文を使います。
表示させたいカラムを、「,(カンマ)」で区切って記述します。
例えばgoods_tableのカラム「good_id」と「goods_name」を表示させる場合、SQLは次のようになります。
実際にデータ検索を行い、結果を表示してみましょう。
goods_id | goods_name | price |
---|---|---|
1 | コーラ | 100 |
2 | USB | 2000 |
3 | 傘 | 500 |
4 | お茶 | 100 |
phpMyAdminに「good_id」と「goods_name」のデータだけが表示されました。また実行結果の上には、実行されたSQLや実行時間、取得レコード数も表示されています。
よくみると実行したSQLには「LIMIT0,30」という記述が付いています。これは表示をページに収めるために「30行だけ表示する」という命令がphpMyAdminにより自動的に付けられています。
今回カラムを1つずつ指定してSELECTを行いましたが、「*」(アスタリスク)を使うことで、「全部のカラム」という指定を行うもできます。
これにより、指定したテーブルの全てのカラムのデータを取得することができます。
goods_id | goods_name | price |
---|---|---|
1 | コーラ | 100 |
2 | USB | 2000 |
3 | 傘 | 500 |
4 | お茶 | 100 |
一見便利に見えるアスタリスクですが、必要のないカラムのデータまで取得すると、データ量が増えた際にパフォーマンス低下に繋がることがあります。
よって後々のことを考え、基本的にカラム名指定を心がけましょう。
課題
次の表と同じテーブル作成、レコード追加を行ってください。
character_id | character_name | pref |
---|---|---|
1 | ふなっしー | 千葉県 |
2 | ひこにゃん | 滋賀県 |
3 | まりもっこり | 北海道 |
また作成したテーブルの全データを表示してください。
character_id | character_name | pref |
---|---|---|
1 | ふなっしー | 千葉県 |
2 | ひこにゃん | 滋賀県 |
3 | まりもっこり | 北海道 |
次の表と同じテーブル作成、レコード追加を行ってください。
emp_id | emp_name | job | age |
---|---|---|---|
1 | 山田太郎 | manager | 50 |
2 | 伊藤静香 | manager | 45 |
3 | 鈴木三郎 | analyst | 30 |
4 | 山田花子 | clerk | 24 |
また作成したテーブルより、emp_idとemp_nameのみ表示してください。
emp_id | emp_name | job | age |
---|---|---|---|
1 | 山田太郎 | manager | 50 |
2 | 伊藤静香 | manager | 45 |
3 | 鈴木三郎 | analyst | 30 |
4 | 山田花子 | clerk | 24 |
NEXT LESSON ☛ データの条件指定
PREV LESSON ☛ phpMyAdminの基礎と使い方①
- この記事を書いた人
- CodeCampus編集部