多表查询思路:

join 是 inner join 简写

1.数据来自多张表,优先想到多表连接join ON

2.关联表写join两端

3.on条件写两表的关联列

4.所有查询条件select后,注意表名和别名

5.where过滤条件写最后

注释:INNER JOIN 与 逗号多表 是相同的。

select * from student,sc where student.sno=sc.sno; '相同' select * from student inner join sc on student.sno=sc.sno;

inner join是内连接,显示符合连接条件的记录,连接条件已经指明了。与直接使用where 条件过滤条件一样的两个表符合条件的数据。

left join 左连接查询结果是以左边的表为主,右表的数据匹配不到的字段为null;

right join 右连接查询结果以右边的表为主,左表的数据匹配不到的字段为null;

MySQL官方实例库下载

当前内容已被隐藏,您需要登录才能查看

登录立刻注册

两张表查询:

#查询一下世界上人口数量小于100人的城市名和国家名

select city.countrycode as daihao, country.name as guojia,city.name as chengshi,city.population as renkou from city join country on country.code=city.countrycode where city.population<100;

#查询城市shenyang,城市人口,所在国家名(name)及国土面积(surfacearea)

select country.name,city.name,country.SurfaceArea from city join country on city.countrycode=country.code where city.name='shenyang';

#查询城市为heze,城市人口,所在国家名(name),及国土面积(surfacearea)

select country.name,city.name,city.population,country.surfacearea from city join country on city.countrycode=country.code where city.name='heze';

案例:

创建school库:

CREATE DATABASE school CHARSET utf8;

USE school

创建学生表:

CREATE TABLE student(

sno INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学号',

sname VARCHAR(20) NOT NULL COMMENT '姓名',

sage TINYINT UNSIGNED NOT NULL COMMENT '年龄',

ssex ENUM('f','m') NOT NULL DEFAULT 'm' COMMENT '性别'

)ENGINE=INNODB CHARSET=utf8;

student(sno,sname,sage,ssex) 学生表

sno: 学号;

sname:学生姓名;

sage: 学生年龄;

ssex: 学生性别;

创建课程表:

CREATE TABLE course(

cno INT NOT NULL PRIMARY KEY COMMENT '课程编号',

cname VARCHAR(20) NOT NULL COMMENT '课程名字',

tno INT NOT NULL COMMENT '教师编号'

)ENGINE=INNODB CHARSET utf8;

course(cno,cname,tno) 课程表

cno: 课程编号;

cname:课程名字;

tno: 教师编号 ;

创建成绩表:

CREATE TABLE sc (

sno INT NOT NULL COMMENT '学号',

cno INT NOT NULL COMMENT '课程编号',

score INT NOT NULL DEFAULT 0 COMMENT '成绩'

)ENGINE=INNODB CHARSET=utf8;

sc(sno,cno,score) 成绩表

sno: 学号;

cno: 课程编号;

score:成绩 ;

创建教师表:

CREATE TABLE teacher(

tno INT NOT NULL PRIMARY KEY COMMENT '教师编号',

tname VARCHAR(20) NOT NULL COMMENT '教师名字'

)ENGINE=INNODB CHARSET utf8;

teacher(tno,tname) 教师表

tno: 教师编号;

tname:教师名字;

学生表中录入N为学生:

INSERT INTO student(sno,sname,sage,ssex) VALUES(1,'zhang3',18,'m');

INSERT INTO student(sno,sname,sage,ssex) VALUES (2,'zhang4',18,'m'),(3,'li4',18,'m'),(4,'wang5',19,'f');

INSERT INTO student VALUES(5,'zh4',18,'m'),(6,'zhao4',18,'m'),(7,'ma6',19,'f');

INSERT INTO student(sname,sage,ssex) VALUES('olda',20,'m'),('oldgirl',20,'f'),('oldp',25,'m');

教师表中录入三位老师:

INSERT INTO teacher(tno,tname) VALUES(101,'olda'),(102,'hesw'),(103,'oldguo');

课程表中录入三门课程:

INSERT INTO course(cno,cname,tno) VALUES(1001,'linux',101),(1002,'python',102),(1003,'mysql',103);

成绩表中录入学生成绩:

INSERT INTO sc(sno,cno,score)

VALUES

(1,1001,80),

(1,1002,59),

(2,1002,90),

(2,1003,100),

(3,1001,99),

(3,1003,40),

(4,1001,79),

(4,1002,61),

(4,1003,99),

(5,1003,40),

(6,1001,89),

(6,1003,77),

(7,1001,67),

(7,1003,82),

(8,1001,70),

(9,1003,80),

(10,1003,96);

SQL练习题:

group_concat()函数是以一行显示所有查询到的值

统计zhang3,学习了几门课:

select st.sname,count(sc.sno) from student as st join sc on st.sno=sc.sno where st.sname='zhang3';

查询zhang3,学习的课程名称有哪些:

select st.sname,co.cname from student as st join sc on st.sno=sc.sno join course as co on sc.cno=co.cno where st.sname='zhang3';

select st.sname,group_concat(co.cname) from student as st join sc on st.sno=sc.sno join course as co on sc.cno=co.cno where st.sname='zhang3';

查询olda老师教的学生名:

select te.tname,group_concat(st.sname) from teacher as te join course as co on te.tno=co.tno join sc on co.cno=sc.cno join student as st on st.sno=sc.sno where te.tname='olda';

查询olda所教课程的平均分数:

select te.tname,avg(sc.score) from teacher as te join course as co on te.tno=co.tno join sc on co.cno=sc.cno where te.tname='olda';

查询olda所教的80分以上的学生姓名:

select te.tname,st.sname,sc.score from teacher as te join course as co on te.tno=co.tno join sc on co.cno=sc.cno join student as st on sc.sno=st.sno where te.tname='olda' and sc.score>=80;

mysql创课程表tno是什么_MySQL DQL多表链接查询基本使用相关推荐

  1. MySQL 后from多个表_MYSQL回顾(多表查询相关)

    前言 简单的数据我们可以直接从一个表中获取,但在真实的项目中查询符合条件的数据通常需要牵扯到多张表,这就不得不使用多表查询.多表查询分为多表连接查询.符合条件链接查询.子查询.多表连接查询包括内连接. ...

  2. mysql索引过多为什么会慢_mysql – 为什么索引使这个查询更慢?

    摘要 问题是由于b-trees的性质,字段不适合索引. 说明 假设你有一张表有500,000个掷硬币的结果,其中抛掷是1(头)或0(尾): CREATE TABLE toss ( id int NOT ...

  3. mysql怎么查看是否存在死锁_mysql怎么查看有没有死锁

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  4. 使用navicat for mysql 创建外键foreign keys时,总会自动创建索引indexs

    使用navicat for mysql 创建外键foreign keys时,总会自动创建索引indexs.如果删除这个索引就会提示错误error 1553:cann't drop index-:nee ...

  5. mysql 分片 数据迁移_简述MySQL分片中快速数据迁移_MySQL

    推荐阅读:MySQL 数据库跨操作系统的最快迁移方法 mysql 备份与迁移 数据同步方法 操作实践背景: travelrecord表定义为10个分片,尝试将10个分片中的2个分片转移到第二台MySQ ...

  6. mysql用户权限与安全实例_mysql用户权限管理实例分析

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  7. mysql 登录默认实例_【MySQL案例】mysql本机登录-S失灵_mysql

    [mysql案例]mysql本机登录-S失效 1.1.1. mysql本机登录mysql时,-S参数失效 [环境描述] mysql5.5.14 [问题描述] 配置了多实例 实例1 实例2 datadi ...

  8. mysql可以更改安装路径吗_Mysql怎样更改安装路径?

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  9. mysql当前时间加半小时_mysql怎么在当前时间增加一小时

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  10. mysql基础1 -------- DDL、DML、DQL、DCL

    目录 前言 SQL概述 SQL的分类 DDL 数据库操作 表操作 查询创建表 数据类型 表操作 案例 修改表结构操作 删除表操作 DML 添加数据 修改数据 删除数据 DQL 基本语法 基本查询 条件 ...

最新文章

  1. RRC Connection Reconfiguration
  2. srs audio sandbox 注册机_Windows10自带 Sandbox软件测试必备技巧
  3. 几十年的领域专家告诉你,机器翻译进化到哪一步了?
  4. 干货丨一文读懂深度学习与机器学习的差异
  5. System.Security.Cryptography.CryptographicException: 用户的配置文件是临时配置文件 解决方案...
  6. VS项目中引入dll的方法
  7. SQL Server存储过程的基本概念以及语法【转】
  8. WinAPI: midiOutCachePatches - 预装音色
  9. 7.1 定义关键指标KPI
  10. mysql shell 所有表_删除mysql数据库中所有表的shell脚本
  11. jQuery DOM/属性/CSS操作
  12. c语言编程题报文解析,C语言解析pcap文件得到HTTP信息实例
  13. osmand中矢量数据地图绘制
  14. SYNOPSYS DDR VIP use note
  15. 解决虚拟机桥接模式ping不通主机
  16. 腾讯面试Android开发
  17. Oracle数据库递归查询
  18. android 扫码枪 字符数少掉,BarTender条码字符数莫名变少是怎么回事?
  19. c 语言从指针得到对象,c – 获取指向由智能指针指向的对象的指针 – Ivalue错误...
  20. EPLAN 接线端子

热门文章

  1. Pall(颇尔)超滤管 超滤系统使用报告
  2. 笔记10:Carla官方文档阅读 -- 2nd【Actors and Blueprints】/【(3)Types of Actors】/【5)Walkers】
  3. 【MySQL通关之旅】从山脚到山顶(傲视群雄版)
  4. 强化学习算法中SARSA
  5. 2021写了这么些文章...
  6. No HttpMessageConverter for (后面是自己定义的类)
  7. 液基薄层细胞 宫颈细胞学计算机诊断,液基薄层细胞制片技术与宫颈细胞学诊断.pdf...
  8. oracle exp 00108,ORACLE数据库备份异常 LRM-00108: invalid positional parameter value 'as'
  9. iOS开发根本布景介绍
  10. 在springmvc的Filter过滤器中更改请求参数,servletRequest.getParameter或者servletRequest.getParameterMap的参数教程