我对SQL很新,我有以下问题:
我正在创建一个将3个表存储到数据库中的Android应用程序。
与自定义类相关联的电影我称之为电影
预告片,与我称为预告片
评论,与我称为评论
当应用程序触发事件时,我想创建一个SQL语句,删除所有未标记为收藏的电影。此外,它必须删除与未标记为收藏的电影相关联的每个预告片和评论。 为了将电影标记为收藏,我添加了一个可以有3个值的整数列:(0,1,2)。当电影条目的值为2时,它是最喜欢的,因此不能删除。
这是我的表的结构:
//SQL statement to create the movies table
final String SQL_CREATE_FAVOURITES_TABLE = "CREATE TABLE " +
MoviesEntry.TABLE_NAME + " (" +
MoviesEntry.COLUMN_MOVIE_ID + " INTEGER PRIMARY KEY," +
MoviesEntry.COLUMN_POSTER_URL + " TEXT NOT NULL," +
MoviesEntry.COLUMN_TITLE + " TEXT NOT NULL," +
MoviesEntry.COLUMN_PLOT + " TEXT NOT NULL," +
MoviesEntry.COLUMN_RATING_AVERAGE + " REAL NOT NULL," +
MoviesEntry.COLUMN_RATING_COUNT + " INTEGER NOT NULL," +
MoviesEntry.COLUMN_RELEASE_DATE + " TEXT NOT NULL, " +
MoviesEntry.COLUMN_MOVIE_TYPE + " INTEGER NOT NULL, " +
"CHECK (" + MoviesEntry.COLUMN_MOVIE_TYPE + " IN (0,1,2))" + " );";
//SQL statement to create the trailers table
final String SQL_CREATE_TRAILERS_TABLE = "CREATE TABLE " +
TrailersEntry.TABLE_NAME + " (" +
TrailersEntry.COLUMN_VIDEO_ID + " TEXT PRIMARY KEY," +
TrailersEntry.COLUMN_YOUTUBE_PATH + " TEXT NOT NULL," +
TrailersEntry.COLUMN_VIDEO_NAME + " TEXT NOT NULL," +
TrailersEntry.COLUMN_MOVIE_ID + " INTEGER NOT NULL, "
//COLUMN_MOVIE_ID is a foreign key to favourites table
+ " FOREIGN KEY (" + TrailersEntry.COLUMN_MOVIE_ID + ") REFERENCES " +
MoviesEntry.TABLE_NAME + " (" + MoviesEntry.COLUMN_MOVIE_ID + "), " +
//Each trailer for a movie has to be unique
" UNIQUE (" + TrailersEntry.COLUMN_VIDEO_ID + ", " +
TrailersEntry.COLUMN_MOVIE_ID + ") ON CONFLICT REPLACE);";
//SQL statement to create the reviews table
final String SQL_CREATE_REVIEWS_TABLE = "CREATE TABLE " +
ReviewsEntry.TABLE_NAME + " (" +
ReviewsEntry.COLUMN_REVIEW_ID + " TEXT PRIMARY KEY," +
ReviewsEntry.COLUMN_AUTHOR + " TEXT NOT NULL," +
ReviewsEntry.COLUMN_CONTENT + " TEXT NOT NULL," +
ReviewsEntry.COLUMN_MOVIE_ID + " INTEGER NOT NULL, " +
//COLUMN_MOVIE_ID is a foreign key to the favourites table
" FOREIGN KEY (" + ReviewsEntry.COLUMN_MOVIE_ID + ") REFERENCES " +
MoviesEntry.TABLE_NAME + " (" + MoviesEntry.COLUMN_MOVIE_ID + "), " +
//Each review for a movie has to be unique
" UNIQUE (" + ReviewsEntry.COLUMN_REVIEW_ID + ", " +
ReviewsEntry.COLUMN_MOVIE_ID + ") ON CONFLICT REPLACE);";
db.execSQL(SQL_CREATE_FAVOURITES_TABLE);
db.execSQL(SQL_CREATE_TRAILERS_TABLE);
db.execSQL(SQL_CREATE_REVIEWS_TABLE);
你能帮我弄清楚如何构造一个能完成此任务的删除语句吗?
非常感谢。