mysql数据查询——复杂查询
《实验五 数据查询——复杂查询》实验说明
一、 适用课程:《数据库原理与应用》 实验学时:3
二、实验目的:
(1) 掌握SELECT语句的语法格式;
(2) 熟练运用SELECT语句进行多表连接查询;
(3) 熟练运用SELECT语句进行各种复杂类型的查询。
三、实验内容:
完成各类多表连接查询、嵌套查询和集合查询等。
四、实验要求:
(1) 熟练掌握连接查询:
交叉连接查询
内连接查询:掌握内连接所对应的SQL语句的显示和隐式结构形式,包括:等值与非等值连接查询、自然连接查询、表的自身连接查询
外连接查询
(2) 熟练掌握嵌套查询
通过实验验证在子查询的SELECT语句中不能使用ORDER BY子句;
体会相关与不相关子查询的差异;
掌握几类谓词的用法:IN,NOT IN、带有比较运算符的子查询、带有ANY(SOME)或ALL谓词的查询、带有EXISTS谓词的查询;
(3) 熟练掌握集合查询。
五、实验环境和仪器(软件、硬件):
(1) 硬件环境:普通联网的PC机;
(2) 操作系统:Windows 2003 server/Win7;
(3) 数据库管理系统:MSySQL。
六、实验步骤(程序,流程等):(包含实验记录,提供的数据、图表等资料内容)
注意:使用实验二建立的数据库完成以下查询,保存上机过程中的所有SQL命令,实验结束请备份数据库。
文件名命名:姓名拼音+学号后三位_实验号,如xiebing131_5。
(一) 针对学生-课程数据库查询
1、多表连接查询与嵌套查询
查询每一门课的间接先修课(即先修课的先修课)。
mysql> select C1.Cno,C2.Cno from tb_course C1,tb_course C2 where C1.Cpno=C2.Cno;
±----±----+
| Cno | Cno |
±----±----+
| 2 | 2 |
| 3 | 4 |
| 6 | 5 |
| 1 | 6 |
| 4 | 6 |
| 5 | 6 |
±----±----+
6 rows in set (0.04 sec)查询每个学生选修课程的情况。
mysql> select tb_student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade from tb_student,sc where tb_student.Sno=sc.Sno;
±----------±------±-----±-----±------±----±------+
| Sno | Sname | Ssex | Sage | Sdept | Cno | Grade |
±----------±------±-----±-----±------±----±------+
| 201215121 | 李勇 | 男 | 20 | CS | 2 | 91 |
| 201215121 | 李勇 | 男 | 20 | CS | 3 | 88 |
| 201215121 | 李勇 | 男 | 20 | CS | 4 | 95 |
| 201215121 | 李勇 | 男 | 20 | CS | 5 | 97 |
| 201215121 | 李勇 | 男 | 20 | CS | 6 | 92 |
| 201215122 | 刘晨 | 女 | 19 | CS | 2 | NULL |
| 201215122 | 刘晨 | 女 | 19 | CS | 3 | 98 |
±----------±------±-----±-----±------±----±------+
7 rows in set (0.00 sec)查询每个学生及其选修课程的情况包括没有选修课程的学生(用外连接)。
mysql> select tb_student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade from tb_student left outer join sc on (tb_student.Sno=sc.Sno);
±------------±-------±-----±-----±------±-----±------+
| Sno | Sname | Ssex | Sage | Sdept | Cno | Grade |
±------------±-------±-----±-----±------±-----±------+
| 201215121 | 李勇 | 男 | 20 | CS | 2 | 91 |
| 201215121 | 李勇 | 男 | 20 | CS | 3 | 88 |
| 201215121 | 李勇 | 男 | 20 | CS | 4 | 95 |
| 201215121 | 李勇 | 男 | 20 | CS | 5 | 97 |
| 201215121 | 李勇 | 男 | 20 | CS | 6 | 92 |
| 201215122 | 刘晨 | 女 | 19 | CS | 2 | NULL |
| 201215122 | 刘晨 | 女 | 19 | CS | 3 | 98 |
| 201215123 | 王敏 | 女 | 18 | MA | NULL | NULL |
| 201215129 | 张立 | 男 | 19 | IS | NULL | NULL |
| 32018070132 | 刘嘉芊 | 女 | 20 | CS | NULL | NULL |
±------------±-------±-----±-----±------±-----±------+
10 rows in set (0.04 sec)查询选修2号课程且成绩在90分以上的所有学生的学号、姓名。
mysql> select tb_student.Sno,Sname from tb_student,sc where tb_student.Sno=sc.Sno and Cno=‘2’ and Grade>90;
±----------±------+
| Sno | Sname |
±----------±------+
| 201215121 | 李勇 |
±----------±------+
1 row in set (0.01 sec)查询学生20060711选修课程的总学分。
mysql> select sum(Ccredit) from sc,tb_course where sc.Sno=‘201215121’ and sc.Cno=tb_course.Cno;
±-------------+
| sum(Ccredit) |
±-------------+
| 17 |
±-------------+
1 row in set (0.01 sec)查询每个学生选修课程的总学分。
mysql> select Sname,Sum(Ccredit) from tb_student left join sc on sc.Sno=tb_student.Sno left join tb_course on tb_course.Cno=sc.Cno group by Sname;
±-------±-------------+
| Sname | Sum(Ccredit) |
±-------±-------------+
| 李勇 | 17 |
| 刘晨 | 6 |
| 刘嘉芊 | NULL |
| 王敏 | NULL |
| 张立 | NULL |
±-------±-------------+
5 rows in set (0.01 sec)查询每个学生的学号、姓名、选修的课程名及成绩。
mysql> select tb_student.Sno,tb_student.Sname,Cname,Grade from tb_student left join sc on sc.Sno=tb_student.Sno left join tb_course on tb_course.Cno=sc.Cno;
±------------±-------±---------±------+
| Sno | Sname | Cname | Grade |
±------------±-------±---------±------+
| 201215121 | 李勇 | 数学 | 91 |
| 201215121 | 李勇 | 信息系统 | 88 |
| 201215121 | 李勇 | 操作系统 | 95 |
| 201215121 | 李勇 | 数据结构 | 97 |
| 201215121 | 李勇 | 数据库 | 92 |
| 201215122 | 刘晨 | 数学 | NULL |
| 201215122 | 刘晨 | 信息系统 | 98 |
| 201215123 | 王敏 | NULL | NULL |
| 201215129 | 张立 | NULL | NULL |
| 32018070132 | 刘嘉芊 | NULL | NULL |
±------------±-------±---------±------+
10 rows in set (0.00 sec)查询与“刘晨”在同一个系学习的学生(分别用嵌套查询和连接查询)。
/嵌套查询/
mysql> select Sname from tb_student where Sdept in (select Sdept from tb_student where Sname=‘刘晨’) and Sname<>‘刘晨’;
±-------+
| Sname |
±-------+
| 李勇 |
| 刘嘉芊 |
±-------+
2 rows in set (0.04 sec)
/连接查询/
mysql> select S1.Sname from tb_student S1,tb_student S2 where S1.Sdept=S2.Sdept and S2.Sname=‘刘晨’ and S1.Sname<>‘刘晨’;
±-------+
| Sname |
±-------+
| 李勇 |
| 刘嘉芊 |
±-------+
2 rows in set (0.00 sec)
查询选修了课程名为“信息系统”的学生学号和姓名。
mysql> select Sno,Sname from tb_student where Sno in(select Sno from sc where Cno in(select Cno from tb_course where Cname=‘信息系统’));
±----------±------+
| Sno | Sname |
±----------±------+
| 201215121 | 李勇 |
| 201215122 | 刘晨 |
±----------±------+
2 rows in set (0.01 sec)查询其他系中比信息系任意一个(其中某一个)学生年龄小的学生姓名和年龄。
mysql> select Sname,Sage from tb_student where Sage<any (select Sage from tb_student where Sdept=‘CS’) and Sdept<>‘CS’;
±------±-----+
| Sname | Sage |
±------±-----+
| 王敏 | 18 |
| 张立 | 19 |
±------±-----+
2 rows in set (0.00 sec)查询其他系中比信息系所有学生年龄都小的学生姓名及年龄。分别用ALL谓词和集函数。
/使用ALL谓词/
mysql> select Sname,Sage from tb_student where Sage<all (select Sage from tb_student where Sdept=‘CS’) and Sdept<>‘CS’;
±------±-----+
| Sname | Sage |
±------±-----+
| 王敏 | 18 |
±------±-----+
1 row in set (0.00 sec)
/使用聚集函数/
mysql> select Sname,Sage from tb_student where Sage<(select min(Sage) from tb_student where Sdept=‘CS’) and Sdept<>‘CS’;
±------±-----+
| Sname | Sage |
±------±-----+
| 王敏 | 18 |
±------±-----+
1 row in set (0.01 sec)
查询所有选修了1号课程的学生姓名。(分别用嵌套查询和连接查询)
mysql> select Sname from tb_student where Sno in(select Sno from sc where Cno=‘1’);
±------+
| Sname |
±------+
| 王敏 |
±------+
1 row in set (0.00 sec)查询没有选修1号课程的学生姓名。
mysql> select Sname from tb_student where Sno not in(select Sno from sc where Cno=‘1’);
±-------+
| Sname |
±-------+
| 李勇 |
| 刘晨 |
| 张立 |
| 刘嘉芊 |
±-------+
4 rows in set (0.00 sec)查询选修了全部课程的学生姓名。
mysql> select Sname from tb_student where not exists(select * from tb_course where not exists (select * from sc where Sno=tb_student.Sno and Cno=tb_course.Cno));
Empty set (0.00 sec)查询至少选修了学生95002选修的全部课程的学生号码。
mysql> select distinct Sno from sc scx where not exists (select * from sc scy where scy.Sno='201215122’and not exists (select * from sc scz where scz.Sno=scx.Sno and scz.Cno=scy.Cno));
±----------+
| Sno |
±----------+
| 201215121 |
| 201215122 |
±----------+
2 rows in set (0.01 sec)查询选修了课程1或者选修了课程2的学生姓名。
ysql> select Sname from tb_student where Sno in (select Sno from sc where Cno=‘1’ union select Sno from sc where Cno=‘2’);
±------+
| Sname |
±------+
| 李勇 |
| 刘晨 |
| 王敏 |
±------+
3 rows in set (0.00 sec)查询既选修了课程1又选修了课程2的学生姓名。
mysql> select Sname from tb_student where Sno in(select Sno from sc where Cno=‘1’ and sc.Sno in (select Sno from sc where Cno=‘2’));
±------+
| Sname |
±------+
| 王敏 |
±------+
1 row in set (0.00 sec)查询既选修了课程1不选修课程2的学生姓名。
mysql> select Sname from tb_student where Sno in(select Sno from sc where Cno=‘1’ and Sno not in (select Sno from sc where Cno=‘2’));
Empty set (0.00 sec)
2、综合查询
查询与课程名“数据库”先行课相同的课程号和课程名。
mysql> select Cno,Cname from tb_course where Cpno in(select Cpno from tb_course where Cname=‘数据库’);
±----±---------+
| Cno | Cname |
±----±---------+
| 5 | 数据结构 |
| 6 | 数据库 |
±----±---------+
2 rows in set (0.01 sec)查询成绩在85分以上的学生选课情况,要求显示学生姓名、课程名及成绩。
mysql> select Sname,Cname,Grade from tb_student,tb_course,sc where Grade>85 and sc.sno=tb_student.sno and sc.cno=tb_course.cno;
±------±---------±------+
| Sname | Cname | Grade |
±------±---------±------+
| 李勇 | 操作系统 | 95 |
| 李勇 | 数据结构 | 97 |
| 李勇 | 数据库 | 92 |
| 李勇 | 数学 | 91 |
| 李勇 | 信息系统 | 88 |
| 刘晨 | 信息系统 | 98 |
±------±---------±------+
6 rows in set (0.00 sec)查询总成绩大于500、总学分大于30的学生学号、总成绩和总学分。
mysql> select Sno,sum(Grade),sum(Ccredit) from sc,tb_course where sc.cno=tb_course.cno group by Sno having sum(Grade)>500 and sum(Ccredit)>30;
Empty set (0.00 sec)
/查询总成绩400,总学分大于15的/
mysql> select Sno,sum(Grade),sum(Ccredit) from sc,tb_course where sc.cno=tb_course.cno group by Sno having sum(Grade)>400 and sum(Ccredit)>15;
±----------±-----------±-------------+
| Sno | sum(Grade) | sum(Ccredit) |
±----------±-----------±-------------+
| 201215121 | 463 | 17 |
±----------±-----------±-------------+
1 row in set (0.00 sec)查询每门课程及其被选修的情况。
mysql> select Sno,sc.Cno,Cname,Grade from tb_course,sc where sc.Cno=tb_course.Cno;
±----------±----±---------±------+
| Sno | Cno | Cname | Grade |
±----------±----±---------±------+
| 201215123 | 1 | DB_ios | 85 |
| 201215121 | 4 | 操作系统 | 95 |
| 201215121 | 5 | 数据结构 | 97 |
| 201215121 | 6 | 数据库 | 92 |
| 201215121 | 2 | 数学 | 91 |
| 201215122 | 2 | 数学 | NULL |
| 201215123 | 2 | 数学 | 80 |
| 201215121 | 3 | 信息系统 | 88 |
| 201215122 | 3 | 信息系统 | 98 |
±----------±----±---------±------+
9 rows in set (0.00 sec)查询所有学生都选修的课程号和课程名。
mysql> select Cno,Cname from tb_course where Cno in(select distinct Cno from sc group by Cno having count()=(select count() from tb_student));
Empty set (0.03 sec)
/向sc表中插入数据之后/
mysql> select Cno,Cname from tb_course where Cno in(select distinct Cno from sc group by Cno having count()=(select count() from tb_student));
±----±------+
| Cno | Cname |
±----±------+
| 2 | 数学 |
±----±------+
1 row in set (0.00 sec)查询信息系所有学生都选修的课程号和课程名。
/试出来的….但是具体逻辑是什么意思其实我不清楚/
mysql> select Cno,Cname from tb_course where Cno in(select distinct Cno from sc sc1 where sc1.Cno in(select distinct Cno from sc sc2 where sc2.Cno=Cno and sc2.Sno not in(select Sno from tb_student s1 where Sdept=‘CS’) and sc1.Sno in (select Sno from tb_student s2 where Sdept=‘CS’)));
±----±------+
| Cno | Cname |
±----±------+
| 2 | 数学 |
±----±------+
1 row in set (0.00 sec)查询没有选修“数据库”这门课程的学生学号和姓名。
mysql> select Sno,Sname from tb_student where Sno not in(select Sno from sc where Cno in (select Cno from tb_course where Cname=‘数据库’));
±----------±-------+
| Sno | Sname |
±----------±-------+
| 201215122 | 刘晨 |
| 201215123 | 王敏 |
| 201215129 | 张立 |
| 201807132 | 刘嘉芊 |
±----------±-------+
4 rows in set (0.01 sec)查询至少选修了“刘晨”所选全部课程的学生学号和姓名。
mysql> select Sno,Sname from tb_student where Sno in(select Sno from sc scx where not exists(select * from sc scy where scy.Sno in(select Sno from tb_student where Sname=‘刘晨’) and not exists(select * from sc scz where scz.Sno=scx.Sno and scz.Cno=scy.Cno)));
±----------±------+
| Sno | Sname |
±----------±------+
| 201215121 | 李勇 |
| 201215122 | 刘晨 |
±----------±------+
2 rows in set (0.00 sec)查询至少选修了数据库和操作系统的学生学号和姓名。
mysql> select Sno,Sname from tb_student where Sno in(select Sno from sc scx where not exists(select * from sc scy where Cno in(select Cno from tb_course where Cname='数据库’or Cname=‘操作系统’) and not exists(select * from sc scz where scz.Sno=scx.Sno and scz.Cno=scy.Cno)));
±----------±------+
| Sno | Sname |
±----------±------+
| 201215121 | 李勇 |
±----------±------+
1 row in set (0.00 sec)查询选修了数据库但没选修操作系统的学生学号和姓名。
/使用了视图/
mysql> create view v_classdb as select Sno,Sname from tb_student where Sno in(select Sno from sc where Cno in(select Cno from tb_course where Cname=‘数据库’));
Query OK, 0 rows affected (0.03 sec)
mysql> select Sno,Sname from v_classdb where Sno not in(select Sno from sc where Cno in(select Cno from tb_course where Cname=‘操作系统’));
±----------±-------+
| Sno | Sname |
±----------±-------+
| 201807132 | 刘嘉芊 |
±----------±-------+
1 row in set (0.02 sec)
(二)针对实验二建立的SPJ数据库查询
查询给工程J1供应红色零件的供应商号;
mysql> select Sno from tb_spj,tb_p where Jno=‘J1’ and tb_spj.Pno=tb_p.Pno and Color=‘RED’;
±----+
| Sno |
±----+
| S1 |
| S3 |
±----+
2 rows in set (0.00 sec)查询工程J1使用天津供应商供应的零件号;
mysql> select Pno from tb_spj,tb_s where tb_s.Sno=tb_spj.Sno and Jno=‘J1’ and CITY=‘天津’;
±----+
| Pno |
±----+
| P1 |
| P5 |
±----+
2 rows in set (0.01 sec)查询北京供应的且重量小于15的零件号和零件名;
mysql> select distinct tb_p.Pno,Pname from tb_p,tb_s,tb_spj where Weight<15 and CITY=‘北京’ and tb_spj.Sno=tb_s.sno and tb_spj.Pno=tb_p.Pno;
±----±-------+
| Pno | Pname |
±----±-------+
| P3 | 螺丝刀 |
| P1 | 螺母 |
±----±-------+
2 rows in set (0.01 sec)查询供应红色零件且状态大于20的供应商号和供应商名;
mysql> select distinct tb_s.Sno,Sname from tb_s,tb_spj,tb_p where Color=‘RED’ and STATUS>20 and tb_spj.Sno=tb_s.Sno and tb_spj.Pno=tb_p.Pno;
±-----±-------+
| Sno | Sname |
±-----±-------+
| S3 | 东方红 |
| S5 | 为民 |
±-----±-------+
2 rows in set (0.00 sec)查询给天津的工程供应齿轮零件的供应商号和供应商名;
mysql> select distinct s.Sno,Sname from tb_s s,tb_j j,tb_p p,tb_spj spj where j.CITY=‘天津’ and PNAME=‘齿轮’ and spj.Sno=s.sno and spj.pno=p.pno and spj.jno=j.jno;
±-----±-------+
| Sno | Sname |
±-----±-------+
| S4 | 丰泰盛 |
| S5 | 为民 |
±-----±-------+
2 rows in set (0.00 sec)查询由天津供应商供给天津工程的零件名;
mysql> select distinct Pname from tb_p p,tb_spj spj,tb_s s,tb_j j where s.CITY=‘天津’ and j.city=‘天津’ and spj.sno=s.sno and spj.jno=j.jno and p.pno=spj.pno;
±------+
| Pname |
±------+
| 螺母 |
| 齿轮 |
±------+
2 rows in set (0.00 sec)查询与供应商 S2 在同一城市的供应商号和供应商名;
mysql> select sno,sname from tb_s where city in(select city from tb_s where sno=‘S2’);
±-----±-------+
| sno | sname |
±-----±-------+
| S2 | 盛锡 |
| S3 | 东方红 |
±-----±-------+
2 rows in set (0.00 sec)查询与齿轮零件颜色相同的零件号和零件名;
mysql> select pno,pname from tb_p where color in(select color from tb_p where pname=‘齿轮’);
±----±-------+
| pno | pname |
±----±-------+
| P1 | 螺母 |
| P4 | 螺丝刀 |
| P6 | 齿轮 |
±----±-------+
3 rows in set (0.00 sec)查询不使用零件号为P2的工程号和工程名。
mysql> select Jno,Jname from tb_j where Jno not in(select Jno from tb_spj where Pno=‘P2’);
±----±---------+
| Jno | Jname |
±----±---------+
| J7 | 半导体厂 |
| J3 | 弹簧厂 |
| J5 | 机车厂 |
| J1 | 三建 |
| J6 | 无线电厂 |
±----±---------+
5 rows in set (0.01 sec)查询供应商S3没有供应的零件名。
mysql> select Pname from tb_p where pno not in(select Pno from tb_spj where Sno=‘S3’);
±-------+
| Pname |
±-------+
| 螺栓 |
| 螺丝刀 |
| 凸轮 |
| 齿轮 |
±-------+
4 rows in set (0.00 sec)查询不供应红色产品的厂家号和厂家名。
mysql> select Sno,Sname from tb_s where Sno not in(select Sno from tb_spj where pno in(select pno from tb_p where color=‘RED’));
±-----±------+
| Sno | Sname |
±-----±------+
| S2 | 盛锡 |
±-----±------+
1 row in set (0.00 sec)查询没有使用天津生产的零件的工程号码。
mysql> select Jno from tb_j where jno not in(select jno from tb_spj where sno in(select sno from tb_s where city=‘天津’));
±----+
| Jno |
±----+
| J6 |
| J7 |
| J5 |
±----+
3 rows in set (0.00 sec)查询未采用由London供应者提供颜色为Red零件的工程名。
/London 改为北京 进行查询/
mysql> select Jname from tb_j where Jno not in(select Jno from tb_spj,tb_s,tb_p where tb_spj.Sno=tb_s.Sno and tb_spj.Pno=tb_p.Pno and Color=‘Red’ and CITY=‘北京’);
±---------+
| Jname |
±---------+
| 半导体厂 |
| 弹簧厂 |
| 机车厂 |
| 无线电厂 |
| 一汽 |
| 造船厂 |
±---------+
6 rows in set (0.00 sec)查询使用了全部零件的工程名
mysql> select Jname from tb_j where not exists(select * from tb_p where not exists(select * from tb_spj where tb_spj.pno=tb_p.pno and tb_spj.jno=tb_j.jno));
Empty set (0.00 sec)查询供应了全部零件的供应商名。
mysql> select Sname from tb_s where not exists(select * from tb_p where not exists(select * from tb_spj where tb_spj.pno=tb_p.pno and tb_spj.sno=tb_s.sno));
Empty set (0.00 sec)查询所有London供应商都供应的零件名。
/伦敦改为北京进行查询/
mysql> select Pname from tb_p where not exists(select * from tb_s where city=‘北京’ and not exists(select * from tb_spj where tb_spj.sno=tb_s.sno and tb_spj.pno=tb_p.pno));
±-------+
| Pname |
±-------+
| 螺丝刀 |
±-------+
1 row in set (0.00 sec)查询London的所有工程都使用的零件名。
/伦敦改为北京进行查询/
mysql> select Pname from tb_p where not exists(select * from tb_j where city=‘北京’ and not exists(select * from tb_spj where tb_spj.jno=tb_j.jno and tb_spj.pno=tb_p.pno));
±-------+
| Pname |
±-------+
| 螺母 |
| 螺丝刀 |
| 凸轮 |
±-------+
3 rows in set (0.00 sec)查询至少使用供应商S1所供应的全部零件的工程名。
mysql> select Jname from tb_j where not exists(select * from tb_p where not exists(select * from tb_s where tb_s.sno=‘S1’ and not exists(select * from tb_spj where tb_spj.sno=tb_s.sno and tb_spj.pno=tb_p.pno and tb_spj.jno=tb_j.jno)));
±---------+
| Jname |
±---------+
| 半导体厂 |
| 机车厂 |
| 无线电厂 |
±---------+
3 rows in set (0.00 sec)查询至少供应了工程J3所使用的全部零件的供应商号和供应商名。
mysql> select Sno,Sname from tb_s s where not exists(select * from tb_spj spj1 where spj1.Jno=‘J3’ and not exists(select * from tb_spj spj2 where spj1.pno=spj2.pno and s.sno=spj2.sno));
Empty set (0.00 sec)查询(至少)供应零件号为P1或P2的供应商名。
mysql> select distinct Sname from tb_s,tb_spj where tb_spj.sno=tb_s.sno and (pno=‘P1’ or pno=‘P2’);
±-------+
| Sname |
±-------+
| 精益 |
| 东方红 |
| 为民 |
±-------+
3 rows in set (0.00 sec)查询(至少)供应零件号为P1、P2两种零件的供应商名。
mysql> select Sname from tb_s where sno in(select Sno from tb_spj spj1 where pno=‘P1’ and spj1.Sno in(select Sno from tb_spj spj2 where pno=‘P2’));
±------+
| Sname |
±------+
| 精益 |
±------+
1 row in set (0.01 sec)查询供应零件号为P2但不供应P3的供应商名。
mysql> select Sname from tb_s where sno in(select Sno from tb_spj spj1 where pno<>‘P1’ and spj1.Sno not in(select Sno from tb_spj spj2 where pno=‘P3’));
±-------+
| Sname |
±-------+
| 精益 |
| 丰泰盛 |
±-------+
2 rows in set (0.00 sec)查询供应螺母但不供应齿轮的供应商名。
mysql> select Sname from tb_s where Sno in(select Sno from tb_spj spj1 where Pno in(select Pno from tb_p where Pname=‘螺母’) and spj1.Sno not in(select Sno from tb_spj spj2 where spj2.Pno in (select Pno from tb_p where Pname=‘齿轮’)));
±-------+
| Sname |
±-------+
| 精益 |
| 东方红 |
±-------+
2 rows in set (0.00 sec)
七、实验报告的撰写要求:
(1) 提交命令文档和备份的数据库;
(2) 列出遇到的问题和解决办法;
(3) 列出没有解决的问题。
八、实验结果评析要求(用于综合性实验、模拟实训等):
mysql数据查询——复杂查询相关推荐
- MySQL数据通过SQL查询指定数据表的字段名及字段备注
MySQL数据通过SQL查询指定数据表的字段名及字段备注 SELECT COLUMN_NAME,COLUMN_COMMENT FROM INFORMATION_SCHEMA.Columns WHERE ...
- MySQL数据操作与查询笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 第1章 MySQL数据操作与查询笔记 • [第1章 MySQL数据库基础] 第2章 MySQL数据操作与查询笔记 • [第2章 表结构管 ...
- c mysql数据库函数库查询_Mysql数据库使用concat函数执行SQL注入查询
SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示出来. 例如:原本查询语句是 select userna ...
- MySQL数据库内连接查询inner join...on
1. 连接查询介绍 连接查询可以实现多个表的查询,当查询的字段数据来自不同的表就可以使用连接查询来完成. 连接查询可以分为: 内连接查询 左连接查询 右连接查询 自连接查询 2. 内连接查询 查询两个 ...
- 《MySQL数据操作与查询》- 维护学生信息、老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息
综合项目需求 一.系统整体功能 系统需支持以下功能: 维护学生信息.老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息 学生 Student(id,班级id,学号,姓名,性别,电话,地址,出 ...
- 《MySQL数据操作与查询》- 综合项目 - 航空售票系统
Mysql & SqlServer综合项目需求 1.系统整体功能 系统需支持以下功能: 维护客户信息.航班信息和票务信息 支持客户按多种条件组合查询航班信息和票务信息 支持客户根据票务信息订购 ...
- python 查询mysql数据导出excl_python查询mysql并生成excel表
需求说明 开发不愿意单独为某个项目做后台 并且运营那边需要合并多个表的数据 因此找上了我. 要求每周执行一次.月初也执行一次 要查询2个mysql数据库多个表并生成excel表 我的想法 找开发要sq ...
- mysql user表添加记录_《MySQL数据操作与查询》- 返校复习课练习题,创建数据库user_system,创建数据表user及user_ext...
一.其它(共18题,100分) 1.创建数据库user_system CREATE DATABASE user_system 2.在数据库user_system中创建数据表user及user_ext, ...
- MySQL数据操作与查询笔记 • 【第7章 连接查询】
全部章节 >>>> 本章目录 7.1 内连接查询 7.1.1 交叉连接(笛卡尔积) 7.1.2 内连接查询概要 7.1.3 内连接案例 7.1.4 自然连接 7.2 多表连 ...
- MySQL数据分组与查询
一 . 多表连接查询: 连接是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表之间获得数据 N个表相连时,至少需要N-1个连接条件 笛卡尔积: select emp.empno,emp ...
最新文章
- java html提取_2020年全新Java学习路线,含配套资料,更易上手 - 打不过就跑吧
- 前端存储 (2) - sessionStorage ,localStorage
- 在浏览器地址栏输入url的后的过程
- idea中ssm自动配置
- 防火墙放开oracle远程,oracleMTS模式下防火墙如何开通
- Python数据的精度
- 京东物流系统架构演进中的最佳实践
- 几大图片加载框架比较
- MySQL初始密码忘记了怎么办
- 小程序-实现列表- 搜索功能的实现(6)
- XRouter 一个轻量级的Android路由框架,基于ARouter上进行改良,优化Fragment的使用,可结合XPage使用
- 不带头结点的单链表的创建(头插法和尾插法)
- cmd下查询公网ip地址
- 编辑距离算法原理及其实现
- NOIP 2012 普及组 复赛 culture 文化之旅
- 将本地docker镜像推送到阿里云仓库
- linux 锐捷客户端 脚本,基于802.1x的锐捷linux客户端认证方法(最新)
- js visibility
- 高校俱乐部发福利啦,晚了就没了,速度~
- CSDN的C1考试,质数问题,一不小心就错失得分