数据准备:


## 学院表
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. s21day07 python笔记

    s21day07 python笔记 一.昨日内容回顾及补充 回顾 补充 将前面所提到的功能,统一改称为方法 二.深浅拷贝 基本格式 v1 = [1,2,3] import copy v2 = copy ...

  2. git创建分支并上传仓库

    1. 新建分支 xxx 2.  git pull (目录下 命令行将线上分支拉倒本地) 3. git checkout xxx (切换到到该分支 ) (可使用 git status 查看目前处于哪一个 ...

  3. some working learning总结学习(二)

    2. 读取excel上的测试用例和结果,成json格式,最终存到access数据库 结果如下: { : { 'Req_ID': 'Fqqqqq/qqqqq', 'Case_ID': 'ATC_LvPw ...

  4. win32网络模型之重叠I/O

    网上大部分重叠I/O的基本概念都讲得很清楚,但是大多讲得不是很深入,实际用起来很多问题.这里只对完成实例的通知进行讨论,对问题进行总结. 重叠IO异步读写后,在某一时刻"完成"后会 ...

  5. WinFormEx

    项目地址 :  https://github.com/kelin-xycs/WinFormEx WinFormEx 一个 用 C# 写的 WinForm 扩展库 , 用于改善 WinForm 的 界面 ...

  6. mongodb与mysql命令详细对比

    传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象(docu ...

  7. C语言小程序:除去字符串中间不需要的字符(从小引发大思考)

    #include <stdio.h>#include <conio.h> void fun(char *a, char *h, char *p){ char b[81]; ch ...

  8. Qt配置cmake;运行带参数的程序

    配置cmake编译器,步骤如下: 步骤1:  Qt下新建一个project. 步骤2:  在该project目录下创建一个CMakeLists.txt文件,并按规范编写该文件. Tip: projec ...

  9. vue route

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. c# 多态 虚方法

    多态: 为了解决同一种指令,可以有不同行为和结果 在运行时,可以通过调用同一个方法,来实现派生类中不同表现. 虚方法——抽象类——抽象函数——接口 虚方法: 被virtual 关键字修饰的方法  叫做 ...