1. 查询每门被选修的课程信息,输出课程号,课程名+
    查询每门被选修的课程信息,输出课程号,课程名,结果按课程号降序排列。

其中课程表course结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql


选修表sc结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql_02


select distinct sc.cno,cname

from course,sc

where course.cno=sc.cno

group by sc.cno

order by sc.cno desc;

详细解释:
(1)SELECT 子句中选取需要输出的字段,即课程号和课程名。
(2)FROM 子句中指定要查询的表为 课程信息表。
(3)WHERE 子句中使用子查询筛选出所有被选修的课程,即在 学生选课表 中存在的课程号。
(4)最后使用 ORDER BY 子句按照课程号降序排列结果。
2. 查询每门课程被选修的情况,输出课程号,课程名,被选修次数
查询每门课程被选修的情况,输出课程号,课程名,被选修次数,结果按选修次数降序课程号降序排列。

其中课程表course结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_数据库_03


选修表sc结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql查询每个科目及格的学生_04


select sc.cno,cname,count()
from sc,course
where sc.cno=course.cno
group by sc.cno
order by count(
) desc,sc.cno desc;

上述SQL查询语句从course表和sc表中获取所需的信息,并将它们用相应的关系连接起来。使用COUNT()函数对学生选课情况进行计数,并将结果按照选修次数降序、课程号降序排列。结果通过查询视图展现,该视图包括了每门课程的编号、名称、以及选修次数,数据库根据该视图输出检索到的课程被选修情况信息。

  1. 查询每门课程被选修的情况(包括从未被选修过的课程)
    查询每门课程被选修的情况(包括从未被选修过的课程),输出课程号,课程名,被选修次数,结果按选修次数升序课程号升序排列。

其中课程表course结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql_05


选修表sc结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql查询每个科目及格的学生_06


select course.cno,cname,count(sno)

from course left join sc

on sc.cno=course.cno

group by course.cno

order by count(sno) asc,course.cno asc;

这个查询从三个表中获取信息:course, student_course, 和 student。它们和它们的关联如下:

course: 存储有关课程的基本信息,包括每门课程的课程号和课程名。
student_course: 存储学生选修的课程信息,包括学生ID和课程ID。
student: 存储有关学生的基本信息,包括学生ID。

  1. 查询 2016 年没有下订单的客户
    查询 2016 年没有下订单的客户,输出客户编号和客户名称,结果按客户名称升序排列。

其中客户表customer结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_sql_07


订单表‘order’结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_表结构_08


select customer_id,customer_name from customer

where not exists(select * from order where

year(order_date)=2016 and customer_id = customer.customer_id)

group by customer_name

以上 mysql 查询语句可以用来筛选出在 2016 年没有下订单的客户,并将他们的编号和名称按照名称以升序排列输出。

首先使用左连接查询 customers 表和 orders 表,通过客户编号这一关键字段进行连接。同时我们还需要使用 year 函数来提取订单日期中的年份以此来筛选出 2016 年的订单。接着使用 where 操作符筛选出那些订单号为空的客户记录,也就是在 2016 年没有下订单的客户数据。最后通过 order by 子句按照客户名称以升序排列输出结果即可。

  1. 查询销售数量总数超过600的产品信息
    查询销售数量总数超过600的产品信息,输出产品号,产品名称。

其中客户表customer表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_sql_09


订单表order表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_sql_10


订单详情表order_detail表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_sql_11


产品表product表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_sql_12


select product.product_id,product.product_name

from product,order_detail

where product.product_id=order_detail.product_id

group by product.product_id

having sum(buy_number)>600;

说明:

使用 sum() 函数计算销售数量总数。
where 子句限制仅显示销售数量总数大于600的产品信息。
group by 子句按照产品编号和产品名称分组,以便同时显示这两个列。

  1. 查询一次订购了4,7,8号产品的订单号
    查询一次订购了4,7,8号产品的订单号。

其中客户表cutomer表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_表结构_13


订单表order表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql查询每个科目及格的学生_14


订单详情表order_detail表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_表结构_15


产品表product表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql查询每个科目及格的学生_16


select order.order_id

from order,order_detail

where order_detail.order_id = order.order_id and order_detail.product_id in(4,7,8)

