表与表之间的关系


外键

外键就是从来帮助我们建立表与表之间关系的
foreign key

表关系

表与表只有四种关系
一对多关系
多对多关系
一对一关系
多对一关系

一对多

SQL语句建立表关系
1. 一对多表关系 外键字段建在多的一方
2. 在创建表的时候 一定要先建被关联表
3. 在录入数据的时候 也必须先录入被关联表create table dep(id int primary key auto_increment,dep_name char(16),dep_desc char(32)
);
insert into dep(dep_name,dep_desc) values('sb教学部','教书育人'),('外交部','多人外交'),('nb技术部','技术能力有限'); create table emp(id int primary key auto_increment,name char(16),gender enum('male','female','others') default 'male',dep_id int,foreign key(dep_id) references dep(id)
);
insert into emp(name,dep_id) values('jason',2),('egon',1),('tank',1),('kevin',3);#修改emp里面的dep_id字段或者dep表里的id字段
update dep set id =200 where id=2; #不行,外键限制
#删除dep表里的数据
delete from dep; #不行#可行的修改和删除的方法:
#1.先删除教学部对应的员工数据,再删除部门操作太过繁琐
#2.真正做到数据之间有关系同步更新,删除
引出概念
#级联更新,级联删除
create table dep(id int primary key auto_increment,dep_name char(16),dep_desc char(32)
);
insert into dep(dep_name,dep_desc) values('sb教学部','教书育人'),('外交部','多人外交'),('nb技术部','技术能力有限'); create table emp(id int primary key auto_increment,name char(16),gender enum('male','female','others') default 'male',dep_id int,foreign key(dep_id) references dep(id) on update cascade #同步更新on delete cascade #同步删除
);
insert into emp(name,dep_id) values('jason',2),('egon',1),('tank',1),('kevin',3);update dep id=200 where id=2;
delete from dep where id=1;

多对多

图书与作者
针对多对多字段表关系 不能再两张原有的表中创建外键
需要你单独开设一张 专门用来存储两张表之间的数据关系create table book(id int primary key auto_increment,title varchar(32),price int
);
create table author(id int primary key auto_increment,name varchar(32),age int
);create table book2author(id int primary key auto_increment,author_id int,book_id int,foreign key(author_id) references author(id)on update cascadeon delete cascade,foreign key(book_id) references book(id)on update cascadeon delete cascade
);insert into book(title,price) values('jpm',6699),('lzzy',9966),('tpt',6666);
insert into author(name,age) values('jason',18),('egon',73);
insert into book2author(author_id,book_id) values(1,1),(1,2),(2,3);
#当直接删除author里面的作者的时候
#中间表对应的数据也变化
delete from author where id=1;

一对一

一对一外键字段建在任意一方都可以,推荐建在查询频率高的表中create table authordetail(id int primary key auto_increment,phone int,addr varchar(64)
);
create table author(id int primary key auto_increment,name varchar(32),age int,authordetail_id int unique,foreign key(authordetail_id) references authordetail(id)on update cascadeon delete cascade
);

总结

表关系的建立需要用到foreign key
一对多 外键字段建在多的一方
多对多 自己开设第三张存储
一对一 建在任意一张都可以,但是推荐你建在查询频率较高的表中

修改表

#mysql 对大小写不敏感#1修改表名
alter table 表名 rename 新表名;
#2增加字段
alter table 表名 add 字段名 字段类型(宽度) 约束条件; #默认最后
alter table 表名 add 字段名 字段类型(宽度) 约束条件 first; #添加在最前面
alter table 表名 add 字段名 字段类型(宽度) 约束条件 after 字段名; #跟在谁的后面
#3删除字段
alter table 表名 drop 字段名;
#4修改字段
alter table 表名 modify 字段名 字段类型(宽度) 约束条件;
alter table 表名 change 旧字段名 新字段名 字段类型(宽度) 约束条件;

复制表

#sql语句的结果其实也是一张虚拟表
create table 新表 select * from 旧表; #不能复制主键外键索引,只复制表结构和数据

