sql >> データベース >  >> RDS >> SQLite

SQLite-データを削除

    DELETE ステートメントを使用して、テーブル内のデータを削除できます。

    WHERE 句は、削除する行を正確に指定するために使用できます。

    WHEREによって適用されるフィルタリング条件に応じて、すべての行、一部の行、またはなしを削除できます。 条項。

    簡単な削除

    まず、削除するアーティストを見つけましょう:

    sqlite> SELECT * FROM Artists;
    ArtistId  ArtistName            Bio                                     
    --------  --------------------  ----------------------------------------
    1         Joe Satriani                                                  
    2         Steve Vai                                                     
    3         The Tea Party                                                 
    4         Noiseworks                                                    
    5         Wayne Jury                                                    
    6         Mr Percival                                                   
    7         Iron Maiden                                                   
    8         Atmasphere            Australian jazz band centred around poly
    9         Ian Moss                                                      
    10        Magnum                                                        
    11        Strapping Young Lad                                           
    12        Slayer                                                        
    13        Primus                                                        
    14        Pat Metheny                                                   
    15        Frank Gambale                                                 
    16        Mothers of Invention                                          
    17        The Wiggles                                                   
    

    OK、アーティスト番号 12 を削除しましょう (スレイヤー)。

    Artists からそのレコードを削除する簡単なdeleteステートメントを次に示します。 表:

    DELETE FROM Artists
    WHERE ArtistId = 12;

    したがって、それを実行した後、SELECTを使用してレコードが実際に削除されたことを確認できます。 ステートメント:

    sqlite> SELECT * FROM Artists WHERE ArtistId = 12;
    sqlite>                                                                     
    

    (結果なし)。

    外部キー制約を使用したデータの削除

    外部キーによって参照されているレコードを削除しようとすると、エラーが発生するはずです。主キーレコードを削除する前に、まず外部キーレコードを削除する必要があります。

    たとえば、アーティストID 17 アーティスト から 表)は、 Albums の2つのレコードによって参照されています。 テーブル( ArtistId を参照) 列):

    sqlite> SELECT * FROM Albums WHERE ArtistId = 17;
    AlbumId   AlbumName             ReleaseDate   ArtistId    
    --------  --------------------  ------------  ------------
    5         Yummy Yummy           1994          17          
    13        Big Red Car           1995          17          
    

    したがって、アーティスト 17 を削除しようとすると Artistsテーブル(主キーを含む)から、エラーが発生するはずです。

    削除ステートメントは次のとおりです:

    DELETE FROM Artists
    WHERE ArtistId = 17;

    結果は次のとおりです:

    sqlite> DELETE FROM Artists
       ...> WHERE ArtistId = 17;
    Error: FOREIGN KEY constraint failed
    sqlite> 
    

    したがって、主キーを削除する前に、外部キーレコードを削除する必要があります。

    FOREIGNKEY制約が失敗しました を取得しなかった場合 メッセージの場合、外部キー制約チェックを有効にする必要がある場合があります。 PRAGMA foreign_keys = ON;を実行します 外部キー制約チェックを有効にします。

    関連レコードの削除

    それでは、 Albums 内の関連するレコードを削除しましょう。 上記の削除ステートメントを再試行する前に、テーブルを作成してください。

    DELETE FROM Albums
    WHERE ArtistId = 17;

    それらが削除されたことを確認してください:

    sqlite> SELECT * FROM Albums WHERE ArtistId = 17;
    sqlite> 
    

    (結果なし)。

    それでは、元の削除ステートメントをもう一度試してみましょう:

    DELETE FROM Artists
    WHERE ArtistId = 17;

    有望に見えます—エラーなし:

    sqlite> DELETE FROM Artists
       ...> WHERE ArtistId = 17;
    sqlite> 	
    

    そしてSELECT ステートメントは削除を確認します:

    sqlite> SELECT * FROM Artists WHERE ArtistId = 17;
    sqlite> 
    

    結果はありません。

    すべての行を削除

    WHEREを省略すると、テーブル内のすべての行を削除できます。 条項。

    予備のテーブルがあります( Albums1 )、それではそれを試してみましょう。

    まず、実際にデータが含まれていることを確認しましょう。

    sqlite> SELECT * FROM Albums1;
    AlbumId   AlbumName             Year          ArtistId    
    --------  --------------------  ------------  ------------
    1         Killers               1981          7           
    2         Powerslave            1984          7           
    3         Surfing with the Ali  1987          1           
    4         Heavy as a Really He  1995          11          
    5         Yummy Yummy           1994          17          
    6         Out of the Loop       2007          6           
    7         Suck on This          1989          13          
    8         Pork Soda             1993          13          
    9         Sailing the Seas of   1991          13          
    10        Flying in a Blue Dre  1989          1           
    11        Black Swans and Worm  2010          1           
    12        Somewhere in Time     1986          7           
    13        Big Red Car           1995          17          
    

    します。それでは、先に進んですべてを削除しましょう:

    DELETE FROM Albums1;

    それでは、内容をもう一度確認しましょう:

    sqlite> SELECT * FROM Albums1;
    sqlite> 
    

    (結果なし)。


    1. PostgreSQLを垂直方向にスケーリング

    2. Capgemini AgileInnovationPlatformとOracleCloudを使用した大規模なクラウドネイティブとDevSecOps

    3. ORA-01034:ORACLEは使用できませんORA-27101:共有メモリレルムが存在しません

    4. SQLとは何ですか?データベースとは何ですか?リレーショナルデータベース管理システム(RDBMS)は平易な英語で説明されています。