group by order.order_id

having count(DISTINCT product_id)>=3;

这个查询假设你有一个表叫“orders”,其中包含一个“order_id”列和一个“product_id”列,以及每个订单行包含一个订单ID和一个产品ID。

在这个查询中,“IN”子句用于指定需要查找的产品ID。然后,使用GROUP BY子句按订单分组,并且HAVING子句指定只返回同时包含4、7和8三种产品的订单。如果订单包含所有三种产品,则DISTINCT计数和=3,并且满足条件的订单号将被返回。

  1. 查询一次订购了4,7,8号产品的客户名及电话
    查询一次订购了4,7,8号产品的客户名及电话。

其中客户表cutomer表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_表结构_13


订单表order表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql查询每个科目及格的学生_14


订单详情表order_detail表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_表结构_15


产品表product表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql查询每个科目及格的学生_16


SELECT customer_name,phone FROM customer

WHERE customer_id in (SELECT customer_id from order where not exists(select * from order_detail g1 WHERE product_id in(4,7,8)

AND NOT EXISTS(select * FROM order_detail

WHERE order_id=order.order_id and g1.product_id = product_id)));

解释如下:

首先,我们通过 INNER JOIN 将客户表(customers)连接到订单表(orders),这样我们可以访问客户的名称和电话以及订单中包含的产品 ID。
然后,我们使用 WHERE 子句来过滤只含有 4、7 和 8 号产品的订单。
接着,我们使用 GROUP BY 子句来将结果按顾客分组,并且统计每个顾客订购了多少种产品(COUNT(DISTINCT orders.product_id))。
最后,我们使用 HAVING 子句过滤出仅包含三种产品的顾客,并且选择他们的名称和电话。

  1. 统计查询订单金额超过该客户平均订单额(该客户订单金额平均值)的上海客户的订单情况
    统计查询订单金额超过该客户平均订单额(该客户订单金额平均值)的上海客户的订单情况,输出客户名、订单号、订单金额、该客户平均订单额(该客户订单金额平均值),结果按客户名升序订单号升序排列。

其中客户表cutomer表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_mysql_21


订单表order表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_表结构_22


select customer_name,order_id,total_money,avgsum

from customer,order,(SELECT customer_id,avg(total_money) as avgsum from order group by customer_id) as a1

where city=‘上海’ and customer.customer_id = order.customer_id and a1.customer_id = order.customer_id

group by order_id

having total_money>avgsum

order by customer_name,order_id;

详细解释:
(1)、SELECT 子句中选取需要输出的字段,其中 AVG(o.订单金额) 使用聚合函数计算该客户订单金额平均值。
(2)、FROM 子句中使用 INNER JOIN 进行多表联接,将 订单信息表 和 客户信息表 关联起来。
(3)、WHERE 子句中筛选出所在城市为 “上海” 的客户,并且订单金额大于该客户的平均订单额。此处使用了子查询,通过 SELECT AVG(订单金额) 计算客户的平均订单额。
(4)、GROUP BY 子句中按照客户ID和订单号进行分组,以便与 SELECT 子句中的字段一一对应。
(5)、ORDER BY 子句中按照要求的升序排列客户名和订单号。

  1. 查询一次订购了4,7,8号三种商品的订单信息
    查询一次订购了4,7,8号三种商品的订单信息,输出订单号、订单日期。

其中客户表cutomer表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_数据库_23


订单表order表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_表结构_24


订单详情表order_detail表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_表结构_25


产品表product表结构为

mysql查询每个科目及格的学生 mysql查询所有课程的信息_数据库_26


SELECT o.order_id, o.order_date

FROM order o

left JOIN order_detail od ON o.order_id = od.order_id

WHERE od.product_id IN (4, 7, 8)

GROUP BY o.order_id, o.order_date

HAVING COUNT(DISTINCT od.product_id) = 3;

该查询语句将会返回订购了编号为 4、7、8 的三种商品的订单列表,包括订单号和订单日期。其中,IN 子句用于指定需要筛选的商品编号列表,GROUP BY 子句将结果按照订单号和订单日期分组,HAVING 子句结合 COUNT 函数来定位符合条件的订单,即订单中包含了所有三种特定的商品编号。