当前位置:首页 > Mysql教程 > 列表

sql delete同时删除多表相关联记录

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-17 14:25:47 浏览: 评论:0 

sql delete同时删除多表相关联记录,sqlserver 支持级联更新和删除,oracle 只支持级联删除.

删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用,在级联删除中,还删除其外键值引用删除的主键值的所有行,如:

  1. create database temp 
  2. go 
  3. use temp 
  4. go 
  5.  
  6. create table UserInfo 
  7. ( 
  8. UserId int identity(1,1) primary key , 
  9. UserName varchar(20),  --用户名 
  10. password varchar(20) not null --密码 
  11. ) 
  12.  
  13. create table UserDetails 
  14. ( 
  15. id int identity(1,1) primary key, 
  16. name varchar(50) not null, --真实姓名 
  17. userId int, 
  18. foreign key (userId) references UserInfo(UserId) on delete cascade 
  19. ) 
  20.  
  21. insert UserInfo values ('ly','jeff') 
  22. insert UserInfo values('wzq','wzqwzq') 
  23. insert UserInfo values('lg','lglg') 
  24.  
  25. insert UserDetails values('李四',1) 
  26. insert UserDetails values('王五',2) 
  27. insert UserDetails values('刘六',3) 
  28. --phpfensi.com 
  29. alter table 表名 
  30. add constraint 外键名 
  31. foreign key(字段名) references 主表名(字段名) 
  32. on delete cascade 

语法:

  1. Foreign Key 
  2. (column[,...n]) 
  3. references referenced_table_name[(ref_column[,...n])] 
  4. [on delete cascade] 
  5. [on update cascade] 

注释:

column:列名

referenced_table_name:外键参考的主键表名称

ref_name:外键要参考的表的主键列

on delete:删除级联

on update:更新级联

000,请您对文章做出评价)此时:Delete From UserInfo Where UserId = 1 就可删除UserInfo表和UserDetails表的UserId=1 的内容

看一下MySql数据库教程怎么操作多表删除呢,有时我们可以直接用delete 来删除.

delete 语法:

  1. DELETE [LOW_PRIORITY] [QUICK] FROM table_name 
  2.        [WHERE where_definition] 
  3.        [ORDER BY ...] 
  4.        [LIMIT rows] 
  5.  
  6. or 
  7.  
  8. DELETE [LOW_PRIORITY] [QUICK] table_name[.*] [, table_name[.*] ...] 
  9.        FROM table-references 
  10.        [WHERE where_definition] 
  11.       --phpfensi.com 
  12. or 
  13.  
  14. DELETE [LOW_PRIORITY] [QUICK] 
  15.        FROM table_name[.*] [, table_name[.*] ...] 
  16.        USING table-references 
  17.        [WHERE where_definition] 

示例代码为:

1.删除一个表中的数据

delete from department where name='Asset Management';

2.删除两个表中的数据

  1. delete employee, employeeSkills 
  2. from employee, employeeSkills, department 
  3. where employee.employeeID = employeeSkills.employeeID 
  4. and employee.departmentID = department.departmentID 
  5. and department.name='Finance'; 

3.删除两个表中的数据,用using语法

  1. delete from employee, employeeSkills 
  2. using employee, employeeSkills, department 
  3. where employee.employeeID = employeeSkills.employeeID 
  4. and employee.departmentID = department.departmentID 
  5. and department.name='Finance';

Tags: delete同时删除多表 delete记录

分享到: