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

2023-11-10 12:10

本文主要是介绍mysql创课程表tno是什么_MySQL DQL多表链接查询基本使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

多表查询思路:

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;

f3e4b99d14c01af9013c819c547764ac.png

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

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

2ed3735f57d2b60ecdc16df4fee13b73.png

#查询城市为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';

5bdcfdf348d8f4832226c359f53ecd66.png

案例:

创建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';

01d74c90f1c6d78c1ed8b040fc12da0e.png

查询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';

16a2adcc1449086d79a71ca6f415638a.png

查询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';

f3219abccd4d3cebd3bd6778899da2f7.png

查询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';

c9895681a1788f6908e1380f7282e1a6.png

查询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;

874b3d0a8fbaaea44ceddc468fb4a675.png

这篇关于mysql创课程表tno是什么_MySQL DQL多表链接查询基本使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/382578

相关文章

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t