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文で削除しなさい.

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

データベースの保存

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

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

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

参考書籍

愛知県名古屋市にある椙山女学園大学 文化情報学部 向研究室の公式サイトです. 専門は情報科学であり,人工知能やデータベースなどの技術要素を指導しています. この公式サイトでは,授業で使用している教材を公開すると共に, ベールに包まれた女子大教員のミステリアスな日常を4コマ漫画でお伝えしていきます. サイトに関するご意見やご質問はFacebookまたはTwitterでお問い合わせください.