数据库结构学习

本文通过六个SQL查询实例,展示了如何在学生课程数据表中筛选特定条件下的课程、学生信息,以及统计专业男女学生人数,涉及空值处理、子查询、通配符使用和排序等功能。
摘要由CSDN通过智能技术生成

以学生课程为例子,原题取自课本,教材等,自己的思路练习,简化后为对应知识点

S(sno,sname,ssex,sage,sdept)  学号,姓名,性别,年龄,专业

C(Cno,Cname,Cpno)  课程号,课程名,先行号

SC(sno,cno,grade)

1.查询有直接先行课的课程的课程号,课程名和先行课号

查询条件与空值有关:
Select Cno,Cname,Cpno

From C

Where Cpno is not null;

2.查询不在电子系和机械系学习的学生的学号和姓名

查询条件与确定集合有关:

Select Sno,Sname

From S

Where Sdept not in ('电子','机械');

3.查询年龄不在18-21之间的数学系的学生的学号,姓名和年龄

查询条件涉及通配符使用与多重条件查询:

Select Sno, Sname,Sage

From S

Where Sdept='数学' And Sage not like [^18-21];

4.查询被计算机系全部学生都选修了的课程的课程号和课程名

查询条件涉及子查询,需要一步步分析,如果有数据库,可以尝试使用SQL进行新建查询

大小写可以从程序中得知,平时编写按个人习惯即可

SELECT C.Cno, C.Cname
FROM C
WHERE NOT EXISTS (
  SELECT *
  FROM S
  WHERE S.Sdept='计算机'
  AND NOT EXISTS (
    SELECT *
    FROM SC
    WHERE SC.Sno=S.Sno AND SC.Cno=C.Cno
  )
);

5.查询不在信息系学习的学生的学号,并对查询结果按照学号的降序排序

查询时涉及ORDER BY,其中升序:ASC(默认);降序:DESC:

SELECT Sno
FROM S
WHERE Sdept = '计算机'
ORDER BY Sno DESC;

6.统计各专业男生女生的人数

查询时涉及聚集函数:

SELECT Sdept, Ssex, COUNT(*) as 人数
FROM S
GROUP BY Sdept, Ssex;

/*另一种方法*/

SELECT Sdept,
       SUM(CASE WHEN Ssex = '男' THEN 1 ELSE 0 END) AS 男生人数,
       SUM(CASE WHEN Ssex = '女' THEN 1 ELSE 0 END) AS 女生人数
FROM S
GROUP BY Sdept;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值