多表连接
0. 表间关系分析
1. 一对多的关系,在多的关系中加列。
列:dept表 emp表
id name id name dept_id
1 财务部 1 张三 1
2 人事部 2 李四 1
3 科技部 3 王五 2
4 赵六 3
2. 一对一的关系,可以在任意一方添加列保存另一方的主键为外键。
3. 多对多的关系时,添加一个第三方的表,在第三方表中分别保存两张表的主键,以此来保存两张表中数据之间的对应关系。
列:stu学生表,字段:id,name
tea老师表,字段:id,name
1 create table stu_tea( 2 stu_id int, 3 tea_id int, 4 primary key(stu_id,tea_id), 5 foreign key(stu_id) references stu(stu_id), 6 foreign key(tea_id) references tea(tea_id), 7 );
primary key(stu_id,tea_id)中的stu_id,tea_id为联合主键
4. 级联更新:主表中的主键发生更新时,从表中记录的外键数据也会跟该表更新,ON DELETE CASCADE
5. 级联删除:当主表删除了主键数据时,从表中记录外键数据也会跟着删除,ON UPDATE CASCADE
1. 连接
1. 内连接
列:dept表 emp表
id name id name dept_id
1 财务部 1 张三 1
2 人事部 2 李四 1
3 科技部 3 王五 2
4 赵六 3
1 select * from dept,emp where emp.dept_id=dept.id
1 select * from dept inner join emp on emp.dept_id=dept.id
1. 当一张表中包含了对应关系时,可以将此表分割为两张表
列:emp表
id name topId
1 张三 6
2 李四 5
3 王五 4
4 刘畅 8
5 刘鑫 9
6 嫣然 10
。。。。。。。。。
可以将此表分为两个表:emp e1(员工表)和emp e2(上级表)
显示的字段为:e1.id,e1.name,e2.id
连接条件为:e1.topId=e2.id
组合语法:
1 select e1.id,e1.name,e2.name from emp e1,emp e2 where e1.topId=e2.id
原文地址:https://www.cnblogs.com/lxzlovewyq/p/13299634.html
- Java程序员的日常—— Arrays工具类的使用
- Mysql-14-mysql的日志管理
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- Java程序员的日常 —— static的用法讲解实践
- WSAEventSelect模型 ---应用实例,重写TCP服务器实例
- Mysql-13mysql的复制
- 蓝牙门禁系统
- Java程序员的日常 —— 工作一天的收获
- Mysql-12-mysql的备份和恢复
- WSAEventSelect模型
- 事件分发机制学习
- Java程序员的日常—— 《编程思想》关于类的使用常识
- Mysql-7-mysql函数
- WSAAsyncSelect模型
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android使用Kotlin实现多节点进度条
- Android中webView加载H5绑定cookie实例
- 解决Android webview设置cookie和cookie丢失的问题
- Android实现清除单个域名的cookie
- Android实现触发html页面的Button控件点击事件方式
- webview添加参数与修改请求头的user-agent实例
- android webview获取html代码和根据id获取value实例
- pip 安装MySQL-python:EnvironmentError: mysql_config not found
- 关于WebView 重定向行为导致的多次加载的问题
- 解决webview内的iframe中的事件不可用的问题
- Android WebView拦截iframe标签内部跳转教程
- Android实现WebView点击拦截跳转原生
- Android实现带节点的进度条
- Android WebView userAgent 设置为桌面UA实例
- Android WebView 内处理302重定向不跳转的解决