数据库对象

用户模式:指数据库用户所创建和存储数据对象的统称。在访问其它用户模式的数据库对象时需加上用户模式。

如:scott.emp, scott.dept等。

数据库对象包括:表、视图、索引、序列、目录、同义词、数据库用户、存储过程、函数、触发器等。

同义词

同义词是现有数据库对象的一个别名。

  1. 简化SQL语句
  2. 隐藏对象的名称和所有者

同义词分为私有和公有的

--创建同义词得通过sys进行授权
grant create [any] synonym to $username$; --授权,创建私有同义词
grant create public synonym to $username$;--授权,创建公有同义词

私有:只有当前用户才能使用

--创建私有同义词
create [or replace] synonym 同义词名称 for 对象(如:表,视图等);
drop synonym $同义词名$; --删除同义词 create or replace synonym emp for employee;

公有:全部的用户都能使用

--创建公有同义词
create [or replace] public synonym 同义词名称 for 对象(如:表);
drop public synonym $同义词名$;--删除同义词 create or replace public synonym emp for employee;

序列

序列是用于生成唯一、连续序号的对象,如:1,2,3.......

**作用: **

序列常用于生成表的主键值、唯一键的值以及需要连续序号的场合。

补充:

序列可以是升序的,也可以是降序的。

一个序列产生的值可以同时供多个表使用,如果有这个需要的话。

创建序列:

--语法
CREATE sequence序列名
START WITH 初始值
【INCREMNT BY 步长】 --步长为负数,则是降序
【MAXVALUE 最大值】
【MINVALUE 最小值】
【CYCLE/NOCYCLE】
【CACHE/NOCACH】默认oracle缓存20个序列值
create sequence emp_seq
start with 1; select emp_seq.nextval from dual;
--先执行,序列才会有数据,从1开始,步长默认为1,执行一次,序列的当前数值就会自加1 slect emp_seq.currval from dual;--返回当前的数值 --创建序列
create sequence emp_seq
start with 8001; --没加increment by 默认步长为1 --最初创建序列时初始值是没有的,第一次访问序列必须先访问它的nextval属性
select emp_seq.nextval from dual;
select emp_seq.nextval,emp_seq.currval from dual; --修改序列,不能修改初始值(start with x)
select max(empno) from emp; --删除序列
drop sequence emp_seq; --在插入时使用序列来生成主键值
insert into employee(empno,ename,job,sal) values(emp_seq.NEXTVAL, 'james','CLERK',3999); --生成序列的下一个值
select emp_seq.nextval from dual; --访问序列的当前值
select 'XYZ-'||emp_seq.currval from dual;

视图

视图,被称为虚拟表,可以简化select语句

作用:

  • 提供了另外一种级别的表安全性
  • 隐藏的数据的复杂性
  • 简化的用户的SQL语句
  • 隔离基表(创建视图时用到的表)结构的改变
  • 通过重命名列,从另一个角度提供数据
  • 数据独立性

和之前的序列一样,需要sys进行授权

grant create view to $username$
--相当于复制一个表
create view emp_view as select * from employee
--隐藏了其他的属性,只显示员工编号,姓名以及部门
create view emp_view as select empno,ename,deptno from employee
--复杂查询的结果当成一个表
--列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,和工资等级
--如果需要使用当前的结果,使用select语句就简单许多
create or replace view emp_sal_vw
as
select e.empno,
e.ename,
d.dname dept_name,
m.empno as mgrNo,
m.ename as manager,
s.grade
from employee e,
employee m,
department d,
salgrade s
where e.mgr=m.empno(+)
AND e.deptno=d.deptno
AND e.sal>(select avg(sal) from employee)
AND e.sal BETWEEN s.losal AND s.hisal;

索引

查询时候数据量大的时候,通过索引可以提高查询的效率(百万条数据级别),在常用的列名(字段)创建索引

--创建索引
create [unique] index $indexName$ on $tablename$(列名1,列名2...)

唯一索引和普通索引

索引有唯一索引和普通索引,如在多个列上创建索引则成为组合索引

唯一索引一般在创表的时候,把某列设置某个主键,系统就会自动为该列创建唯一索引

--普通索引
create index hiredate_idx on employee(hiredate);
--组合索引
create index emp_comp on employee(mgr,deptno);
--组合索引的顺序可以是任意的,不过,此顺序会影响查询的时候是否会启用索引查询 --下面两条是会启用索进行查询
select mgr,deptno from employee;
select mgr from employee; --下面两条是会不会启用索进行查询
select deptno from employee;
select deptno,mgr from employee;

