1. 多表关系
   外键    foreign key
   添加外键语法:    alter table 表名1 add foreign key(外键名称) references 表名2(主键名称)
2.三种表关系:
   一对多
       在多的一方建立外键 指向一方的主键        
   多对多
       建立中间表 存储外键分别指向其他表的主键
   一对一
       可以建立唯一 unique约束 让其中一张表的外键指向另一张表的主键(少见)
3.多表查询语法
   交叉连接查询: 查询出来的是两张表的每一条记录进行匹配的结果 会出现笛卡尔积
       select * from tb1 cross join tb2;
       select * from tb1 , tb2;
   内连接:
       select * from tb1 inner join tb2 on 条件; 显示内连接
       select * from tb1 , tb2 where 条件; 隐式内连接
   外连接:
       左外连接 select * from tb1 left outer join tb2 on 条件;        查询左表所有和两张表的共有部分
       右外连接 select * from tb1 right outer join tb2 on 条件;    查询右表所有和两张表的共有部分
4.子查询:    一条select语句的执行依赖于另一条select语句
   select * from 表名 in/exists/all/any (select *...)
5. 练习题计算企业每年营业额的增长率
SELECT * FROM annual_income a1,annual_income a2 WHERE a1.year=(a2.year+1);(按照要求找到两张表的关系)
SELECT * FROM annual_income a1 LEFT JOIN annual_income a2 ON a1.year=(a2.year+1);(查询第一张表和所有的)
SELECT a1.year,CONCAT(ROUND(IFNULL(((a1.zz-a2.zz)/a2.zz)*100,0),0),'%') 增长率 FROM annual_income a1 LEFT JOIN annual_income a2 ON a1.year=(a2.year+1);(最终的结果)
6 事务: 指的是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么全都成功,要么全都失败。
   事务特性:
       原子性/一致性/隔离性/持久性
   如果不考虑事务的隔离级别 在进行操作时有可能出现问题:
       脏读/不可重复读/虚读
   事务可以设置的隔离级别:
       read uncommitted    读未提交
       read committed        读已提交
       repeatable read        可重复读
       serializable        串行化
       
   

MySQL多表(理论知识总结)的更多相关文章

  1. MySQL高级部分理论知识细讲

    文章目录 一.数据库分区.分表.分库.分片 YesOk ,大家好 ,我是小刘,许久不见,甚是想念 ,小刘今天来带大家学习 分库分表的基础知识 1.1 单机数据库的瓶颈 单个表数据量越大,读写锁,插入操 ...

  2. MySQL多数据源笔记3-分库分表理论和各种中间件

    一.使用中间件的好处 使用中间件对于主读写分离新增一个从数据库节点来说,可以不用修改代码,达到新增节点数据库而不影响到代码的修改.因为如果不用中间件,那么在代码中自己是先读写分离,如果新增节点, 你进 ...

  3. 优秀后端架构师必会知识:史上最全MySQL大表优化方案总结

    本文原作者“ manong”,原创发表于segmentfault,原文链接:segmentfault.com/a/1190000006158186 1.引言   MySQL作为开源技术的代表作之一,是 ...

  4. MySQL InnoDB表--BTree基本数据结构

    MySQL InnoDB表是索引组织表这一点应该是每一个学习MySQL的人都会首先学到的知识,这代表这表中的数据是按照主键顺序存储,也就是说BTree的叶子节点存储了所有该行的数据. 我最开始是搞Or ...

  5. 用VC进行COM编程所必须掌握的理论知识

    一.为什么要用COM 软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的.结构化编程 ...

  6. 设置MySQL数据表主键

    设置MySQL数据表主键: 使用“primary key”关键字创建主键数据列.被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合.如下SQL语句所示: My ...

  7. Mysql优化方面的知识

    Mysql优化方面的知识 第一方面:30种mysql优化sql语句查询的方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避 ...

  8. Mysql必须知道的知识

    最近在准备面试,所以也整理了一些Mysql数据库常用的知识,供大家参考. 1.MySQL的复制原理以及流程 (1).复制基本原理流程 1. 主:binlog线程--记录下所有改变了数据库数据的语句,放 ...

  9. Android初级教程理论知识(第四章内容提供器)

    之前第三章理论知识写到过数据库.数据库是在程序内部自己访问自己.而内容提供器是访问别的程序数据的,即跨程序共享数据.对访问的数据也无非就是CRUD. 内容提供者 应用的数据库是不允许其他应用访问的 内 ...

随机推荐

  1. java的封神之路[转载]

    一.基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http://i ...

  2. JDK源码阅读(一):Object源码分析

    最近经过某大佬的建议准备阅读一下JDK的源码来提升一下自己 所以开始写JDK源码分析的文章 阅读JDK版本为1.8 目录 Object结构图 构造器 equals 方法 getClass 方法 has ...

  3. curl请求的get.post.put.delete对接其他系统接口方法

    class HttpCurl{ //控客云平台的appid private $appId = xxxxxx; //控客云平台的appkey private $appKey = 'xxxxxxxxxxx ...

  4. c++字符数组

    题目描述 题目描述 输入一个英文句子(长度不会超过100),和他的长度,统计每个字母出现的个数. 输入 第一行包括一个整数,表示句子的长度,长度不会超过100.数字后可能会有多余的无效字符 请gets ...

  5. C语言学习书籍推荐《C Primer Plus(中文版)(第5版)》下载

    普拉塔 (Prata S.) (作者), 云巅工作室 (译者) <C Primer Plus(中文版)(第5版)>共17章,介绍了C语言的基础知识,包括数据类型.格式化输入输出.运算符.表 ...

  6. Django rest framework(3)----节流

    目录 Django组件库之(一) APIView源码 Django restframework (1) ----认证 Django rest framework(2)----权限 Django res ...

  7. RestTemplate真实案例

    1. 场景描述 现在越来越的系统之间的交互采用http+json的交互方式,以前用的比较多的HttpClient,后来用的RestTemplate,感觉RestTemplate要比httpClent简 ...

  8. Java监控任务的生命周期

    Observable: public interface Observable { enum Cycle{ STARTED, RUNNING, DONE, ERROR } Cycle getCycle ...

  9. MyBatis简单使用方式总结

    MyBatis简单使用方式总结 三个部分来理解: 1.对MyBatis的配置部分 2.实体类与映射文件部分 3.使用部分 对MyBatis的配置部分: 1.配置用log4J显式日志 2.导入包的别名 ...

  10. 【题解】【P3383 【模板】线性筛素数】

    看完这篇博客你就懂了 原题链接 代码: #include<bits/stdc++.h> using namespace std; bool isPrime(int num) { if(nu ...