数据准备:


## 学院表
create table department(
d_id int primary key auto_increment,
d_name varchar(20) not null
);
insert into department(d_name ) values('计算机学院'),('外语学院');
insert into department(d_name ) values('机械学院'),('建工学院'),('艺术学院');

## 学生表
create table student(
s_id int primary key auto_increment,
s_name varchar(20) not null,
dept_id int ,
foreign key(dept_id) references department(d_id)
);
insert into student(s_name,dept_id ) values('佳能',2),('lucky',3);
insert into student(s_name,dept_id ) values('张三',1),('李四',1);
insert into student(s_name,dept_id ) values('张三丰',2),('小明',3),('小红',2);
insert into student(s_name) values('安迪'),('杰克');

## 学生详情
create table student_detail(
id int primary key, #学号
age int ,
sex char(4),
address varchar(20),
foreign key(id) references student(s_id)
);
insert into student_detail value(4,18,'女','北京');
insert into student_detail value(2,20,'男','湖南长沙');
insert into student_detail value(3,19,'男','广东佛山');
insert into student_detail value(1,21,'男','湖南长沙');
insert into student_detail value(5,17,'女','四川成都');
insert into student_detail value(6,23,'女','湖北武汉');

## 课程表
create table `cours`(
c_id int primary key auto_increment,
c_name varchar(20),
dept_id int not null, # 课程所属学院
foreign key(dept_id) references department(d_id)
);
insert into cours(c_name ,dept_id) values('python',1),('英语',2);
insert into cours(c_name ,dept_id) values('java',1),('工程造价',4);
insert into cours(c_name ,dept_id) values('机械设计',3),('土木',4);

课表

create table `select`(
s_id int,
c_id int,
primary key(s_id,c_id),
foreign key(s_id) references student(s_id),
foreign key(c_id) references cours(c_id)
);
insert into `select` values(2,4),(3,2),(1,1);
insert into `select` values(2,1),(4,2),(3,1);
insert into `select` values(2,3),(4,1),(2,2);


############################ Mysql 单表查询 ############################


############################  Mysql 子查询  ############################


############################ Mysql 关联查询 ############################

测试案例:


1 查出学生详情表性别为男,并同时年龄大于18的

select * from  student_detail where sex='男' and age>18;

2 根据上述的结果,查出学生表对应的 姓名, 年龄,家庭住址

select s.s_name,stu.age,stu.address from student s
left join student_detail stu on s.s_id = stu.id
where stu.sex='男' and stu.age > 18 ;

-----------------------------------------------------------------------------------

## 也可以使用子查询的方法
select s.s_name,stu.age,stu.address from student s
left join student_detail stu on s.s_id = stu.id
where s.s_id in ( select id from student_detail where sex='男' and age>18 ) ;

3 将学生详情,通过性别进行分组, 统计出各组的人数,并得出每组的年龄的平均值

select sex, count(id),avg(age) from student_detail group by( sex );

4.作为学生,选完课希望看到: 学生姓名, 所选课程名,开课学院

select s.s_name, c.c_name , d.d_name from `select` se
left join student s on se.s_id = s.s_id
left join cours c on se.c_id = c.c_id
left join department d on d.d_id = c.dept_id
where s.s_id =2;

Mysql 单表查询 子查询 关联查询的更多相关文章

  1. Mysql 单表查询-排序-分页-group by初识

    Mysql 单表查询-排序-分页-group by初识 对于select 来说, 分组聚合(((group by; aggregation), 排序 (order by** ), 分页查询 (limi ...

  2. MySQL单表多字段模糊查询

    今天工作时遇到一个功能问题:就是输入关键字搜索的字段不只一个字段,比如 我输入: 超天才 ,需要检索出 包含这个关键字的 name . company.job等多个字段.在网上查询了一会就找到了答案. ...

  3. python 3 mysql 单表查询

    python 3 mysql 单表查询 1.准备表 company.employee 员工id id int 姓名 emp_name varchar 性别 sex enum 年龄 age int 入职 ...

  4. Mysql 单表查询where初识

    Mysql 单表查询where初识 准备数据 -- 创建测试库 -- drop database if exists student_db; create database student_db ch ...

  5. MYSQL单表可以存储多少条数据???

    MYSQL单表可以存储多少条数据??? 单表存储四千万条数据,说MySQL不行的自己打脸吧. 多说一句话,对于爬虫来说,任何数据库,仅仅是存储数据的地方,最关心的是 能否存储数据和存储多少数据以及存储 ...

  6. MySQL单表数据不超过500万:是经验数值,还是黄金铁律?

    今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个 ...

  7. MySQL单表最大记录数不能超过多少?

    MySQL单表最大记录数不能超过多少? 很多人困惑这个问题.其实,MySQL本身并没有对单表最大记录数进行限制,这个数值取决于你的操作系统对单个文件的限制本身. 从性能角度来讲,MySQL单表数据不要 ...

  8. MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?

    本文阅读时间大约3分钟. 梁桂钊 | 作者 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢 ...

  9. mySQL单表限制大小

    MySQL单表大小的限制在目前的技术环境中,由所在主机的OS上面的文件系统来界定而不是由MySQL数据库本身来决定了. 在老版本的MySQL 3.22中,MySQL单表大小为4GB,当时的MySQL的 ...

随机推荐

  1. 绝对实用 NAT + VLAN +ACL管理企业网络

    在企业中,要实现所有的员工都能与互联网进行通信,每个人各使用一个公网地址是很不现实的.一般,企业有1个或几个公网地址,而企业有几十.几百个员工.要想让所有的员工使用这仅有的几个公网地址与互联网通信该怎 ...

  2. Python正则表达式模块(re模块)

    Python是我接触到的第一门编程语言,虽然它足够简单,但是对于当时刚刚接触编程语言的我来说还是有些难度的,于是只是了解了一些Python的基本语法,稍微深入一点的地方都没怎么了解.不过,到现在为止, ...

  3. [实战经验]Macbook pro 苹果系统换window系统

    1.       Macbook的window软件驱动备份 通过Boot Camp助手进行window支持苹果驱动下载 2.       拆机把SSD固态硬盘放在主盘位置,把苹果的机械盘放在光驱位置 ...

  4. ms-class的进化

    ms-class是avalon用得最多的几个绑定之一,也正因为如此其功能一直在扩充中.根据时期的不同,分为旧风格与新风格两种. 旧风格是指正在ms-class后面跟着类外,然后在绑定值中添加表达式,即 ...

  5. python matplotlib 绘图基础

    在利用Python做数据分析时,探索数据以及结果展现上图表的应用是不可或缺的. 在Python中通常情况下都是用matplotlib模块进行图表制作. 先理下,matplotlib的结构原理: mat ...

  6. Web API系列(三) 异常处理

    在上一篇教程中我为大家介绍了Web API中Filter的开发使用,其中讲到ExceptionFilter时留了一个坑:ExceptionFilter只能截获并处理Action执行过程中发生的异常,在 ...

  7. python ctypes

    official tutorial for ctypes libhttps://docs.python.org/3/library/ctypes.html 1 ctypes exports the c ...

  8. Linux:使用互斥量进行线程同步

    基础知识 同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数 ...

  9. css图片宽高相等设置

    <div class="image-header"> <img src="demo.jpg"> </div> .image- ...

  10. Metro应用Json数据处理

    Windows Phone 8 或者 Windows 8 平台对JSON数据的处理方式基本是一致的,需要使用DataContractJsonSerializer类将对象的实例序列化为JSON字符串,并 ...