函数索引

create index emp_job_fun on employee(lower(job));

--不启用索引查询
select * from employee where job='CLERK'; --启用索引查询
select * from employee where lower(job)='clerk';

oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词的更多相关文章

  1. oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词

    数据库对象 用户模式:指数据库用户所创建和存储数据对象的统称.在访问其它用户模式的数据库对象时需加上用户模式. 如:scott.emp, scott.dept等. 数据库对象包括:表.视图.索引.序列 ...

  2. Oracle学习笔记十四 内置程序包

    扩展数据库的功能 为 PL/SQL 提供对 SQL 功能的访问 用户 SYS 拥有所有程序包 是公有同义词 可以由任何用户访问 一些内置程序包 程序包名称 说明 STANDARD和DBMS_STAND ...

  3. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  4. Java中执行存储过程和函数(web基础学习笔记十四)

    一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...

  5. (C/C++学习笔记) 十四. 动态分配

    十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...

  6. JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)

    1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...

  7. 前端学习(三十四)对象&模块化(笔记)

    人,工人 //类的定义    function Person(name,age){ //构造函数        //工厂模式        //1.原料        //var obj = new ...

  8. python cookbook第三版学习笔记十四:类和对象(五)代理类以及内存回收

    代理类: 代理类的作用其实有继承有些类似,如果你想将某个实例的属性访问代理到内部另外一个实例中去,可以用继承也可以用代理.来看下代理的应用: class A:     def spam(self,x) ...

  9. MySQL高级学习笔记(四):索引优化分析

    文章目录 性能下降 SQL慢 执行时间长 等待时间长 查询语句写的烂 查询数据过多 关联了太多的表,太多join 没有利用到索引 单值 复合 服务器调优及各个参数设置(缓冲.线程数等)(不重要DBA的 ...

随机推荐

  1. 后台返回平铺数据,如何转换成树形json并渲染树形结构,ant tree 异步加载

    如何后台返回对象数组(平铺式) 1.根据字段标识(板块)获取根节点 ### initTreeData(dataOrg){ var resultArr=dataOrg[0] var secArr=[]; ...

  2. cmake 指定输出目录

    $ mkdir ~/cpp-netlib-build $ cd ~/cpp-netlib-build $ cmake -DCMAKE_BUILD_TYPE=Debug \ > -DCMAKE_C ...

  3. minGw64编译Qt时遇到too many sections问题

    minGw64编译Qt时遇到too many sections问题: 修改\Src\qtbase\mkspecs\win32-g++\qmake.conf中 QMAKE_CFLAGS         ...

  4. 【分块】[HNOI2010]弹飞绵羊&分块大法祭

    分块(似乎还有一种动态树(LCT)做法) 第一次学习分块,似乎有点小激动 这是黄学长的分块入门博客「分块」数列分块入门1 – 9 by hzwer 题目描述 某天,Lostmonkey发明了一种超级弹 ...

  5. ZJOI2018游记Round1

    广告 ZJOI2018Round2游记 All Falls Down 非常感谢学弟学妹们捧场游记虽然这是一篇假游记 ZJOI Round1今天正式落下帷幕.在这过去的三天里遇到了很多朋友,见识了很多有 ...

  6. C语言之extern、const、volatile

    extern: extern修饰变量,声明该变量为外部文件的全局变量.若使用外部全局变量,必须用extern声明. extern修饰函数,声明该函数为外部函数.extern修饰的函数形参必须与原函数一 ...

  7. python爬虫入门四:BeautifulSoup库(转)

    正则表达式可以从html代码中提取我们想要的数据信息,它比较繁琐复杂,编写的时候效率不高,但我们又最好是能够学会使用正则表达式. 我在网络上发现了一篇关于写得很好的教程,如果需要使用正则表达式的话,参 ...

  8. 【LeetCode】Path Sum(路径总和)

    这道题是LeetCode里的第112道题.是我在学数据结构——二叉树的时候碰见的题.题目要求: 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和 ...

  9. PAT Basic 1041

    1041 考试座位号 每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码 ...

  10. Mac VMware fusion nat 外网映射

    当我们在使用VMware fusion NAT模式时,相当于形成了一个虚拟的局域网VLAN,这时虚拟机可以对外通信,但是nat对外隐藏了内网,外网访问虚拟机的时候就会遇到问题,比如ping ,ssh ...