MySql实验3——高级查询语句

1. IN嵌套查询

查询订购了“牡丹汽车股份有限公司”制造“放像机”的顾客。

Select * from customer where c_custkey in 
(select o_custkey from orders,supplier,part,lineitem,partsupp 
where s_name=”牡丹汽车股份有限公司” 
and p_name=”放像机” 
and p_partkey=l_partkey 
and l_suppkey=s_suppkey 
and o_orderkey=l_orderkey);

 2.单层EXISTS嵌套查询

查询没有购买过“牡丹汽车股份有限公司”制造“放像机”的顾客

Select * from c_ where not exists
(select * from orders,supplier,part ,lineitem ,partsupp 
where s_name=”牡丹汽车股份有限公司” 
and p_name=”放像机” 
and p_partkey=l_partkey 
and l_suppkey=s_suppkey 
and o_orderkey=l_orderkey 
and c_custkey=o.custkey);

3. 双层EXISTS嵌套查询

查询至少购买过顾客“王雅奇”购买过的全部零件的顾客姓名(不存在王雅奇购买过而C客户没有买过的零件)(注意别名的前缀)

Select distinct c_name from customer c 
where not exists
 (select * from customer c1,lineitem l,orders o 
where c1.c_name=”王雅奇” 
and c1.c_custkey=o.o_custkey 
and o.o_orderkey=l.l_orderkey 
and not exists 
(select * from lineitem l1,orders o1 
where c.c_custkey=o1.o_custkey 
and l1.l_partkey=l.l_partkey 
and l1.l_orderkey=o1.o_orderkey));

4. 集合查询

查询顾客“曹康”和“阿迪”都订购过的全部零件的信息

Select * from part ,customer,orders,lineitem ,partsupp ,supplier 
where c_name=”曹康” 
and c_custkey=o.custkey 
and l_partkey=ps_partkey 
and o_orderkey=l_orderkey 
and l_suppkey=s_suppkey 
and ps_partkey=p_partkey 
INTERSECT 
(Select * from part ,customer,orders,lineitem ,partsupp ,supplier 
where c_name=”阿迪” 
and c_custkey=o.custkey 
and l_partkey=ps_partkey 
and o_orderkey=l_orderkey 
and l_suppkey=s_suppkey 
and ps_partkey=p_partkey);

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、实验目的 1. 了解使用SELECT语句进行汇总查询的方法; 2. 熟悉使用COUNT()、SUM()、AVG()、MAX()、MIN()等函数进行汇总查询的方法; 3. 掌握使用GROUP BY子句进行分组汇总查询的方法; 4. 理解使用HAVING子句进行分组汇总查询的方法。 二、实验环境 1. MySQL 5.7及以上版本; 2. Navicat for MySQL。 三、实验内容 1. COUNT()函数 COUNT()函数用于统计某一列或行的记录数。SELECT COUNT(*) FROM table_name;可以统计表中的总记录数,而SELECT COUNT(column_name) FROM table_name;则可以统计某一列的记录数。 示例: 统计学生表中的总记录数: SELECT COUNT(*) FROM student; 统计学生表中“性别”列为“男”的记录数: SELECT COUNT(*) FROM student WHERE gender='男'; 2. SUM()函数 SUM()函数用于对某一列的值进行求和。 示例: 统计学生表中“成绩”列的总和: SELECT SUM(score) FROM student; 3. AVG()函数 AVG()函数用于对某一列的值进行平均值计算。 示例: 统计学生表中“成绩”列的平均值: SELECT AVG(score) FROM student; 4. MAX()函数 MAX()函数用于求某一列的最大值。 示例: 统计学生表中“成绩”列的最大值: SELECT MAX(score) FROM student; 5. MIN()函数 MIN()函数用于求某一列的最小值。 示例: 统计学生表中“成绩”列的最小值: SELECT MIN(score) FROM student; 6. GROUP BY子句 GROUP BY子句用于对查询结果进行分组汇总。它可以对某一列或多列进行分组,然后对每一组进行汇总计算。 示例: 统计学生表中“性别”列的男女人数: SELECT gender, COUNT(*) FROM student GROUP BY gender; 7. HAVING子句 HAVING子句用于在GROUP BY子句的基础上进行筛选,通常与聚合函数一起使用。 示例: 统计学生表中每个“班级”中成绩大于80分的学生数: SELECT class, COUNT(*) FROM student WHERE score>80 GROUP BY class HAVING COUNT(*)>1; 以上为本次实验的全部内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值