私は、movieIDが主キーであり、その外部キーがテーブルBudgetのmovieIDであるテーブルMovieを持っています。Movieテーブルには、映画の名前である属性MovieTitleがあります。
Movieテーブルの最初の文字「K」で始まる行を削除する方法を知りたいです。
たとえば、映画のタイトル「Kingdom of Heaven」を削除したいのですが、最初にテーブルBudgeの外部キーを削除する必要があります。この状況のコマンドは何か知りたいです。
これがあなたの最良の選択肢になると思います。ON DELETE
テーブルから削除された対応するレコードを削除する外部キー制約が必要です。
DELETE FROM Movie WHERE SUBSTR(movieTitle, 1, 1) = 'K'
「Kingdom of Heaven」というタイトルの映画に関するすべてのレコードを削除すると、映画も削除できます。
SELECT movieID FROM Movie WHERE movieTitle = 'Kingdom of Heaven'
これにより、movieID が返され、この ID に関する 2 番目のテーブルのレコードが削除されます
DELETE * FROM (secondTable) WHERE movieID = (value got from the first query)
そして今、あなたは映画を削除することができます
DELETE * FROM Movie WHERE movieID = (value got from the first query)
たとえば、映画のタイトル「キングダム オブ ヘブン」を削除したいのですが、まずテーブル Budge の外部キーを削除する必要があります。この状況のコマンドは何か知りたいです。
ムービーを参照する Budge の外部キーを として宣言する方がよいでしょうON DELETE CASCADE
。これを行うと、ムービーを削除すると、ムービーのテーブルを参照する Budge 内のすべての行が自動的に削除されます。
「K」で始まるすべてのムービーを削除するには (これは、実際にはあなたが本当に望んでいるものではない可能性が高いと思います)、これらの行に沿って何かを使用します。
delete from movie
where MovieTitle like 'K%';
タイトル全体を指定する方がはるかに安全ですが、ムービーがタイトルを共有する場合があることに注意してください。(「スピード」、「逃亡者」、「タイタニック」など)
delete from movie
where MovieTitle = 'Klute';
2 つの映画のどちらを意味するかを明確にするために、2 つの映画が同じタイトルを共有している場合は、MovieID のみを使用するか、タイトルと ID の両方を使用します。(ステートメント全体がログ ファイルに表示される場合、タイトルと ID 番号の両方があれば、何が起こったかを簡単に確認できます。)
delete from movie
where MovieTitle = 'Titanic'
and MovieID = 42;
これを試して:
delete from Movie where MovieTitle like 'K%'