SQL查询技巧:获取学生信息与课程数据

1 下载量 54 浏览量 更新于2024-08-30 1 收藏 55KB PDF 举报
"该资源主要涉及SQL查询语句的使用,包括从学生表和学生修课表中获取数据,以及对特定条件的数据进行筛选。同时,还提供了几个关于Northwind数据库orders表的查询示例,涉及到不同的查询技巧和条件过滤。" 在SQL中,查询数据是数据库操作的基础。以下是对给定文件中各知识点的详细说明: 1. **查询所有数据**:使用`SELECT * FROM table_name`可以查询指定表(如student和course)中的所有数据。这里的`*`代表所有列。 2. **条件查询**:`BETWEEN`关键字用于查询介于两个值之间的数据,例如`WHERE Grade BETWEEN 70 AND 80`将返回成绩在70到80之间学生的学号、课程号和成绩。 3. **最高分查询**:`TOP 1`配合`ORDER BY`可以找到特定列的最大值。`WHERE Cno = 'C01'`限制了查询范围,`ORDER BY Grade DESC`则按成绩降序排序,使得最高分出现在结果集的第一行。 4. **子查询与集合操作**:`IN`操作符结合子查询`SELECT DISTINCT Cno FROM SC`,可以找出所有学生选修过的课程号,`DISTINCT`用于去除重复的课程号。 5. **特定列排序**:`ORDER BY`用于对查询结果进行排序,`DESC`表示降序,`ASC`表示升序。在例子中,最新的定购日期被排在前面。 6. **LIKE运算符**:`LIKE`用于模式匹配,`[BCDF]_a%`表示匹配以B、C、D或F开头,第三个字符为'a'的字符串。`_`代表单个任意字符,`%`代表零个、一个或多个任意字符。 7. **否定条件查询**:使用`NOT LIKE`可以查询不符合特定模式的数据。在例子中,`NOT LIKE 'A%a'`和`NOT LIKE 'B%a'`等组合,找到不以A、B开头且最后一个字母为'a'的记录。 这些查询语句展示了SQL在数据检索、条件过滤、排序和集合操作等方面的强大功能。理解并熟练掌握这些基本操作,对于处理和分析数据库中的信息至关重要。在实际应用中,根据具体需求灵活组合使用这些查询方法,可以高效地获取所需信息。

在学生选课数据库Students中有3张数据表,表结构描述如下: 学生表:student(sno,sname,sex,age,sdept),其中学号sno是主码,sname表示 姓名,sex表示性别,age表示年龄,sdept表示所在系。 课程表:course(cno,cname,credit,semester,period),其中课程号cno是主码, cname表示课程名,credit表示学分,semester学期,period学时。 选课表:sc(sno,cno,grade),其中sno,cno是联合主码,sno是外码、cno是外 码,grade代表成绩。 表结构如下: 1 表1.1student表结构 字段数据类型约束描述 snochar(7)主码学号 snamevarchar(10)非空姓名 ssexchar(2)取值“男”或“女”性别 sageint取值在15到45之间年龄 sdeptvarchar(20)默认计算机系所在系 表1.2course表结构 字段数据类型约束描述 cnochar(10)主码课程号 cnamevarchar(20)非空课程名 creditint取值大于0学分 semesterint取值大于0学期 periodint学时 表1.3sc表结构 字段数据类型约束描述 联合主码, snochar(7)学号 外码,参照student表主码 联合主码, cnovarchar(10)课程号 外码,参照course表主码 gradeint取值在0到100之间成绩 请根据以上描述完成下面的10题: 1.查询全体学生的学号与姓名; 2.查询全体学生的姓名、学号、所在系; 3.查询全部课程的详细情况; 4.查询全体学生的姓名及出生年份; 5.查询全体学生的姓名、出生年份、所在系; 6.查询选修了课程的学生学号,要求消除重复行; 7.查询全体学生的学号、姓名、年龄、所在系; 8.查询全体学生的信息,并用中文显示列名; 9.查询全体学生信息,结果按照年龄降序排列; 2 10.查询全体学生信息,结果先按系别升序排列,同一系的学生再按照学号升序 排列。

2023-03-09 上传
2023-04-20 上传