[工作]SqL语句更新,SQL语句视图与索引
SqL语句更新,SQL语句视图与索引
实验名称:SQL的数据更新,SQL的视图与索引
实验目的:掌握数据更新 insert,delete,update的使用,视图的相关操作
实验
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
:
修改数据
例 将学号为“S03”的学生年龄改为22岁,即要修改满足条件的一个元组的属性值。
UPDATE Students
SET Sage=22
WHERE Sno=’S03’;
例 将所有学生的年龄增加1岁。即要修改多个元组的值。
UPDATE Students
SET Sage=1+Sage;
例 将数学系所有学生的成绩置零。
由于学生所在系的信息在Students
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
中,而学习成绩在Reports表中,因此,可以将SELECT子查询作为WHERE子句的条件表达式。故该更新要求的SQL命令为:
UPDATE Reports
SET Grade=0
WHERE ‘数学’=
(SELECT Sdept
FROM Students
WHERE Students.Sno=Reports.Sno);
3 删除数据
例 删除学号为“S04”的学生选修的课号为“C02”的记录。
DELETE
FROM Reports
WHERE Sno=’S04’ AND Cno=’C02’;
例 删除所有学生的选课记录。
DELETE
FROM Reports;
这条DELETE语句将删除Reports的所有元组,使Reports成为空表。
例 删除数学系所有学生的选课记录。
DELETE
FROM Reports
WHERE ‘数学’=
(SELECT Sdept
FROM Students
WHERE Students.Sno=Reports.Sno);
1 建立视图
例 建立数学系学生的视图,并要求进行修改和插入操作时仍需保证
该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。
CREATE VIEW C_Student
AS
SELECT Sno, Sname, Sage, Sdept
FROM Students
WHERE Sdept=’数学’
WITH CHECK OPTION
例 建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图。
本视图由三个基本表的连接操作导出,其SQL语句如下:
CREATE VIEW Student_CR
AS
SELECT Students.Sno, Sname, Cname, Grade
FROM Students, Reports, Courses
WHERE Students.Sno= Reports.Sno AND Reports.Cno=Courses.Cno
例 定义一个反映学生出生年份的视图。
CREATE VIEW Student_birth(Sno, Sname, Sbirth)
AS SELECT Sno, Sname, 1996-Sage
FROM Students
2 删除视图
例 删除视图Student_CR。
DROP VIEW Student_CR;
二 查询视图
例 在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。
SELECT Sname, Sage
FROM C_Student
WHERE Sage<20;
说明:本例转换后的查询语句为:
SELECT Sname, Sage
FROM Students
WHERE Sdept=’数学’ AND Sage<20;
例 在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称(Cname)。
SELECT Sno, Sname, Cname
FROM Student_CR
WHERE Grade>85;
三 更新视图
例 将数学系学生视图C_Student中学号为S05的学生姓名改为“黄海”。
UPDATE C_Student
SET Sname='黄海'
WHERE Sno='S05';
说明:DBMS自动转换为对基本表的更新语句如下:
UPDATE Students
SET Sname='黄海'
WHERE Sno='S05' AND Sdept='数学';
例 向数学系学生视图C_Student中插入一个新的学生记录,其中学
号为“S09”,姓名为“王海”,年龄为20岁。
INSERT
INTO C_Student
VALUES ('S09', '王海', 20, ’数学’);
例 删除数学系学生视图C_Student中学号为“S09”的记录。
DELETE
FROM C_Student
WHERE Sno=’S09