实验时间:2课时
实验性质:验证
实验主要内容及方法: SQL数据的插入、修改和删除
实验要求:
(1) 掌握SQL数据插入、修改和删除语句的一般格式。;
(2) 掌握SQL数据插入、修改和删除使用方法。
实验目的:熟练掌握SQL数据插入、修改和删除的使用。
实验设备:装有SQL SERVER 2005的电脑
实验步骤:
(1) 新建一个SQL查询窗口;
(2) 选择数据库;
(3) 验证如下例题:
例3.52 在数据库SC中先创建一个关系(表)History_Student,其模式(结构)与Students完全一样。
CREATE TABLE History_Student(
Sno char(10) primary key,
Sname char(20) UNIQUE,
Ssex char(2),
Sage int,
Sdept char(20))
试将关系Students中的所有元组插入到关系History_Student中去,其SQL命令为:
INSERT
INTO History_Student
SELECT *
FROM Students;
例3.53 将学号为“S03”的学生年龄改为22岁,即要修改满足条件的一个元组的属性值。
UPDATE Students
SET Sage=22
WHERE Sno='S03';
例3.54 将所有学生的年龄增加1岁。即要修改多个元组的值。
UPDATE Students
SET Sage=1+Sage;
例3.55 将数学系所有学生的成绩置零。
由于学生所在系的信息在Students表中,而学习成绩在Reports表中,因此,可以将SELECT子查询作为WHERE子句的条件表达式。故该更新要求的SQL命令为:
UPDATE Reports
SET Grade=0
WHERE '数学'=
(SELECT Sdept
FROM Students
WHERE Students.Sno=Reports.Sno);
例3.56 分别删除学号为“S04”的学生记录及学生选课记录。(注意参照关系及被参照关系,即参照完整性)
DELETE
FROM Reports
WHERE Sno='S04';
DELETE
FROM Students
WHERE Sno='S04';
例3.57 删除数学系所有学生的选课记录。
DELETE
FROM Reports
WHERE '数学'=
(SELECT Sdept
FROM Students
WHERE Students.Sno=Reports.Sno);
例3.58 删除所有学生的选课记录。
DELETE
FROM Reports;
实验时间:2课时
实验性质:验证
实验主要内容及方法:SQL视图建立、修改和删除
实验要求:
(1) 掌握SQL视图建立、修改和删除;
(2) 掌握SQL视图查询。
实验目的:熟练掌握SQL的应用。
实验设备:装有SQL Server 2005的电脑
实验步骤:
(1) 选择数据库SC;
(2) 新建查询;
(3) 验证如下例题:
1 建立视图
例3.59 建立数学系学生的视图Math_Student,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。
CREATE VIEW Math_Student
AS
SELECT Sno, Sname, Sage, Sdept
FROM Students
WHERE Sdept='数学'
WITH CHECK OPTION
例3.60 建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图Student_CR。
本视图由三个基本表的连接操作导出,其SQL语句如下:
CREATE VIEW Student_CR
AS
SELECT Students.Sno, Sname, Cname, Grade
FROM Students, Reports, Courses
WHERE Students.Sno= Reports.Sno
例3.61 定义一个反映学生出生年份的视图Student_Birth。
CREATE VIEW Student_birth(Sno, Sname, Sbirth)
AS SELECT Sno, Sname, 1996-Sage
FROM Students
2 删除视图
DROP VIEW Student_Birth;
例3.62删除视图Student_Birth。
DROP VIEW Student_Birth;
例3.63 在数学系的学生视图Math_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。
SELECT Sname, Sage
FROM Math_Student
WHERE Sage<20;
说明:本例转换后的查询语句为:
SELECT Sname, Sage
FROM Students
WHERE Sdept=’数学’ AND Sage<20;
例3.64 在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称(Cname)。
SELECT Sno, Sname, Cname
FROM Student_CR
WHERE Grade>85;
例3.65 将数学系学生视图Math_Student中学号为S05的学生姓名改为“黄海”。
UPDATE Math_Student
SET Sname='黄海'
WHERE Sno='S05';
说明:DBMS自动转换为对基本表的更新语句如下:
UPDATE Students
SET Sname='黄海'
WHERE Sno='S05' AND Sdept='数学';
例3.66 向数学系学生视图Math_Student中插入一个新的学生记录,其中学号为“S19”,姓名为“王海”,年龄为20岁。
INSERT
INTO Math_Student
VALUES ('S19', '王海', 20, '数学');
例3.67 删除数学系学生视图Math_Student中学号为“S09”的记录。
DELETE
FROM Math_Student
WHERE Sno='S09'