举例介绍mysql多表查询方法
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本文主要给大家举例介绍mysql多表查询方法,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql多表查询方法吧。创建示例数据表:#学生表c
千家信息网最后更新 2025年01月24日举例介绍mysql多表查询方法
本文主要给大家举例介绍mysql多表查询方法,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql多表查询方法吧。
创建示例数据表:
#学生表create table stu(sid int primary key,sname varchar(10) not null);#成绩表create table score (sid int, score int , cid int);#科目表create table subjects (cid int primary key,cname varchar(10));alter table score add constraint fk_score_sid foreign key(sid) references stu(sid);alter table score add constraint fk_score_cid foreign key(cid) references subjects(cid);
查询 学生成绩 和科目名称
select * from stu,score where stu.sid = score.sid;
查询学生的成绩 要求70以上的
select s.sid, s.sname, c.score from stu s,score c where s.sid = c.sid and c.score>70;
查询所有学生的成绩
select * from stu s inner join score c on s.sid = c.sid; 内连接相当于把两张表链接成一张表查询 使用inner join 关键词 条件 使用on 并且Inner 可以省略 外链接查询 左外连接查询 以左边的表为主 左边表中的数据都会查询出来 有可能会产生无用的数据 select s.sid, s.sname, c.score from score c left join stu s on s.sid = c.sid; 右外链接查询 select s.sid, s.sname, c.score from score c right join stu s on s.sid = c.sid; 自然链接 :会自动匹配表中相同的字段 没有外键也能自然查询 select * from stu natural join score;
查询所有学生的分数和考试科目
select s.sid, s.sname, c.score,u.cname from stu s left join score c on s.sid = c.sid join subjects u on c.cid = u.cid; 三张表查询时2条件 n张表n-1条件
创建示例数据表:
#员工表CREATE TABLE emp( empno INT, ename VARCHAR(50), job VARCHAR(50), mgr INT, hiredate DATE, sal DECIMAL(7,2), comm decimal(7,2), deptno INT);INSERT INTO emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);INSERT INTO emp values(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);INSERT INTO emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);INSERT INTO emp values(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);INSERT INTO emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);INSERT INTO emp values(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);INSERT INTO emp values(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);INSERT INTO emp values(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);INSERT INTO emp values(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);INSERT INTO emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);INSERT INTO emp values(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);INSERT INTO emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);INSERT INTO emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);INSERT INTO emp values(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);-- 部门表:deptCREATE TABLE dept( deptno INT, dname varchar(14), loc varchar(13));INSERT INTO dept values(10, 'ACCOUNTING', 'NEW YORK');INSERT INTO dept values(20, 'RESEARCH', 'DALLAS');INSERT INTO dept values(30, 'SALES', 'CHICAGO');INSERT INTO dept values(40, 'OPERATIONS', 'BOSTON');
查询与 SCOTT 同一个部门的员工
select ename from emp where deptno = (select deptno from emp where ename='SCOTT');
工资高于30号部门所有人的员工信息
select * from emp where sal>(select max(sal) from emp where deptno = 30);
查询工作和工资与MARTIN 完全相同的员工信息
select * from emp where (job,sal) in (select job,sal from emp where ename='MARTIN');
有两个以上有直接下属的员工信息
select * from emp where empno in (select mgr from emp group by mgr having count(mgr)>=2);
查询员工编号为7788的员工名称 员工工资 部门名称 部门地址
select e.ename,e.sal,d.dname,d.loc from emp e ,dept d where e.deptno = d.deptno and empno = 7788;
求7369员工编号、姓名、经理编号和经理姓名
select ename,empno from emp where empno in (7369, (select mgr from emp where empno = 7369)); select e1.ename,e1.empno,e2.ename,e2.empno from emp e1,emp e2 where e1.mgr = e2.empno and e1.empno = 7369
求各个部门薪水最高的员工所有信息
select * from emp where (deptno ,sal) in (select deptno,max(sal) from emp group by deptno); 查询过程中出现问题 查询时没有把部门的条件带进去 只是按最高工资处理的 可以把查询结果返回的结果集当做一个新表来使用 select * from emp e1 ,(select deptno,max(sal) msal from emp group by deptno) e2 where e1.sal = e2.msal and e1.deptno = e2.deptno;
看完以上关于mysql多表查询方法,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。
查询
员工
部门
信息
学生
工资
成绩
数据
条件
方法
名称
科目
链接
最高
相同
姓名
数据表
示例
笔者
经理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北京gpu服务器厂商云主机
关于网络安全的语言怎么写
网络安全等级保护定级
我的世界服务器tp指令坐标
数据库中的字段能不能更换位置
中国联通网络技术研究院人力
教育局网络安全知识网上答题
服务器禁用端口
永宁县软件开发公司排名
不同国家对网络安全的措施
SQL数据库表达式
服务器代码编写
网络安全市区两级齐抓共管
平台兼职软件开发
金蝶旗舰版服务器显示不出来中文
软件开发与应用杂志
搜索怎样和数据库连接
河南专业软件开发设施应用
数据库建模实体联系
ios怎么信任软件开发者
网络安全it技术支持考试题
工具连接hive数据库连接不上
数据库oracle清洗磁带
滨州市网络安全平台
服务器禁用端口
标准网络安全服务保障
深圳巨全网络技术有限公司
网络技术报告模板
慈溪一站式软件开发设计
login数据库实现