常见的sql语句

本文深入探讨了SQL语言在数据库查询中的应用,提供了从简单到复杂的查询案例,涵盖了学号、姓名、成绩等字段的查询,以及统计分析、条件筛选、排序、联表查询等高级操作,是学习和掌握SQL查询的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库三个表
学生表
在这里插入图片描述
课程表
在这里插入图片描述sc表
在这里插入图片描述– (1)查询全体学生的学号与姓名;
SELECT Sno,Sname FROM student
– (2)查询全体学生的姓名、学号和所在系
SELECT Sno,Sname,Dept FROM student
– (3)查询全体学生的详细记录
SELECT Sno,Sname,Ssex,Sage,Dept FROM student
– (4)查询全体学生的姓名及其出生年份 year(curdate())获得当前时间的年份 curdate()获得当前时间
SELECT Sname,YEAR(now())-Sage FROM student
– (5)查询计算机系全体学生
SELECT Sno,Sname,Ssex,Sage,Dept FROM student WHERE Dept=‘计算机系’
– (6)查询所有年龄20岁以下的学生的姓名及年龄
SELECT Sname,Sage FROM student WHERE Sage<20
– (7)查询成绩不及格学生的学号
SELECT Sno FROM sc WHERE Grade<60
– (8)查询考试成绩在80~90之间的学生学号、课程号和成绩
SELECT Sno,Cno,Grade FROM sc WHERE Grade>=80 and Grade<=90
– (9)查询考试成绩不在80~90之间的学生学号、课程号和成绩
SELECT Sno,Cno,Grade FROM sc WHERE Grade!=80 AND Grade!=90
– (10)查询信息管理系、通信工程系和计算机系学生的姓名和性别
SELECT Sname,Ssex FROM student WHERE Dept in (‘信息管理系’,‘通信工程系’,‘计算机系’)
– (11)查询信息管理系、通信工程系和计算机系三个系之外的其他系学生的姓名和性别
SELECT Sname,Ssex FROM student WHERE Dept not in (‘信息管理系’,‘通信工程系’,‘计算机系’)
– (12)查询姓“张”的学生详细信息
SELECT Sno,Sname,Ssex,Sage,Dept FROM student where Sname LIKE ‘张%’
– (13)查询姓“张”、姓“李”和姓“刘”的学生的详细信息
SELECT Sno,Sname,Ssex,Sage,Dept FROM student where Sname LIKE '张%'OR Sname LIKE’李%‘OR Sname LIKE’刘%’
– (14)查询名字的第2个字为“小”或“大”的学生的姓名和学号
SELECT Sno,Sname FROM student where Sname LIKE ‘_小%’ OR Sname LIKE ‘_大%’
– (15) 查询所有不姓“刘”的学生姓名
SELECT Sno,Sname,Ssex,Sage,Dept FROM student where Sname NOT LIKE ‘刘%’
– (16)在Student表中查询学号的最后一位不是2、3、5的学生信息
SELECT Sno,Sname,Ssex,Sage,Dept FROM student where Sno NOT LIKE ‘%2’ OR Sno LIKE ‘%3’ OR Sno LIKE ‘%5’
– (17)查询还没有考试的学生的学号和相应的课程号。
SELECT Sno,Cno FROM sc WHERE Grade IS NULL
– (18)查询计算机系男生的姓名。
SELECT Sname FROM student WHERE Ssex=‘男’ AND Dept=‘计算机系’
– (19)查询C002和C003课程中考试成绩在80~90的学生的学号、课程号和成绩。
SELECT Sno,Cno,Grade FROM sc WHERE (Grade>=80 AND Grade<=90) AND Cno=‘C002’ OR Cno=‘C003’
– (20)查询修了“C002”课程的学生的学号及成绩,查询结果按成绩降序排列。
SELECT Sno,Grade FROM sc WHERE Cno=‘C002’ ORDER BY Grade DESC
– (21)查询全体学生详细信息,结果按系名升序排列,同一个系的学生按出生日期降序排列
SELECT Sno,Sname,Ssex,Sage,Dept FROM student ORDER BY Dept,Sage DESC
– (22)统计学生总人数
SELECT count() FROM student
– (23)统计选修了课程的学生人数
SELECT count(DISTINCT Sno) FROM sc
– (24)计算学号为“0811101”的学生的考试总成绩
SELECT SUM(Grade) FROM sc WHERE Sno=‘0811101’
– (25)计算“0831103”学生的平均成绩
SELECT AVG(Grade) FROM sc WHERE Sno=‘0831103’
– (26)查询“C001”课程考试成绩的最高分和最低分
SELECT MAX(Grade),min(Grade) FROM sc WHERE Cno=‘C001’
– (27)统计每门课程的选课人数,列出课程号和选课人数
SELECT Cno,count(
) as Total FROM sc GROUP BY Cno
– (28)统计每个学生的选课门数和平均成绩
SELECT Sno,count() as Total,AVG(Grade) FROM sc GROUP BY Sno
– (29)统计每个系的女生人数
SELECT count(
) FROM student WHERE Ssex=‘女’ GROUP BY Dept
– (30)统计每个系的男生人数和女生人数以及男生的最大年龄和女生的最大年龄。结果按系名的升序排序
SELECT Dept,Ssex,count(),MAX(Sage) as Total FROM student GROUP BY Dept,Ssex
– (31) 查询选课门数超过3门的学生的学号和选课门数
select Sno,count(
) as 选课门数 from sc group by Sno having count(Sno)>3;
– (32) 查询选课门数大于等于4门的学生的平均成绩和选课门数
select Sno,AVG(Grade),count() as 选课门数 from sc group by Sno having count(Sno)>=4;
– (33) 查询计算机系和信息管理系每个系的学生人数
SELECT Dept,count(
) as 人数 FROM student GROUP BY Dept HAVING Dept in(‘计算机系’,‘信息管理系’)

