文档章节

mysql多表

meshwon
 meshwon
发布于 2016/06/10 19:56
字数 522
阅读 5
收藏 0

1,创建员工表

create table emp(
    e_id int primary key,
    e_name varchar(20) not null,
    e_sal double(10,2)
);

2.创建部门表

create table dept(
   d_id int primary key,
   d_name varchar(20) not null
);

3.创建了两表以后,需要了解两个表之间的关系,显然,员工与部门表之间的关系是多对一的。另外一个问题就是:在应用中经常查的表是哪一个,经常需要在查哪一个表的时候将另一个表中的内容查出来。知道了这些以后就知道了外键所在的表。当然,外键一般放在多的一方。

在emp表中插入新的字段,并修改该字段为外键字段。

alter table emp add column d_id int;

ALTER TABLE emp  ADD FOREIGN KEY empFK (d_id)
   REFERENCES DEPT (d_id); 

4.分别在两个表中插入数据。

--必须先插入该表,emp表会引用该表的d_id
INSERT INTO dept(d_id,d_name) VALUES(1,"开发部");
INSERT INTO dept(d_id,d_name) VALUES(2,"管理部");
INSERT INTO dept(d_id,d_name) VALUES(3,"HR");

INSERT INTO emp(e_id,e_name,e_sal,d_id) VALUES(1,'张三',10000,1);
INSERT INTO emp(e_id,e_name,e_sal,d_id) VALUES(2,'李四',10000,2);

5.内连接查询

SELECT e.*,d.*
FROM emp e,dept d
WHERE e.d_id = d.d_id;

6.外连接查询

1.左外连接

   两个表的数据不一致的时候,比如在此例中dept表中有一个d_id为3的数据,但是在员工表中没有该数据,现在要根据部门号统计部门的员工数就需要左外连接。

SELECT COUNT(e.e_id) '员工数',d.d_name
FROM dept d LEFT JOIN emp e ON
e.e_id = d.d_id GROUP BY d.d_id;

左外连接将数据较多的放到left的左边,用左边的数据强行将右边较少的数据查出来。

2.右外连接与左外连接相反。

7.查询本部门中工资大于平均工资的人与人数

SELECT e.sal,dd.did,COUNT(e.id)
FROM emp e,(SELECT AVG(e.sal) asal,d.DEPTID did FROM emp e,dept d WHERE d.d_id=e.d_id GROUP BY d.DEPTID) dd
WHERE e.sal>=dd.asal AND e.d_id=dd.did GROUP BY dd.did

 

© 著作权归作者所有

共有 人打赏支持
meshwon
粉丝 1
博文 29
码字总数 19085
作品 0
哈尔滨
程序员
技术贴--企业系统不能用mysql -- 两个凡是

1: Mysql 没有完整实现MVVC, 在交易系统中, 是灾难. 任何交易系统都不应该用mysql. 2: Mysql 无法快速对多表关联(3张以上)进行查询策略分析, 无法支撑复杂的业务数据分析. 结论: Mysql 既不能...

宏哥
2016/10/24
432
4
【分布式架构之旅-理论篇】数据库分库分表

前言 储备知识ing,很久之前写的。 MySQL集群 MySQL官方提供的是mysql-proxy方案,主要解决了高并发的问题,但是没有解决高可用的问题。一般项目都是读多写少。读的操作让mysql-slave去处理,...

cmazxiaoma
2017/12/18
0
0
MySQL数据迁移工具的设计与实现

一、背景 MySQL作为最流行的关系型数据库产品之一,当数据规模增大遭遇性能瓶颈时,最容易想到的解决方案就是分库分表。无论是进行水平拆分还是垂直拆分,第一步必然需要数据迁移与同步。由此...

stuxuhai
2017/12/08
0
0
MySQL主从复制延迟原因分析

导读 线上有个MySQL实例,存在严重的复制延迟问题,原因出乎意料。 线上有个MySQL 5.7版本的实例,从服务器延迟了3万多秒,而且延迟看起来好像还在加剧。 MySQL版本 Server version: 5.7.18...

898009427
2017/12/29
0
0
mysql高效的视图查询及mysql高效的多表链接查询

mysql高效的视图查询及mysql高效的多表链接查询 在开发项目的时候用到mysql的视图 建立的视图时要连接多表连接查询并显示出数据 建立的过程是这样的 表A CREATE TABLE A( id int auto_incre...

PHPUI
2012/07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud Gateway真的有那么差吗?

前言 Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于Spring这样的整...

Java小铺
32分钟前
1
0
SpringBoot远程调试,远程debug你的线上项目

开发环境中代码出错了,可以利用IDE的debug功能来进行调试。那线上环境出错呢? 一、假设我们的项目是部署在tomcat中,那我们就需要对tomcat进行一定对配置,配置如下。 1. windows系统中,找...

nonnetta
37分钟前
0
0
JAVA秒杀优化方向

秒杀优化方向 将请求尽量拦截在系统上游:传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小,我们可以通过限流、...

小贱是个程序员
44分钟前
0
0
C# 统计字符串中大写字母和小写字母的个数

static void Main() { int count1 = 0; int count2 = 0; Console.WriteLine("请输入字符串"); string str = Convert.ToString(Consol......

熊二的爸爸是谁
46分钟前
0
0
分布式服务框架之远程通讯技术及原理分析

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是...

老道士
52分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部