1、首先我们打开Workbench创一个建数据库(这里都使用闪电1执行选定命令行)。
2、先创建Student学生表。
3、再创建course课程表。
4、然后就可以创建sc关联表了我们先写上Student的主键和course的主键,并写上sc自己的属性成绩。
5、再写上主键约束,以及把sc表的学号属性和Studnet的学号关联、课程号属性和course的课程号关联。
6、再次运行就可以看到我们成功创建了学生表和课程表的关联表sc。
从表可以被直接删除或修改。主表如果被从表引用,不能直接删除或修改主表的主键。
在修改和删除主表的主键时,同时修改或删除从表的外键值,称为级联 *** 作ON UPDATE CASCADE-- 级联修改,主键发生修改时,外键也会修改ON DELETE CASCADE _ 级联删除,主键发生删除时,外键也会删除
>DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使用非常友好的 ASL 协议。可以通过官方网站或者 Github 进行下载。由于 DBeaver 基于 Java 开发,可以运行在各种 *** 作系统上,包括:Windows、Linux、macOS 等。DBeaver 采用 Eclipse 框架开发,支持插件扩展,并且提供了许多数据库管理工具:ER 图、数据导入/导出、数据库比较、模拟数据生成等。
最好用inner join 来联表 那样语句可以清晰点
但是我看了下 你语句似乎也没有错 太复杂了 不容易看得出
我给你写一个你先试试
select class_code,classdptmt_code,dptmt_name,yxnm,snum from
class as c inner join dptmt as d on(cdptmt_code=ddptmt_code)
inner join yx as y on(yyxid=dyxid)
这一句就已经帮你把三表连接号了 后面自己再加条件
先试试这句代码查得出所有东西不 然后再加条件
但是 我得说你把数据库 *** 作放在那里是不好的 数据库 *** 作最好用类封装好 然后调用就是了 你那样既防不了sql注入又容易出问题 还不好检查 扩展性也很差 虽然看不出是asp 还是aspx 还是jsp 或者其他 但是 你那样做是不行的
级联删除你可以把它认为是一个触发器,也就是你删除主表中的数据,那么从表中的相关联的也就一起删除了。。。看个例子:======================create table a\x0d\(\x0d\id varchar(20) primary key,\x0d\password varchar(20) not null\x0d\)\x0d\\x0d\create table b\x0d\(\x0d\id int identity(1,1) primary key,\x0d\name varchar(50) not null,\x0d\userId varchar(20),\x0d\foreign key (userId) references a(id) on delete cascade\x0d\)\x0d\表B创建了外码userId 对应A的主码ID,声明了级联删除\x0d\测试数据:\x0d\insert a values ('11','aaa')\x0d\insert a values('23','aaa')\x0d\insert b values('da','11')\x0d\insert b values('das','11')\x0d\insert b values('ww','23')\x0d\删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除\x0d\delete a where id='11'=============================================================级联更新也大同小异。。只是关键字为:on update希望回答对你有所帮助
两种方法,个人建议你选择方法一,简单方便
方法一:触发器解决(下面的代码可以不用修改,copy直接用)
create or replace trigger delete_dept
before delete on DEPT
for each row
begin
delete from EMP where DEPT_NO = :oldDEPT_NO;
delete from POS where DEPT_NO = :oldDEPT_NO;
end;
/
方法二:修改你的外键设置,达到级联删除的目的,具体实现如下:
a)先查询出EMP表和POS表中 外键的名称(如果你知道 外键名这一步可以省略)
select CONSTRAINT_NAME,TABLE_NAME from user_constraints where CONSTRAINT_TYPE ='R' and TABLE_NAME in('EMP','POS');
b)删除EMP表和POS表上的外键后 重新建立允许级联删除的外键模式
alter table EMP drop constraint 外键名;
alter table POS drop constraint 外键名;
alter table EMP add constraint 外键名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;
alter table POS add constraint 外键名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;
---
以上,希望对你有所帮助。
Sql有两个很好的功能。一个是级联更新,另一个是级联删除。 比如说:当客户A删除时,级联删除就会把A的所有订单全删除了,如果不要求级联删除,则只删客户A,而不删除它的订单。
这就是级联的作用。。
不过至于你那题怎么答,你看明白了组织一下语言就行了。
以上就是关于在MYSQL数据库里如何建立两个表的关联全部的内容,包括:在MYSQL数据库里如何建立两个表的关联、dbeaver如何进行级联删除和修改、数据库三级级联查询问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)