表与表之间的关系,修改表,复制表相关推荐

  1. js入门·表单详解一(修改表单属性,修改表单元素值)

    实在javascript入门·Document对象入门讲解(访问表单,创建新页,获取页标题) 一文中,我们已经把表单的一些基本访问等弄清楚了,下面我们深入的学下表单的属性以及对表单元素的简单操作! 演 ...

  2. mysql jdbc 表结构_JDBC操作表:JDBC修改表结构

    操作数据库:mysql 操作目的:通过增加字段,删除字段,修改字段和修改字段类型的方式让大家熟练掌握通过JDBC修改表结构. 在通过JDBC修改表结构前,我们还是先看下当前的表结构,如下图所示: 1. ...

  3. oracle取消表空间自增长,oracle_创建表空间_临时表空间_修改表空间_以及自增长...

    管理员用户登录oracle数据库 [oracle@DBORACLE ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on ...

  4. 老周谈低代码开发平台、工作流引擎、与表单引擎之间的关系

    低代码开发是最近几年比较火的一个概念,而工作流引擎,表单引擎是好多年以前的产物了.今天我们就聊聊三者之间的关系. 我是开源驰骋BPM公司的老周,是bpm系统的爱好者.研发者.探索者. 对上述三个模块问 ...

  5. oracle修改表中字段名,oracle如何修改表字段名

    oracle修改表字段名的方法是: 首先bai方法是使用RENAME关键字: 修改字段名:alter table 表名 rename column 现列zhi名 to 新列名;修改表名:alter t ...

  6. 怎么修改mysql表的结构_MySQL数据库如何修改表结构

    MySQL数据库修改表结构的方法:1.使用add添加字段,使用drop删除字段:2.使用alter修改字段名:3.修改列类型:4.修改表名:5.修改表选项:6.修改列属性. [相关图文教程:mysql ...

  7. 如何手动修改oracle表空间,ORACLE数据库创建和修改表空间

    -建立表空间(oracle中的tablespace(表空间)) CREATE TABLESPACE data01 DATAFILE 'D:\oracle\ora92\oradata\db\DATA01 ...

  8. 18_clickhouse副本同步与高可用功能验证,分布式表与集群配置,数据副本与复制表,ZooKeeper整合,创建复制表,副本同步机制,数据原子写入与去重,负载平衡策略,案例(学习笔记)

    24.副本同步与高可用功能验证 24.1.分布式表与集群配置 24.2.数据副本与复制表 24.3.ZooKeeper整合 24.4.创建复制表 24.5.副本同步机制 24.6.数据原子写入与去重 ...

  9. mysql 改变表的类型吗_mysql中修改表类型所带来的问题探讨

    对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎.如果你要使用全文索引,那必须使用myisam,那如何修改修改MySQL的引擎为INNODB呢,下面介绍一个修改方法. 对于M ...

最新文章

  1. 自动驾驶软件工程之预测
  2. 「每周CV论文推荐」 初学深度学习活体与伪造人脸检测必读的文章
  3. [OC Foundation框架 - 9] NSMutableArray
  4. java socket聊天工具_java+socket 简易聊天工具
  5. 硕博士的朋友圈都有哪些特点?
  6. 接口 java性能_接口测试性能测试
  7. UTF-8和GBK有啥区别?
  8. mysql——解压版安装详解
  9. Java面试知识(持续更新)
  10. Cadence Orcad Capture 高亮整个网络的方法图文视频教程
  11. LeetCode 55 - 跳跃游戏
  12. 中国贻贝养殖种类、养殖面积、养殖产量和进出口量分析「图」
  13. linux7启动ib子网管理器,IB_Switch交换机SB7890配置及Band网卡
  14. hdu2122 Ice_cream’s world III(MST)
  15. @Zabbix配置邮箱告警及钉钉告警
  16. 证券行业大数据安全简述
  17. Python电影观众数量回归分析 随机森林 可视化 实验报告
  18. 笔记:MySQL中的DDL、DML、DQL、约束等知识以及Navicat的安装教程
  19. 大学文秘专业有计算机,大学高级文秘专业描述
  20. 一个页面两个或多个swiper vue中一个页面多个swiper互相干扰 swiper轮播冲突

热门文章

  1. Arduino开发(一)_软件开发IDE工具的安装
  2. 支付宝产品签约-“系统综合评估签约条件不满足”解决办法
  3. 「达人分享」涨见识了!一段代码就可快速检测微信被删好友
  4. Springboot2.x集成ecache3.8.1使用@Cacheable缓存(代码方式,无xml)
  5. 结构(structure)创建——直接赋值法与使用struct函数创建法。
  6. 2020年春节复工后的十大高薪职业,IT技术岗榜上有名!
  7. 各向异性扩散滤波(Anisotropic Filter)原理与C++实现
  8. 与 Oh My Zsh 不可错过的邂逅:如何离线安装 Oh My Zsh
  9. Mysql安装文件夹下找不到my.ini文件怎么办?如何创建my.ini文件
  10. TRANSFORM_TEX是做什么的