Oracle数据库---序列、视图、索引

拼搏现实的明天。 2023-09-30 03:06 145阅读 0赞

oracle数据库管理及其应用

    • 一、序列:sequence
    • 二、视图:view
      • 视图可以DML(数据操纵语言)操作的条件
    • 三、索引:index

一、序列:sequence

  1. --序列:sequence,产生序列号
  2. --使用属性的默认值创建
  3. --start with:起始序号为1
  4. --increment by:步长,等差
  5. (--increment by定义序列的差值,默认为1,如果increment by 为负值则序列按照此差值递减)
  6. maxvalue:最大值
  7. --minvlue:最小值
  8. --cycle :循环(定义存放序列的内存块的大小,默认为20),nocycle不循环
  9. --cache:预产生的序号数 nocache:不按预产生序号,20
  10. --创建一个序列
  11. creat sequence squ1; --创建一个序列
  12. create sequence squ2
  13. start with 10 - -开始序号10
  14. increment by 2; --等差2
  15. create sequence squ3
  16. start with 12 - -开始序号12
  17. increment by 3; --等差3
  18. maxvalue 2000
  19. minvalue12
  20. nocache
  21. nocycle
  22. --访问序列
  23. --nextvalu:产生新的序列号返回
  24. --currval:返回当前序号
  25. --nextval应定义在currval之前
  26. select squ3.nextval from dual;
  27. select squ1.nextval from dual;
  28. --修改序列:alter
  29. --注意:序列一旦使用,start with 不能修改,其它属性可以修改
  30. -- 修改只能影响后续的序列号
  31. alter sequence squ3 increment by 2;
  32. alter squ3.currval from dual;
  33. alter squ3.nextval from dual;
  34. --查看序列信息
  35. select * from all_sequence;
  36. select * from dba_sequence;

二、视图:view

  1. 视图是虚拟的表,也称为‘存储的查询’。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。数据本质上也是存储在表中。
  2. 视图具有以下优点:
  3. 1、可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。
  4. 2、可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。
  5. 3、限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。
  6. 4、从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。
  7. --创建视图——语法结构
  8. create[or replace] [{
  9. force|noforce}] view view_name
  10. as
  11. select查询语句
  12. [with read only constraint]
  13. --基于students表和dept表创建的视图
  14. create view view_name
  15. as
  16. select查询语句
  17. create view view_name_info
  18. as
  19. select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno;
  20. --重新命名列,修改视图or replace
  21. create or replace view view_students_info(学号,姓名,年龄,性别,院系)
  22. as
  23. select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno;
  24. --force:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用
  25. --忽视查询错误,强制创建视图
  26. create force view v_t
  27. as
  28. select * from temp;
  29. --创建temp表后视图可用
  30. create table temp(id number(3,0));
  31. select * from temp;
  32. --只读视图with read only,只能查询,不能通过视图修改基表的数据
  33. create or replace view view_students_info(学号,姓名,年龄,性别,院系)
  34. as
  35. select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno
  36. with read only;
  37. --根据视图进行查询
  38. select * from view_name;
  39. select * from view_name_info;
  40. --在创建视图是没有with read only 时,根据视图进行修改
  41. --以视图中列的名称为基准
  42. update view_students_info set 姓名='name' where 学号='2015010001';
  43. update view_students_info set 年龄 = 17 where 学号='2015010001';
  44. select * from view_students_info ;
  45. --with check option:检查修改的数据是否满足创建视图查询的条件
  46. create or replace view view_students_info1(学号,姓名,年龄,性别,院系)
  47. as
  48. select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno where s.age>18;
  49. update view_students_info1 set 年龄 = 17 where 学号='2015010001';
  50. --注意,此时可以修该,但在视图中无法查询
  51. select * from view_students_info;
  52. create or replace view view_students_info2(学号,姓名,年龄,性别,院系)
  53. as
  54. select s.sno,s.sname,s.age,s.ssex,d.dname from students s join dept d s.sno=d.sno where s.age>18 with check option;
  55. update view_students_info2 set 年龄 = 17 where 学号='2015010001';
  56. --注意,此时会报错,不允许修改
  57. --删除视图
  58. drop view 视图名;

视图可以DML(数据操纵语言)操作的条件

  1. 1、只能修改一个底层的基表
  2. 2、如果修改违反了基表的约束条件,则无法更新视图
  3. 3、如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图
  4. 4、如果视图包含伪列或表达式,则将无法更新视图
  5. 伪列:伪列的操作类似于表中的列,但是它并不存实际保存在表中。你可以对其进行查询操作,但是你却不能对其进行增加、修改或者是删除,一个伪列也类似于一个没有参数的函数。但是,没有参数的函数通常在结果集中为每一列返回相同的结果,伪列通常为每一列返回不同的值。
  6. 具体参考:https://blog.csdn.net/ziwen00/article/details/11672233?biz_id=102&utm_term=oracle%E4%BC%AA%E5%88%97&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-11672233&spm=1018.2118.3001.4187
  7. 5、在连接视图中不能有Order byGroup by等排序、分组语句。

三、索引:index

  1. --创建索引
  2. create index 索引名 on table 表名(column1,column2);
  3. --重命名索引
  4. alter index 原索引名 rename to 新索引名;
  5. --重建索引
  6. 一、删除原来的索引,重新建立索引
  7.    二、alter index 索引名 rebuild;
  8. --查看索引
  9. select * from all_indexes where table_name='表名';
  10. --删除索引
  11. drop index 索引名;
  12. --唯一索引
  13. create unique index 索引名 on table 表名(column1,column2);

发表评论

表情:
评论列表 (有 0 条评论,145人围观)

还没有评论,来说两句吧...

相关阅读