Oracle数据库的数据更新语句与视图操作示例(包含大部分常用语句)

Oracle数据库的数据更新语句与视图操作(包含大部分常用语句)

  • 目标
    • 本文用到的关系模式
    • 语句示例
      • 1.在创建的student, course, teacher, sc, tc表中用SQL语句完成以下操作
        • (1)学生“刘家顺”要退学,请删除该学生的所有记录(包括选课记录和学生记录)
        • (2)田小亮同学要转专业,他的学号为103465,将该同学的专业由原来的“软件工程”改为“计算机科学与技术”,班级由原来的“软工3班”修改为“计算机1班”
        • (3)删除选修了“嵌入式系统与应用”但没有及格的选课记录
        • (4)将元组(1203076,吕振华,男,1985/11/8,讲师,体育部)插入教师关系
        • (5)在course表中插入以下两门课程信息
        • (6)创建名为xg_view的视图,在视图中显示所有信息工程学院教师的授课信息,包括教师姓名,职称,所授课程名称,授课班级,授课学期
        • (7)创建每个学生已修课程总学分的视图,视图名为xf_view,要求在视图中显示学生学号、姓名和总学分
        • (8)在创建的视图中查询大数据2班每位学生已修的总学分
      • 2.在创建的s,p,j和spj表中用SQL语句完成以下操作
        • (1)现有一供应商,代码为s9、姓名为英特尔、所在城市西安,供应情况如下:供应零件p5给工程j7数量为600,供应零件p4给工程j4数量为500,请将此供应商的信息和供应信息插入数据库
        • (2)请将北京供应商的供应数量加150
        • (3)把全部红色零件的颜色改为黑色
        • (4)由s5供给j4的零件p6改为由s1供应
        • (5)请将(s2,j7,p4,510)插入供应情况关系
        • (6)零件p1已经停产,请将p1的相关信息从数据库中删除
        • (7)创建零件名为螺丝刀的供应情况的视图sd_view,视图中显示供应商名(Sname),零件名(Pname),零件重量(Weight),工程项目代码(Jno),供应数量(QTY)
        • (8)在视图sd_view中查询供应数量在400到600之间的供应商姓名
        • (9)请为三建工程项目建立一个供应情况的视图SJ_View,包括供应商编号,零件编号,供应数量
      • 后记

目标

  • 掌握数据插入、修改和删除语句的语法格式和使用方法。
  • 通过对视图的操作掌握视图虚表的本质,学会视图的定义方法。
  • 理解基于视图的查询和更新的操作过程,知道视图更新的限制,在Oracle中学会使用user_updatable_columns系统表查询视图可否更新。

本文用到的关系模式

学生表Student(Sno,Sname,Ssex,Snation,Spolitical,Sbirth,Scollege,Smajor,Sclass)
课程表Course (Cno,Cname,Credit,Cproperty,Chour,Cterm)
选课表SC(Sno,Cno,Grade)
教师表Teacher(Tno,Tname,Tsex,Tbirth,Ttitle,Tcollege)
授课表TC(Id,Tno,Cno,Sclass,Semester,TimePlace)

  • “学生”关系Student,由学号(Sno)、姓名(Sname)、性别(Ssex)、民族(Snation)、政治面貌(Spolitical)、出生日期(Sbirth)、学院(Scollege)、专业(Smajor)和班级(Sclass)组成。
  • “课程”关系Course,由课程号(Cno)、课程名(Cname)、学分(Credit)、课程性质(Cproperty)、学时(Chour)和开设学期(Cterm)组成。
  • “选课”关系SC由学号(Sno)、课程号(Cno)、成绩(Grade)组成。
  • “教师”关系teacher,由职工号(Tno)、姓名(Tname),性别(Tsex),出生日期(Tbirth),职称(Ttitle)和所在学院(Tcollege)组成。
  • “授课”关系TC,由课序号(Id),职工号(Tno),课程号(Cno),授课班级(Sclass),授课学期(Semester)和上课时间地点(TimePlace)组成。

供应商表s(sno, sname, city)
零件表p(pno, pname, color, weight)
工程项目表j(jno, jname, city)
供应情况表 spj(sno, pno, jno, qty)

  • 供应商表 s 由供应商代码(sno)、供应商姓名(sname)、供应商所在城市(city)组成;
  • 零件表 p 由零件代码(pno)、零件名(pname)、颜色(color)、重量(weight)组成;
  • 工程项目表 j 由工程项目代码(jno)、工程项目名(jname)、工程项目所在城市(city)组成;
  • 供应情况表 spj 由供应商代码(sno)、零件代码(pno)、工程项目代码(jno)、供应数量组成(qty),表示某供应商供应某种零件给某工程项目的数量为qty。

语句示例

