数据库对象

用户模式:指数据库用户所创建和存储数据对象的统称。在访问其它用户模式的数据库对象时需加上用户模式。
如: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. 在虚拟机中使用Git

    自己如何从安装虚拟机到使用git进行项目代码版本管理的部分教程因为是自学所以没有好的教程只能自己进行百度,网上的教程太多了但都是只是一个模块没有从头到尾详细的教程,我们如果有个详细的教程本来只需花很少 ...

  2. Apache Kafka(十一)Topic 的配置与组成

    Topic 的配置与组成 之前我们仅主要介绍了Kafka Producer与Kafka Consumer 的相关配置,而未详细介绍过有关topic的配置.Topic的配置在Kafka 使用中也至关重要 ...

  3. AAC MDCT

    AAC采用MDCT进行时频变换. 在编码端,以block为单位取出N个sample,乘以合适的window function后再进行MDCT.N通常为2048,256. 每个输入到MDCT的sampl ...

  4. macos 杀掉端口 命令行

    sudo lsof -i:3000 kill 11111 1111就是pid下面的数字

  5. codeforce D. Shortest Cycle(floyd求最短环)

    题目链接:http://codeforces.com/contest/1206/problem/D 给n个点,如果点a[ i ] &a[ j ] 不为0,则点a[ i ] 和 a[ j ] 直 ...

  6. 动态IL织入框架Harmony简单入手

    Harmony是一个开放源代码库,旨在在运行时替换.修饰或修改任何现有C#方法.它的主要用在用Mono语言编写的游戏和插件,但是该技术可以与任何.NET版本一起使用.它还照顾对同一方法的多次更改(它们 ...

  7. DataGridView绑定数据源后添加行

    本文链接:https://blog.csdn.net/u012386475/article/details/88639799 在已经绑定数据源时,无法以Add的方式方式添加行,会报错 解决方法一: D ...

  8. BFS与食物链条数

    最近学校生物在教能量流动,因此离不开食物网,也就离不开食物链. 那么问题来了,给出食物网(DAG),怎么求食物链条数呢? 怎么来的?首先,找到同时被2个以上生物捕食的被捕食者,求出:能量来源X(能量去 ...

  9. wampserver apache 403无权限访问 You don't have permission to access /index.html on this server

    今天接到要求 需要配置一下https 折腾好久 最后好还遇到了权限不够的问题 最后解决方案如下 我这边补充一下我的方法 我的apache是 2.4.23 版本 是由 wampserver集成的 在 h ...

  10. 吴裕雄 python 机器学习——支持向量机线性回归SVR模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm fr ...