from sc
例5:使用LIKE运算符
SELECT * FROM 学生 WHERE 姓名 LIKE '%李%' 例6:使用BETWEEN运算符
SELECT * FROM 学生 WHERE 入学成绩 BETWEEN 550 AND 580 例7:对查询结果分组
在“学生”表中按性别统计所有学生的最高成绩。 USE 学生管理 SELECT CASE 性别
WHEN 0 THEN '女' ELSE '男' END AS 性别,
MAX(入学成绩) AS 最高成绩 FROM 学生
GROUP BY 性别
注意:在使用GROUP BY子句时,SELECT子句中每一个非聚合表达式内的所有列都应包含在GROUP BY列表中。否则将会返回错误信息。 实验习题:
对于“Student”数据库的三个基本表:
S(Sno,Sname,Sage,Ssex,Sdept),C(Cno,Cname,Teacher),SC(Sno,Cno,Grade)
1. 使用SQL Server Management Studio 中为 “学生”数据库的学生表(student)、
课程表(course)、选课表(sc)添加记录。 2. 完成如下查询语句:
(1) 查询LIU老师所授课程的课程号和课程名。 (2) 查询年龄大于23岁的男生的学号和姓名。
(3) 查询学号为S3学生所学课程的课程名与任课教师名。
(4) 查询至少选修LIU老师所授课程中一门课程的女学生姓名。 (5) 查询Wang同学不学的课程的课程号。 (6) 查询至少选修两门课程的学生学号。
(7) 查询全部学生都选修的课程的课程号与课程名。 (8) 查询选修课程包含LIU老师所授课程的学生学号。 (9) 统计有学生选修的课程门数。
(10)求选修C4课程的女学生的平均年龄。
(11)求LIU老师所授课程的每门课程的平均成绩。 (12)统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数,
查询结果按人数降序排列,若人数相同,按课程号升序排列。 (13)检索学号比Wang同学打,而年龄比他小的学生姓名。 (14)在表SC中查询成绩为空值的学生学号和课程号。 (15)查询姓名以L打头的所有学生的姓名和年龄。 (16)求年龄大于女同学平均年龄的男学生姓名和年龄。 (17)求年龄大于所有女同学年龄的男学生姓名和年龄。 实验报告要求: ? 实验目的
? 实验习题的源程序清单
15
? 写出在实验过程中遇到的问题及解决方法 ? 要求字迹端正、条理清晰、概念正确
16
实 验 四
实验名称:数据更新 实验学时:2 实验目的:
1) 掌握在SQL Server Management Studio 中对表进行插入、修改和删除数据的操作。 2) 掌握使用T-SQL语句对表进行插入、修改和删除数据的操作。 3) 重点掌握带查询的更新方法。 实验内容及步骤:
(一) 在SQL Server Management Studio 中对数据库中的表进行插入、修改和删除
数据
例1:在SQL Server Management Studio 中向数据库gzgl中的表输入数据 在SQL Server Management Studio 中向jbxx表插入记录,选择并用鼠标右击表jbxx →选择“打开表”→逐字段输入各记录值,输入完后保存,关闭窗口。
例2:在SQL Server Management Studio 中将表jbxx中employee_id为020805的记录的部门号改为003
在SQL Server Management Studio 中选择表并用鼠标右击表jbxx →选择“打开表”→将光标定位至employee_id为020805的记录的department_id字段,改为003后保存,关闭窗口。
例3:在SQL Server Management Studio 中删除数据库gzgl表数据 在SQL Server Management Studio 中删除表jbxx的第3、6行操作步骤:在SQL Server Management Studio 中选择表并用鼠标右击表jbxx →选择“打开表”→选择要删除行前面的小方块 →单击鼠标右键 →删除 →保存,关闭窗口。
(二) 使用T-SQL语句对表进行插入、修改和删除数据的操作 a. 使用INSERT语句插入数据 语法:INSERT [ INTO]
{ table_name | view_name }
{[( column_list )] { VALUES
( { DEFAULT | NULL | expression } [ ,...n] ) | derived_table }
例1:向数据库gzgl中的表输入数据 use gzgl go
insert into jbxx
values(‘0111112’,’李子林’,’1973_5_3’,’1’,’310107196206088243’,’交通路5号’,’sql@126.com’) go
单击快捷工具栏的执行图标或按F5,执行上述语句。
b. 使用UPDATE语句更新数据
17
语法:UPDATE
{ table_name | view_name }
[ FROM { < table_source > } [ ,...n ] SET
column_name = { expression | DEFAULT | NULL }[ ,...n ] [ WHERE search_condition > ]
例2:将表jbxx中编号为020805的记录的部门号改为003 use gzgl go
update jbxx
set department_id=’003’ where employee_id=’020805’ go
例3:将表jbxx中的年龄增加1岁。 use gzgl go
update jbxx
set age=age+1 go
例4:将表jbxx中所有记录的党员属性改为“党员” use gzgl go
update jbxx
set polity=’ 党员’ &&如果没有where子句,则将修改表中的每一行数据
单击快捷工具栏的执行图标或按F5,执行上述语句。 c. 使用DELETE语句删除数据
语法:DELETE [ FROM ]
{ table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name } [ WHERE
< search_condition > ]
例4:删除jbxx表中编号为020805的记录。use gzgl
go
delete from jbxx
where employee_id=’020805’ 例5:删除数据库gzgl中jbxx表的所有数据
use gzgl go
delete from jbxx
18
或者使用TRUNCATE TABLE name
use gzgl go
truncate table jbxx 实验习题:
对于“Student”数据库的三个基本表:
S(Sno,Sname,Sage,Ssex,Sdept),C(Cno,Cname,Teacher),SC(Sno,Cno,Grade) 完成如下更新:
(1) 往C表中插入一个课程元祖(’c8’,’VC++’,’BAO’)
(2) 查询平均成绩大于80分的课程名称,并把查询到结果送到另一个已存在的表
tem_table(cname)。
(3) 在sc中删除尚无成绩的选课元组。
(4) 把选修LIU老师课程的女生选课元组全部删去。 (5) 把MATHS课不及格的成绩全改为60分。
(6) 把低于所有课程总平均成绩的女生成绩提高5%。
(7) 在表SC中修改C4课程的成绩,若成绩小于等于70分时提高5%,若成绩大于70
分时提高4%。
(8) 在表SC中,当某个成绩低于全部课程的平均成绩时,提高5%。 实验报告要求: ? 实验目的
? 实验习题的源程序清单
? 写出在实验过程中遇到的问题及解决方法 ? 要求字迹端正、条理清晰、概念正确
19