1.在创建的student, course, teacher, sc, tc表中用SQL语句完成以下操作

(1)学生“刘家顺”要退学,请删除该学生的所有记录(包括选课记录和学生记录)

delete 
from sc
where sno in
      (select sno
       from student
       where sname = '刘家顺'
      );

delete 
from student 
where sname = '刘家顺';
commit;

(2)田小亮同学要转专业,他的学号为103465,将该同学的专业由原来的“软件工程”改为“计算机科学与技术”,班级由原来的“软工3班”修改为“计算机1班”

update student
set smajor = '计算机科学与技术', sclass = '计算机1班'
where sno = '103465';
commit;

(3)删除选修了“嵌入式系统与应用”但没有及格的选课记录

delete
from sc
where sno in
      (select sno
       from sc
       where grade < 60 and cno in
            (select cno
             from course
             where cname = '嵌入式系统与应用'
            )
      );
commit;

(4)将元组(1203076,吕振华,男,1985/11/8,讲师,体育部)插入教师关系

insert
into teacher
values('1203076''吕振华''男',to_date('1985/11/8','yyyy/mm/dd')'讲师''体育部');
commit;

(5)在course表中插入以下两门课程信息

  • 课程号:3094217,课程名:图与网络,课程学分:2,课程性质:选修,课程学时:32,开课学期:6

  • 课程号:3094215,课程名:智能搜索与推荐技术,课程学分:2,课程性质:选修,课程学时:32,开课学期:7

insert all 
into course values('3094217','图与网络',2,'选修',32,6)
into course values('3094215','智能搜索与推荐技术',2,'选修',32,7)
select 1 from dual;
commit;

(6)创建名为xg_view的视图,在视图中显示所有信息工程学院教师的授课信息,包括教师姓名,职称,所授课程名称,授课班级,授课学期

create or replace view xg_view
as
select tname, ttitle, cname, sclass, semester
from teacher, tc, course
where teacher.tno = tc.tno and course.cno = tc.cno;

(7)创建每个学生已修课程总学分的视图,视图名为xf_view,要求在视图中显示学生学号、姓名和总学分

create or replace view xf_view
as 
select student.sno, sname, sum(credit) as SumCredit
from student
left join sc on sc.sno = student.sno
left join course on course.cno = sc.cno
group by student.sno, sname;

(8)在创建的视图中查询大数据2班每位学生已修的总学分

select *
from xf_view
where sno in
      (select sno 
       from student
       where sclass = '大数据2班'
      );

2.在创建的s,p,j和spj表中用SQL语句完成以下操作

(1)现有一供应商,代码为s9、姓名为英特尔、所在城市西安,供应情况如下:供应零件p5给工程j7数量为600,供应零件p4给工程j4数量为500,请将此供应商的信息和供应信息插入数据库

insert 
into s
values('s9','英特尔','西安');

insert all
into spj values('s9','p5','j7',600)
into spj values('s9','p4','j4',500)
select 1 from dual;
commit;

(2)请将北京供应商的供应数量加150

update spj
set qty = qty + 150
where sno in
      (select spj.sno
       from spj, s
       where spj.sno = s.sno and city = '北京' 
      );

(3)把全部红色零件的颜色改为黑色

update p
set color = '黑'
where pno in
      (select pno
       from p
       where color = '红'
      );

(4)由s5供给j4的零件p6改为由s1供应

update spj
set sno = 's1'
where sno in 
      (select sno
       from spj
       where jno = 'j4' and pno = 'p6' and sno = 's5'
      );
commit;

(5)请将(s2,j7,p4,510)插入供应情况关系

insert
into spj
values('s2', 'p4', 'j7', 510);
commit;

(6)零件p1已经停产,请将p1的相关信息从数据库中删除

delete
from spj
where pno = 'p1';

delete
from p
where pno = 'p1';
commit;

(7)创建零件名为螺丝刀的供应情况的视图sd_view,视图中显示供应商名(Sname),零件名(Pname),零件重量(Weight),工程项目代码(Jno),供应数量(QTY)

create or replace view sd_view
as 
select sname, pname, weight, jno, qty
from s, p, spj
where s.sno = spj.sno and p.pno = spj.pno;

(8)在视图sd_view中查询供应数量在400到600之间的供应商姓名

select sname
from sd_view
where qty between 400 and 600;

(9)请为三建工程项目建立一个供应情况的视图SJ_View,包括供应商编号,零件编号,供应数量

create or replace view sj_view
as 
select sno, pno, qty
from spj
where jno in
      (select jno
       from j
       where jname = '三建'
      );

后记

最近刚学数据库操作,如果有错误或者哪里还有不足,希望大佬可以指出。

你可能感兴趣的:(数据库,oracle)