練習問題を通して本レッスンで学んだことを確認してみましょう!
ここでは、Lesson1で紹介したSQLのテストプログラム「sqltest.php」を使って、データベースを操作してください。
学習塾の生徒の点数を管理するデータベースを作りたいと思います。以下のカラムを持つテーブル「students」を作ってください。
カラム名 | 型 | 使用用途 |
---|---|---|
student_id | INTEGER | 学生ID |
name | TEXT | 学生の名前 |
tel | TEXT | 電話番号 |
point | INTEGER | テストの得点 |
テーブルを作成するSQLは「CREATE TABLE」でした。もし、間違ったテーブルを作ってしまった場合には、「DROP TABLE」でテーブルを削除して再度作成してください。
本当は、データベースにキーを指定したり、デフォルト値を指定したりと、細かい指定ができるのですが、まずは、CREATE TABLEの書式を確認することが目的です。今のところ、以下のようなSQLを書けたらばっちりです。
CREATE TABLE students ( student_id INTEGER, name TEXT, tel TEXT, point INTEGER );
テーブル「students」を作成したら、以下の生徒データを挿入してください。
students_id | name | tel | point |
---|---|---|---|
1 | 伊藤 | 080-001-xxxx | 80 |
2 | 上田 | 090-002-xxxx | 93 |
3 | 尾上 | 090-003-xxxx | 72 |
4 | 神田 | 090-004-xxxx | 67 |
5 | 岸田 | 080-005-xxxx | 52 |
データを挿入するSQLは「INSERT」でした。TEXTとして作成したカラムは、"文字列..."のように二重引用符で囲むのを忘れないようにしましょう。
ここでは、5つのSQL文を記述します。ちなみに、プログラムの「sqltest.php」の方が、複数のSQLを実行する仕組みになっていないので、一文ずつ実行する必要があります。
INSERT INTO students (student_id,name,tel,point) VALUES(1,"伊藤","080-001-xxxx",80)
INSERT INTO students (student_id,name,tel,point) VALUES(2,"上田","090-002-xxxx",93)
INSERT INTO students (student_id,name,tel,point) VALUES(3,"尾上","090-003-xxxx",72)
INSERT INTO students (student_id,name,tel,point) VALUES(4,"神田","090-004-xxxx",67)
INSERT INTO students (student_id,name,tel,point) VALUES(5,"岸田","080-005-xxxx",52)
問題2で挿入したデータ一覧を画面に表示させてください。
データベースからデータを抽出するには「SELECT」文を記述するのでした。
以下のようなSQLを記述すると、挿入したデータ一覧を表示することができます。
SELECT * FROM students;
うまくいけば以下のようにデータが表示されます。
テストの後の答え合わせで、尾上さんの答え合わせが間違っていて、本来は79点だったことが判明しました。尾上さん(student_idが3番)の点数を修正してください。
データベースの値を変更するにはSQLの「UPDATE」文を使うのでした。
以下のように「UPDATE」文を記述します。UPDATE文では、SET句に続けて修正内容を記述し、WHERE句に続けて修正するデータの条件を記述します。
UPDATE students SET point=79 WHERE student_id=3;
テストの点数が70点以下の生徒さんに対して、特別な補修プリントを作りました。データベースから、70点以下の人だけリストアップしてみてください。
特定のデータだけを表示する場合には、SELECT文にWHERE句を続けて記述します。
以下のようなSQL文を記述することで、70点以下の生徒さんを抽出できます。
SELECT * FROM students WHERE point < 70;