SQL(2) データの更新

Image from Gyazo

データベースの復元

前回までに作成したデータベースを読み込むには,[File]→[Open DB]をクリックし, 保存した sqlite1.db を選択します. 復元したデータベースに【学生リスト】と【学部リスト】があることを確認しましょう.

Image from Gyazo

学籍番号氏名学年学部
A001岩城隼人2工学部
A002岩村優1工学部
B003杉江弘子3人文学部
C004仙波あすか1国際関係学部

【学生リスト】

学部キャンパス教員数
工学部春日井30
人文学部春日井20
国際関係学部名古屋25

【学部リスト】

スキーマの変更

作成済みのテーブルのスキーマを変更するには ALTER文 を用います. テーブル名はスキーマを変更する対象のテーブルの名前です. ADD を指定すると属性の追加,DROP を指定すると属性の削除, RENAME TOを指定するとテーブル名の変更ができます.

/* ALTER文 属性の追加 */
ALTER TABLE テーブル名 ADD 属性名 データ型;

/* ALTER文 属性の削除 */
ALTER TABLE テーブル名 DROP 属性名;

/* ALTER文 テーブル名の変更 */
ALTER TABLE テーブル名 RENAME TO 新テーブル名;

それでは,【学生リスト】に よみがな を追加してみましょう.

/* 【学生リスト】によみがなを追加*/
ALTER TABLE 学生リスト ADD よみがな TEXT;

属性が新しく追加されたか SELECT文で確認してしみます. 新しく よみがな の列が追加され,その値が NULL となっていることが確認できます.

/* 【学生リスト】のレコードを表示 */
SELECT * FROM 学生リスト;

Image from Gyazo

レコードの更新

既にテーブルに存在するレコードを更新(修正)するには UPDATE文 を用います. テーブル名は更新対象のレコードを含むテーブルの名前です. WHEREの後にある属性名2と値2が一致するレコードを検索し, SETの後にある属性名1と値1に置き換えるという操作を行います.

/* UPDATE文 */
UPDATE テーブル名 SET 属性名1=1 WHERE 属性名2=2;

それでは,【学生リスト】の$学籍番号=A001$のレコードの$よみがな$を設定してみましょう.

/* よみがなの設定 */
UPDATE 学生リスト SET よみがな='いわきはやと' WHERE 学籍番号='A001';

$よみがな$が設定されたかSELECT文で確認してみます.

/* 【学生リスト】のレコードを表示 */
SELECT * FROM 学生リスト;

Image from Gyazo

例題1

残りのレコードの よみがな を設定しなさい.

  • いわむらゆう
  • すぎえひろこ
  • せんばあすか
Image from Gyazo

テーブルのコピー

テーブルをコピーするには CREATE文 を用います. 旧テーブル をコピーした新テーブル が作成されます.

/* テーブルのコピー */
CREATE TABLE 新テーブル AS SELECT * FROM 旧テーブル;

それでは,【学生リスト】をコピーして,【テニス部】を作成しましょう.

/* 【学生リスト】をコピーして【テニス部】を作成 */
CREATE TABLE テニス部 AS SELECT * FROM 学生リスト;

コピーした【テニス部】をSELECT文で確認してみます.

/* 【テニス部】のレコードを表示 */
SELECT * FROM テニス部;

Image from Gyazo

レコードの削除

テーブルに存在するレコードを削除するには DELETE文 を用います. テーブル名は削除対象のレコードを含むテーブルの名前です. WHEREの後ろにある属性名と値が一致するレコードを削除します.

/* DELETE文 */
DELETE FROM テーブル名 WHERE 属性名=;

それでは,【テニス部】から$学籍番号=A001$のレコードを削除してみましょう.

/* DELETE文 */
DELETE FROM テニス部 WHERE 学籍番号='A001';

レコードを削除した【テニス部】をSELECT文で確認してみます.

/* 【テニス部】のレコードを表示 */
SELECT * FROM テニス部;
学籍番号氏名学年学部よみがな
A002岩村優1工学部いわむらゆう
B003杉江弘子3人文学部すぎえひろこ
C004仙波あすか1国際関係学部せんばあすか

【テニス部】

Image from Gyazo

例題2

【学生リスト】をコピーして,下記の【サッカー部】を作成しなさい.

学籍番号氏名学年学部よみがな
A001岩城隼人2工学部いわきはやと
B003杉江弘子3人文学部すぎえひろこ
A005内田弘3工学部うちだひろし
【サッカー部】 Image from Gyazo

テーブルの削除

テーブルを削除するには DROP文 を用います.

/* DROP文 */
DROP TABLE テーブル名;

例題3

【学部リスト】をコピーして,下記の【在学学生数】を作成しなさい. 収容定員の設定に際しては,UPDATE文はWHEREを指定しない場合,複数行に同じ値を設定することを利用しなさい. 作成したらデータベースを保存した後で,【在学学生数】をDROP文で削除しなさい.

学部キャンパス収容定員学生数
工学部春日井100102
人文学部春日井10099
国際関係学部名古屋100106
【在学学生数】

データベースの保存

作成したデータベースを保存するには,[File]→[Save DB]をクリックします. 保存したファイルは sqlite2.db とファイル名を変更してから,提出してください.

情報処理技術者試験・過去問

下記リンクは ITパスポート試験ドットコム基本情報技術者試験ドットコム応用情報技術者試験ドットコムに掲載されている問題です.