数据的定义、查询、更新以及视图操作

  1 --外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出
  2 --select * from pd left/right/full join pds on pd.id = pds.dish_id
  3 插入操作
  4 
  5 1、插入元组
  6   7 2、插入子查询结果
  8 --[例4]  对每一个系,求学生的平均年龄,并把结果存入数据库。
  9 --建表
 10 create table dept_age
 11 (
 12     sdept char(15),
 13     avg_age smallint,
 14     primary key(sdept)
 15 )
 16 --插入数据
 17 insert into dept_age
 18 select sdept, avg(sage)
 19 from student
 20 where sdept is not null
 21 --RDBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则
 22 group by sdept
 23 修改操作
 24 1、修改某一个元组的值
 25 update student
 26 set sage = 22
 27 where sno = '200215121'
 28 2、修改多个元组的值
 29 update student
 30 set sage = sage + 1
 31 --[例7]  将计算机科学系全体学生的成绩置零。
 32 update sc
 33 set grade = 0
 34 where 'cs' = 
 35 (
 36     select sdept
 37     from student s
 38     where s.sno = sc.sno
 39 )
 40 [例10]  删除计算机科学系所有学生的选课记录。
 41 delete 
 42 from sc
 43 where 'cs' = 
 44 (
 45     select sdept
 46     from student s
 47     where s.sno = sc.sno
 48 )
 49 ---------------------------------
 50 视图
 51 
 52 视图的特点:
 53 1、虚表,是从一个或几个基本表(或视图)导出的表
 54 2、只存放视图的定义,不存放视图对应的数据
 55 3、基表中的数据发生变化,从视图中查询出的数据也随之改变
 56 
 57 视图的定义:
 58 -- [例1]  建立信息系学生的视图。
 59 alter view is_student
 60 as
 61 select sno, sname, sage, sdept
 62 from student
 63 where sdept = 'is'
 64 with check option
 65 [例3]  建立信息系选修了1号课程的学生视图。
 66 create view is_s1(sno, sname, grade)
 67 as
 68 select s.sno, sname, grade
 69 from student s, sc
 70 where sdept = 'is' and s.sno = sc.sno and sc.cno = '1'
 71 --[例4]  建立信息系选修了1号课程且成绩在90分以上的学生的视图。
 72 alter view is_s2
 73 as
 74 select sno, sname, grade
 75 from is_s1
 76 where grade >= 50
 77 --[例5]  定义一个反映学生出生年份的视图。
 78 create view bt_s(sno, sname, sbirth)
 79 as
 80 select sno, sname, 2019 - sage
 81 from student
 82 --[例6]  将学生的学号及他的平均成绩定义为一个视图
 83 create view s_g(sno, avgscore)
 84 as
 85 select sno, avg(grade)
 86 from sc
 87 group by sno
 88 --[例7]将Student表中所有女生记录定义为一个视图
 89 create view f_student(sno, sname, ssex, sage, sdept, total)
 90 as
 91 select *
 92 from student
 93 where ssex = ''
 94 --缺点:修改基表Student的结构后,Student表与F_Student视图的映象关系被破坏,导致该视图不能正确工作。
 95 alter table student
 96 drop column asd
 97 
 98 删除视图
 99 drop view xxx
100 更新视图
101 --[例12]  将信息系学生视图IS_Student中学号200215122的学生姓名改为“刘辰”。
102 update is_student
103 set sname = '刘辰'
104 where sno = '200515004'
105 --[例13]  向信息系学生视图IS_S中插入一个新的学生记录:200215129,赵新,20岁
106 insert into is_student
107 values('200215129', '赵欣', 20, 'is')
108 --[例14]删除信息系学生视图IS_Student中学号为200215129的记录 
109 delete from is_student
110 where sno = '200515004'--基本表同时也删除
111 --更新视图的限制:一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新
112 --例如:
113 UPDATE  S_G
114 SET Gavg=90
115 WHERE  Sno= '200215121'
116 
117 视图的作用:
118 1. 视图能够简化用户的操作
119 2. 视图使用户能以多种角度看待同一数据 
120 3. 视图对重构数据库提供了一定程度的逻辑独立性 
121 4. 视图能够对机密数据提供安全保护
122 5. 适当的利用视图可以更清晰的表达查询

 

posted @ 2019-11-21 16:54  滚烫的青春  阅读(796)  评论(0编辑  收藏  举报