ODBC を使用したデータの更新

このチュートリアルでは、ODBC を使用してレコードおよびテーブルを変更するためのコマンドを実行する方法を学習します。ここでは、CRUD データベース操作の Update(更新)部分について説明します。

先のチュートリアルで作成した接続文字列と ZENDB データベースを使用して、右側(このページの内容)に挙げたトピックの手順を進めます。

新しい列を追加してテーブルを更新する

テーブルの変更を示すために、Students テーブルに新しい列を追加しましょう。ADD 句を指定した SQL ALTER TABLE ステートメントを使用します。

c.execute("ALTER TABLE Students ADD Major CHAR(32) DEFAULT 'Undecided'")

デフォルト値を "Undecided" とする、Major という名前の列を追加しました。

これにより、Students テーブルが更新されて新しい Major 列を持つようになり、新しい列にはデフォルト値が設定されて、すべての学生が未定となります。

値を変更してテーブルを更新する

テーブル内の特定のレコードの値を更新するには、UPDATE ステートメントを使用できます。

c.execute("UPDATE Students Set Major = 'English' WHERE Major = 'Undecided'")

このコマンドは、Students テーブルの全レコードの Major 列について設定を行い、値が現在 "Undecided" である場合は、値を "English" にします。この例では、これによりすべてのレコードが変更されます。

Zen Control Center でテーブルは次のようになります。

テーブル列のデフォルト値を更新する

Students テーブルを作成した際に、Account_Balance 列のデフォルト値を指定しました。同様に、Major 列にもデフォルト値 "Undecided" を指定しました。(Id 列のデフォルトは、autoincrement 型によって暗黙に設定されます。)

デフォルト値を変更する(または、定義されていない場合はデフォルトを追加する)には、列の新しい DEFAULT 値を指定する MODIFY 句を指定した、ALTER TABLE ステートメントを使用します。

c.execute("ALTER TABLE Students MODIFY Major CHAR(32) DEFAULT 'Math'")

これで、Major 列の値を指定しないで新しいレコードを挿入した場合には、"Math" がデフォルト値になります。

c.execute("INSERT INTO Students(Name, Account_Balance) VALUES ('Sue', 700)")

テーブルの結果を見ると、学生 Sue が数学を専攻していることを確認できます。