SQLiteにテーブルをドロップするには、DROP TABLE
を使用します ステートメント。
このステートメントを実行すると、データベースからテーブルが削除されます。データベーススキーマとディスクファイルから完全に削除されます。したがって、テーブルを復元することはできません。テーブルに関連付けられているすべてのインデックスとトリガーも削除されます。
基本的なDROP TABLE
ステートメント
まず、データベース内のテーブルを確認しましょう:
sqlite> .tables Albums Albums1 Albums2 Artists
前の演習の予備のテーブルがいくつかあるので、1つドロップしましょう。
次のコードは、 Albums1 を削除します テーブル:
DROP TABLE Albums1;
そのコードを実行した後、テーブルを再度確認できます:
sqlite> .tables Albums Albums2 Artists
テーブルが削除されました。
テーブルが存在するかどうかを確認します
IF EXISTS
を使用できます SQLiteがテーブルを削除しようとする前にテーブルが存在するかどうかを確認する句。
これにより、テーブルが存在しない場合に通常生成されるエラーを防ぐことができます。
まず、存在しないテーブルをなしで削除してみましょう。 IF EXISTS
を使用する 句。ドロップしたものをドロップしてみましょう:
DROP TABLE Album1;
これにより、次のようになります。
sqlite> DROP TABLE Album1; Error: no such table: Album1
では、もう一度試してみましょう。ただし、今回はIF EXISTS
を使用します。 条項:
DROP TABLE IF EXISTS Album1;
結果:
sqlite> DROP TABLE IF EXISTS Album1; sqlite>
したがって、何も起こりませんでした。重要なのは、エラーがスローされなかったことです。
主キーを含むテーブルを削除する
では、主キーを含むテーブルを削除しようとして、それらを参照する外部キーがある場合はどうなりますか?
試してみましょう:
DROP TABLE Artists;
結果:
sqlite> DROP TABLE Artists; Error: FOREIGN KEY constraint failed
予想通り、失敗しました。したがって、テーブルを削除する必要がある場合は、最初に関連するテーブルを削除する必要があります。
SQLiteは、テーブルを削除する前に実際にデータを削除しようとします。外部キー制約チェックが行われるのは、この削除アクションです。
SQLiteは、削除(およびその後の削除)操作を実行する前に、テーブルに関連付けられているインデックスまたはトリガーも削除します。