練習問題

練習問題を通して本レッスンで学んだことを確認してみましょう!

ここでは、Lesson1で紹介したSQLのテストプログラム「sqltest.php」を使って、データベースを操作してください。

問題1

学習塾の生徒の点数を管理するデータベースを作りたいと思います。以下のカラムを持つテーブル「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
);

問題2

テーブル「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)

問題3

問題2で挿入したデータ一覧を画面に表示させてください。

ヒント

データベースからデータを抽出するには「SELECT」文を記述するのでした。

答え

以下のようなSQLを記述すると、挿入したデータ一覧を表示することができます。

SELECT * FROM students;

うまくいけば以下のようにデータが表示されます。

画面
画面

問題4

テストの後の答え合わせで、尾上さんの答え合わせが間違っていて、本来は79点だったことが判明しました。尾上さん(student_idが3番)の点数を修正してください。

ヒント

データベースの値を変更するにはSQLの「UPDATE」文を使うのでした。

答え

以下のように「UPDATE」文を記述します。UPDATE文では、SET句に続けて修正内容を記述し、WHERE句に続けて修正するデータの条件を記述します。

UPDATE students SET point=79 WHERE student_id=3;

問題5

テストの点数が70点以下の生徒さんに対して、特別な補修プリントを作りました。データベースから、70点以下の人だけリストアップしてみてください。

ヒント

特定のデータだけを表示する場合には、SELECT文にWHERE句を続けて記述します。

答え

以下のようなSQL文を記述することで、70点以下の生徒さんを抽出できます。

SELECT * FROM students WHERE point < 70;
画面
画面