表与表之间的关系,修改表,复制表
表与表之间的关系
外键
外键就是从来帮助我们建立表与表之间关系的
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 旧表; #不能复制主键外键索引,只复制表结构和数据
表与表之间的关系,修改表,复制表相关推荐
- js入门·表单详解一(修改表单属性,修改表单元素值)
实在javascript入门·Document对象入门讲解(访问表单,创建新页,获取页标题) 一文中,我们已经把表单的一些基本访问等弄清楚了,下面我们深入的学下表单的属性以及对表单元素的简单操作! 演 ...
- mysql jdbc 表结构_JDBC操作表:JDBC修改表结构
操作数据库:mysql 操作目的:通过增加字段,删除字段,修改字段和修改字段类型的方式让大家熟练掌握通过JDBC修改表结构. 在通过JDBC修改表结构前,我们还是先看下当前的表结构,如下图所示: 1. ...
- oracle取消表空间自增长,oracle_创建表空间_临时表空间_修改表空间_以及自增长...
管理员用户登录oracle数据库 [oracle@DBORACLE ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on ...
- 老周谈低代码开发平台、工作流引擎、与表单引擎之间的关系
低代码开发是最近几年比较火的一个概念,而工作流引擎,表单引擎是好多年以前的产物了.今天我们就聊聊三者之间的关系. 我是开源驰骋BPM公司的老周,是bpm系统的爱好者.研发者.探索者. 对上述三个模块问 ...
- oracle修改表中字段名,oracle如何修改表字段名
oracle修改表字段名的方法是: 首先bai方法是使用RENAME关键字: 修改字段名:alter table 表名 rename column 现列zhi名 to 新列名;修改表名:alter t ...
- 怎么修改mysql表的结构_MySQL数据库如何修改表结构
MySQL数据库修改表结构的方法:1.使用add添加字段,使用drop删除字段:2.使用alter修改字段名:3.修改列类型:4.修改表名:5.修改表选项:6.修改列属性. [相关图文教程:mysql ...
- 如何手动修改oracle表空间,ORACLE数据库创建和修改表空间
-建立表空间(oracle中的tablespace(表空间)) CREATE TABLESPACE data01 DATAFILE 'D:\oracle\ora92\oradata\db\DATA01 ...
- 18_clickhouse副本同步与高可用功能验证,分布式表与集群配置,数据副本与复制表,ZooKeeper整合,创建复制表,副本同步机制,数据原子写入与去重,负载平衡策略,案例(学习笔记)
24.副本同步与高可用功能验证 24.1.分布式表与集群配置 24.2.数据副本与复制表 24.3.ZooKeeper整合 24.4.创建复制表 24.5.副本同步机制 24.6.数据原子写入与去重 ...
- mysql 改变表的类型吗_mysql中修改表类型所带来的问题探讨
对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎.如果你要使用全文索引,那必须使用myisam,那如何修改修改MySQL的引擎为INNODB呢,下面介绍一个修改方法. 对于M ...
最新文章
- 自动驾驶软件工程之预测
- 「每周CV论文推荐」 初学深度学习活体与伪造人脸检测必读的文章
- [OC Foundation框架 - 9] NSMutableArray
- java socket聊天工具_java+socket 简易聊天工具
- 硕博士的朋友圈都有哪些特点?
- 接口 java性能_接口测试性能测试
- UTF-8和GBK有啥区别?
- mysql——解压版安装详解
- Java面试知识(持续更新)
- Cadence Orcad Capture 高亮整个网络的方法图文视频教程
- LeetCode 55 - 跳跃游戏
- 中国贻贝养殖种类、养殖面积、养殖产量和进出口量分析「图」
- linux7启动ib子网管理器,IB_Switch交换机SB7890配置及Band网卡
- hdu2122 Ice_cream’s world III(MST)
- @Zabbix配置邮箱告警及钉钉告警
- 证券行业大数据安全简述
- Python电影观众数量回归分析 随机森林 可视化 实验报告
- 笔记:MySQL中的DDL、DML、DQL、约束等知识以及Navicat的安装教程
- 大学文秘专业有计算机,大学高级文秘专业描述
- 一个页面两个或多个swiper vue中一个页面多个swiper互相干扰 swiper轮播冲突
热门文章
- Arduino开发(一)_软件开发IDE工具的安装
- 支付宝产品签约-“系统综合评估签约条件不满足”解决办法
- 「达人分享」涨见识了!一段代码就可快速检测微信被删好友
- Springboot2.x集成ecache3.8.1使用@Cacheable缓存(代码方式,无xml)
- 结构(structure)创建——直接赋值法与使用struct函数创建法。
- 2020年春节复工后的十大高薪职业,IT技术岗榜上有名!
- 各向异性扩散滤波(Anisotropic Filter)原理与C++实现
- 与 Oh My Zsh 不可错过的邂逅:如何离线安装 Oh My Zsh
- Mysql安装文件夹下找不到my.ini文件怎么办?如何创建my.ini文件
- TRANSFORM_TEX是做什么的