实验七 简单SELECT语句
一. 实验目的
1.观察查询结果, 体会SELECT语句实际应用;
2.要求学生能够在查询分析器中使用SELECT语句进行简单查询。
3. 熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
二. 实验准备
1. 完成实验四,成功建立了基本表。
2. 了解简单SELECT语句的用法。
3. 比较熟悉查询分析器中的SQL脚本运行环境。
三. 实验要求
1.完成简单查询和连接查询操作,并验收实验结果提交实验报告
四. 实验内容
所有的查询全部用Transact-SQL语句实现
1. 简单查询操作
此部分查询包括投影、选择条件表达、数据排序、使用临时表等。 对EDUC数据库实现以下查询:
① 求计算机系的学生学号和姓名;
select sname,sno
from student
where dno in(Cs);
② 求选修了课程的学生学号;
select sno
from student;
③ 求选修C1 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;
Select sno,grade
From student_course
Where cno=C1
Order BY grade EDSC
If grade is the sname
Order BY sno ASC
④ 求选修课程C1 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;
Select sno,grade
From student_course
Where cno=’1’and 80<grade<90
Having count 0.75 grade;
④ 求计算机系和数学系的姓张的学生的信息;
Select *
From student
Where sname like ‘张%’and dno=’CS’and ‘MA’;
⑤ 求缺少了成绩的学生的学号和课程号。
Select sno,cno
From student_course
Where grade is null;
⑥ 将2000以后的成绩大于90分的学生成绩存入永久成绩表;将2000
年以前的成绩存入临时成绩表中。
2. 连接查询操作
对EDUC数据库实现以下查询:
① 查询每个学生的情况以及他(她)所选修的课程;
Select *
From student,student_course,course
Where student.sno=student_course.sno and
course.cno=o
② 求学生的学号、姓名、选修的课程名及成绩;
Select sno,sname,cname,grade
From stuent,course,student_course
Where student .sno=student.sno and
course.cno=student_course.cno
③ 求选修C1 课程且成绩在90 分以上的学生学号、姓名及成绩; Select sno,sname.grade
From student student_course
Where sc.sno=student.sno snd
Sc.cno=’1’and sc.grade>90;
④ 查询每一门课的间接先行课。
第二篇:实验六 SELECT语句对单一表格的查询
实验六SELECT语句对单一表格的查询
一、 实验目的
掌握使用SELECT语句对单一表格的查询方法。
二、 实验内容
1. 查询Stu_Info Table中关于学生姓名、学号、年龄及其各种组合结果。
2. 利用TOP关键字、计算列查询Stu_Info Table中的学生信息。
三、 实验指导
更新Stu_Info Table的内容如下图所示:
图6-1 Stu_Info Table
1. 基础查询
(1) 查询全体学生的详细信息
SELECT *
FROM dbo.[Stu_Info Table]
(2) 查询全体学生的学号和姓名
SELECT Number,Name
FROM dbo.[Stu_Info Table]
(3) 查询年纪为19的学生信息
SELECT *
FROM dbo.[Stu_Info Table]
WHERE Age=19
(4) 查询年纪为12的学生姓名
SELECT Name
FROM dbo.[Stu_Info Table]
WHERE Age=12
(5) 查询年纪在19至20岁之间的学生姓名
SELECT Name
FROM dbo.[Stu_Info Table]
WHERE Age >= 19 AND Age <= 20
或SELECT Name
FROM dbo.[Stu_Info Table]
WHERE AGE BETWEEN 18 AND 20
(6) 列出所有学生年纪的和,年纪的平均值,最大值,最小值,最大值与最小值之间的差值
SELECT AVG (Age), SUM (Age), MAX (Age), MIN (Age), MAX (Age)-MIN (Age)
FROM dbo.[Stu_Info Table]
(7) 将所有学生按学号顺序从大到小排列
SELECT *
FROM Stu_Info Table
ORDER BY Number DESC
默认是从小到大ASC
(8) 计算记录的数量
SELECT COUNT(*)
FROM dbo.[Stu_Info Table]
(9) 计算某个字段的个数
SELECT COUNT(Age)
FROM dbo.[Stu_Info Table]
(10) 显示不重复的字段
SELECT DISTINCT Age
FROM dbo.[Stu_Info Table]
(11) 在表S中查询姓李的学生信息。
SELECT *
FROM dbo.[Stu_Info Table]
WHERE Name
LIKE '李%'
(12)在Stu_Info Table中检索年龄为空值的学生的姓名。
SELECT Name
FROM dbo.[Stu_Info Table]
WHERE Age IS NULL
(13)在S中检索年龄为18或19的学生。
SELECT *
FROM dbo.[Stu_Info Table]
WHERE Age IN (18, 19)
或
SELECT *
FROM dbo.[Stu_Info Table]
WHERE Age =18 OR Age =19
2. TOP关键字
TOP关键字:用来指定只返回前面一定数量的数据。
语法:TOP integer 返回前面的几行,用integer 表示返回的行数。
TOP integer PERCENT 用百分比表示返回的行数。
有如下数据库表:
图6-2 Stu_Info Table
(1)年龄排在前2位的学生信息
SELECT TOP 2 *
FROM dbo.[Stu_Info Table]
ORDER BY Age
(2)年龄排在前25%的学生信息
SELECT TOP 25 PERCENT *
FROM dbo.[Stu_Info Table]
ORDER BY Age
3. 计算列的使用
计算列:对查询到的数据进行再次的计算处理。
注:计算列只作显示用,并不将计算结果真正存储到数据库中去。
Stu_Grade Table如下图6-3所示:
图6-3 Stu_Grade Table
将每位同学的成绩加4分处理显示的结果如下:
图6-4 分数+4处理
或者输入:
SELECT *,分数处理=Grade + 4
FROM dbo.[ Stu_Grade Table]
但这个语句会被自动优化成前一种。
四、 上机练习(给出适当的截图和程序)
建立一个班级数据库:学生 STUDENT (学号,姓名,年龄,班号)
1 、 建表,在定义中要求声明:(使用T-SQL语句或者管理平台)
( 1 )学生的年龄介于 15 到 40 岁之间。
( 2 )学生姓名不能为空。
2、插入12条记录:(使用T-SQL语句或者管理平台)
表格:stuinfo
8101 ,张三, 18 , 101 ;
8102 ,钱四, 16 , 121 ;
8103 ,王玲, 17 , 131 ;
8105 ,李飞, 19 , 102 ;
8109 ,赵四, 18 , 141 ;
8110 ,李可, 20 , 142 ;
8201 ,张飞, 18 , 111 ;
8302 ,周瑜, 16 , 112 ;
8203 ,王亮, 17 , 111 ;
8305 ,董庆, 19 , 102 ;
8409 ,赵龙, 18 , 101 ;
8510 ,李丽, 20 , 142 ;
3、完成以下查询功能(全部使用T-SQL语句,报告上给出程序和查询的结果图)
(1) 找出班号为‘111’的学生姓名。
(2) 找出年龄为16、18、20岁的学生。
(3) 列出所有学生年纪的和,年纪的平均值,最大值,最小值,最大值与最小值之间的差值;
(4) 计算‘102’班的学生人数。
(5) 找出年纪最大的同学的信息。
(6) 找出所有姓李的学生信息,并按其年龄由小到大排序。
(7) 统计不姓‘李’的学生的人数。
(8) 对每个人的年龄做+1处理。
、stuinfo bottom