MySQL基础教程:删除数据delete语句
MySQL基础教程:删除数据delete语句,可以使用DELETE语句删除指定的数据行。例如,因为我们已决定不再出售《HarryPotter》(哈里波特)的系列作品,于是从books表中删除了作者为J.K.Rowling的所有图书记录,我们可以输入下列语句完成这项工作:
- DELETE FROM books
- WHERE author_id =
- (SELECT authors.author_id FROM authors
- WHERE author_last = 'Rowling'
- AND author_?rst = 'J. K.');
- DELETE FROM authors
- WHERE author_last = 'Rowling'
- AND author_?rst = 'J. K.';
在这里,我们仅从books表中删除了一行记录,该行的作者标识码为从authors表中获取的任意值,这个值基于指定的作者姓名。也就是说,author_id必须是由SELECT语句返回的任意值,圆括号中的是子查询语句。MySQL4.1版本或更新的版本支持语句中的子查询操作。如果你想使用早期的MySQL版本删除上面的数据,需要将圆括号中的SELECT语句单独执行(而不是作为子查询语句执行)来获取作者的标识码,然后再运行第一行的DELETE语句,在语句的结尾处将附加的SELECT语句手工替换成作者标识码。
你也可以使用用户自定义变量替换上面的SQL语句。下面是使用用户自定义变量的示例:
- SET @potter =
- (SELECT author_id FROM authors
- WHERE author_last = 'Rowling'
- AND author_?rst = 'J. K.');
- DELETE FROM books
- WHERE author_id = @potter;
- DELETE FROM authors
- WHERE author_id = @potter;
在第一部分,本书使用SET语句创建一个名为@potter的变量,并将括号中的SELECT语句作为值赋给此变量。顺便提及,尽管MySQL4.1以及以前的版本不支持子查询,但支持用户自定义变量。第二条SQL语句从books表中删除一行记录,该行的作者标识码与临时变量中的值相同。下面仍旧使用临时变量从authors表中删除数据。MySQL在关闭会话或对变量重新赋值以前,可以一直使用用户自定义变量。
Oracle技术沙龙:【数据保护顶尖技术-MAA】首次全国首播12c MAA技术 云数据库加上MAA技术组成最豪华的技...
Oracle技术沙龙第49期:【Oracle 数据库云技术分享】Oracle技术沙龙第49期:【Oracle 数据库云技术分享】本次技术沙...
Oracle技术沙龙第48期:【Oracle 12c RAC安装】小编:今天讲什么内容呢?以后有什么用呢? 大师:今天讲的是12c...
- 我要参加技术沙龙