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

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

sqlserver 支持级联更新和删除
oracle 只支持级联删除

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

如:

create database temp
go
use temp
go

create table UserInfo
(
UserId int identity(1,1) primary key ,
UserName varchar(20),  --用户名
password varchar(20) not null --密码
)

create table UserDetails
(
id int identity(1,1) primary key,
name varchar(50) not null, --真实姓名
userId int,
foreign key (userId) references UserInfo(UserId) on delete cascade
)

insert UserInfo values ('ly','jeff')
insert UserInfo values('wzq','wzqwzq')
insert UserInfo values('lg','lglg')
 
insert UserDetails values('李四',1)
insert UserDetails values('王五',2)
insert UserDetails values('刘六',3)

 

alter table 表名
add constraint 外键名
foreign key(字段名) references 主表名(字段名)
on delete cascade

语法:
Foreign Key
(column[,...n])
references referenced_table_name[(ref_column[,...n])]
[on delete cascade]
[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 语法:
DELETE [LOW_PRIORITY] [QUICK] FROM table_name
       [WHERE where_definition]
       [ORDER BY ...]
       [LIMIT rows]

or

DELETE [LOW_PRIORITY] [QUICK] table_name[.*] [, table_name[.*] ...]
       FROM table-references
       [WHERE where_definition]

or

DELETE [LOW_PRIORITY] [QUICK]
       FROM table_name[.*] [, table_name[.*] ...]
       USING table-references
       [WHERE where_definition]

示例代码为:

1. 删除一个表中的数据
delete from department where name='Asset Management';

2. 删除两个表中的数据
delete employee, employeeSkills
from employee, employeeSkills, department
where employee.employeeID = employeeSkills.employeeID
and employee.departmentID = department.departmentID
and department.name='Finance';

3. 删除两个表中的数据,用using语法
delete from employee, employeeSkills
using employee, employeeSkills, department
where employee.employeeID = employeeSkills.employeeID
and employee.departmentID = department.departmentID
and department.name='Finance';

时间: 2024-08-02 02:50:36

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

orcale-sql delete from删除数据问题

问题描述 sql delete from删除数据问题 我用delete from语句删除表内数据后在另一个地方还能看到删除前的数据,这是个什么原因,哪位大神能解答一下嘛 顺便说下如何解决最好~ 解决方案 是不是因为没有commit? 解决方案二: 删除不彻底,加上内联删除选项, 解决方案三: 在哪个地方看到也不说清楚了 解决方案四: 数据在存储的时候管理了其他的表信息. 删除的时候还需要把相关联的表信息Update或者Delete掉,不然会产生没有用的数据. 解决方案五: 你说的具体点,是在另外

mybatis两张表相关联,有索引外键怎么进行删除delete

问题描述 mybatis两张表相关联,有索引外键怎么进行删除delete 在写sql语句的时候怎么写比如student和teacher两张表 解决方案 你是想用sql直接写吗?设置外键的时候可以设置它的级别进行级联删除控制delete decade 如果中项目中,建议还是在service层用事务控制进行处理,先删除student中数据,再删除teacher中数据.

SQL循序渐进(8)删除记录

删除记录 Delete语句是用来从表中删除记录或者行,其语句格式为: delete from "tablename" where "columnname" OPERATOR "value" [and|or "column" OPERATOR "value"]; [ ] = optional 下面还是举个例子: delete from employee; 这条语句没有where语句,所以它将删除所有的记录,因

删除SQL Server数据中指定的重复记录

  delete from 表 where 主键=(select top 1 主键 from 表 where 相同字段=(select 相同字段 from 表 group by 相同字段 having count(*)>1)) 主键是表中绝对没有重复值的字段,如自动增量ID; 相同字段如"采集时间",删除表中采集时间相同的记录 本语句,每执行一次,只能删除一条重复记录,如果有三条记录有相同"采集时间",就要循环执行该语句两次.

sql语句中删除表数据drop、truncate和delete的用法

  虽然绿色资源网小编不建议大家去用命令删除数据库表中的东西,但是这些删除命令总有用的着的地方. 说到删除表数据的关键字,大家记得最多的可能就是delete了 然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了 现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的 老大------drop 出没场合:drop table tb --tb表示数据表的名字,下同 绝招:删除内容和定义,释放空间.简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表, 例如:一个

mysql-JDBC 通过Delete语句删除一条记录后,如何在JTable里面刷新显示

问题描述 JDBC 通过Delete语句删除一条记录后,如何在JTable里面刷新显示 原JTable用来展示数据库当中的某个表,通过JDBC删除MySQL中的一条记录后,JTable如何做到刷新呢, 解决方案 删除后再触发请求一次数据呗 解决方案二: 删除操作如果是ajax就加个location.href="查询这些数据"; 删除是普通的方法就重定向查询的方法. 解决方案三: 你这是JavaSwing 把 试试table.updateUI();

sql delete语句及同时删除多表数据实现方法

sql delete语句及同时删除多表数据实现方法 delete     [ from ]         { table_name with ( < table_hint_limited > [ ...n ] )          | view_name          | rowset_function_limited         }         [ from { < table_source > } [ ,...n ] ]     [ where         {

sql delete删除语句详细语法

delete语法 单表语法: delete [low_priority] [quick] [ignore] from tbl_name    [where where_definition]    [order by ...]    [limit row_count]多表语法: delete [low_priority] [quick] [ignore]    tbl_name[.*] [, tbl_name[.*] ...]    from table_references    [where

MS SQL基础教程:SQL表的删除

7.6.1 用Enterprise Manager 删除 在Enterprise Manager 中用右键单击要删除的表从快捷菜单中选择"删除(Delete)" 选项,则会出现如图7-9 所示的删除对象对话框,单击"Drop All"按钮,即可以删除表.单击"Show Dependencies"按钮,即会出现如图7-10 所示的对话框.它列出了表所依靠的对象和依赖于表的对象.当有对象依赖于表时,就不能删除表. 7.6.2 用DROP TABLE