zoukankan      html  css  js  c++  java
  • 数据的定义、查询、更新以及视图操作

      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. 适当的利用视图可以更清晰的表达查询
  • 相关阅读:
    linux下挂载硬盘出错的解决方法
    linux下解压缩文件中文乱码问题的解决
    VLC播放器的快捷键(shutcut)
    PGSQL 日期时间的比较
    PGSQL 字符串作为查询参数的处理
    pqsql 防注入
    js字符数组转化为数字数组
    js去除字符串的前后空白
    使用gravatar生成头像
    js删除数组的某个元素
  • 原文地址:https://www.cnblogs.com/liuwenhan/p/11906696.html
Copyright © 2011-2022 走看看