– 第二套
(1)查询计算机系学生的修课情况,要求列出学生的名字、所修课的课程号和成绩。
SELECT Sname,Cno,Grade FROM sc,student WHERE Dept=‘计算机系’
(2)查询“信息管理系”修了“计算机文化学” 的学生姓名和成绩。
SELECT Sname,Grade,Dept FROM
student s JOIN sc ON s.Sno=sc.Sno JOIN course c on c.Cno=sc.Cno
WHERE Dept=‘信息管理系’ AND Cname=‘计算机文化学’
(3)查询所有选修了Java课程的学生情况,列出学生姓名和所在系。
SELECT Sname,Dept FROM student s JOIN sc ON s.Sno=sc.Sno JOIN course c on c.Cno=sc.Cno WHERE Cname=‘java’
(4)统计每个系的学生的考试平均成绩。
SELECT avg(Grade) as 每个系的平均成绩
FROM student s JOIN sc on s.Sno=sc.Sno
GROUP BY Dept
(5)统计计算机系学生每门课程的选课人数、平均成绩、最高成绩和最低成绩。
SELECT count(*) as 选课人数,AVG(Grade),MAX(Grade),min(Grade)
FROM student s JOIN sc ON s.Sno=sc.Sno
GROUP BY Dept,cno HAVING Dept=‘计算机系’

(6)查询与刘晨在同一个系学习的学生的姓名和所在的系。
SELECT s2.Sname,s2.Dept FROM student s1 JOIN student s2 on s1.Dept=s2.Dept
WHERE s1.Sname=‘刘晨’ AND s2.Sname != ‘刘晨’
(7)查询与“数据结构”在同一个学期开设的课程的课程名和开课学期。
SELECT s2.Cname,s2.Semester FROM course s1 JOIN course s2 on s1.Semester=s2.Semester
WHERE s1.Cname=‘数据结构’ AND s2.Cname != ‘数据结构’
(8)查询至少被两个学生选的课程的课程号。
SELECT Cno FROM student s JOIN sc ON s.Sno=sc.Sno
GROUP BY Cno HAVING count(s.Sno)>=2
(9)查询全体学生的选课情况,包括选修了课程的学生和没有选修课程的学生。
SELECT Sname,GROUP_CONCAT(Cname) FROM student LEFT JOIN sc ON student.Sno=sc.Sno LEFT JOIN course ON course.Cno=sc.Cno
GROUP BY student.Sno
(10)查询没人选的课程的课程名。
SELECT Cname FROM course LEFT JOIN sc ON sc.Cno=course.Cno
WHERE sc.Cno IS null
(11)查询计算机系没有选课的学生,列出学生姓名和性别。
SELECT Sname,Ssex FROM student LEFT JOIN sc ON student.Sno=sc.Sno
WHERE sc.Cno IS NULL AND Dept=‘计算机系’
(12)统计计算机系每个学生的选课门数,包括没有选课的学生。
SELECT Sname,Dept,count(sc.Sno) as 选课门数 FROM student LEFT JOIN sc ON student.Sno=sc.Sno
GROUP BY student.Sno,Dept HAVING Dept=‘计算机系’
(13)查询信息管理系选课门数少于3门的学生的学号和选课门数,包括没有选课的学生。查询结果按选课门数递增排序。
SELECT student.Sno,count(sc.sno) FROM student LEFT JOIN sc ON student.Sno=sc.Sno
GROUP BY student.Sno,Dept HAVING Dept='信息管理系’AND count(student.Sno)❤️
ORDER BY count(student.Sno)
(14)查询考试成绩最高的三个成绩,列出学号、课程号和成绩。
SELECT student.Sno,sc.Cno,Grade FROM student LEFT JOIN sc ON student.Sno=sc.Sno
ORDER BY Grade DESC
LIMIT 3
(15) 查询Java考试成绩最高的前三名的学生的姓名、所在系和VB考试成绩。
SELECT Sname,Dept,Grade FROM student JOIN sc ON student.Sno=sc.Sno JOIN course on course.Cno=sc.Cno
WHERE Cname=‘java’
ORDER BY Grade DESC
LIMIT 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值