本文为原创,如需转载,请标明出处 http://www.cnblogs.com/gudu1/p/7601765.html

---- 用户权限

1.创建表空间 (创建用户之前需要创建表空间和临时表空间,若是没有创建,10g之前默认是system永久性表空间,11g改为users永久性表空间)

  create tablespace a_user

  datafile 'D:\a_user_space.dbf'

  size 10M

  autoextend on;

2.创建临时表空间(默认为temp临时表空间)

  create temporary tablespace a_user_temp

  tempfile 'D:\a_user_temp.dbf'

  size 10M

  autoextend on;

3.创建用户 (需要指定用户名,密码,表空间和临时表空间)

  create user a_user identified by 123456

  default tablespace a_user

  temporary tablespace a_user_temp;

4.授权 (授权需要在数据库管理员登陆下进行授权,否则会提示你权限不足)

  grant connect,resource to a_user;

以上就是创建一个新的用户 并且指定表空间和临时表空间,假如现在一个用户想要访问另一个用户下的表怎么办呢? 很简单,给他权限就好。

--假设现在有两个用户user1和user2,然后user1下有张表emp,接下来我们把访问emp表的权限授给user2(注意:这里登录的用户要么是管理员要么是user1)

grant select,update,delete,insert on emp to user2;

-- 突然有一天user1和user2闹掰了,俩人不和,user1不给user2访问权限了,怎么办?

revoke select,update,delete,insert on emp from user2;

以下是一些简单Oracle操作command:

  删除用户:drop user user1 cascade;

  修改用户密码:alter user user1 identified by 123456;

  删除表空间:drop tablespace a_user;

  修改表空间大小:① alter tablespace a_user datafile 'D:\a_user_space' resize 20M; ② alter tablespace a_user add datafile 'D:\a_user_space2.dbf' size 10M autoextend on;

  更多常用函数:http://www.cnblogs.com/rencongums/articles/5662537.html

 ---- Oracle序列使用

  我们都知道SQLServer,MySql等数据库都能够添加自动增长列Identity,然而Oracle跟那些不太一样,它是通过添加一个序列,插入数据的时候使用序列来自动生成顺序列,不多废话。下面是语法  ↓

 --创建序列

  CREATE SEQUENCE sequence  //创建序列名称

   [INCREMENT BY Integer]

   [START WITH Integer]

   [{MAXVALUE Integer | NOMAXVALUE}]

   [{MINVALUE Integer | NOMINVALUE}]

  [{CYCLE | NOCYCLE}]

   [{CACHE Integer | NOCACHE}];

INCREMENT BY :用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。

START WITH :定义序列的初始值(即产生的第一个值),默认为1。

MAXVALUE :定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。

MINVALUE : 定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。

NOMAXVALUE: 如果指定了NOMAXVALUE,Oracle将升序序列的最大值设为10^27,将降序序列的最大值设为-1,。这是默认选项。

NOMINVALUE:如果指定了NOMINVALUE,Oracle将升序序列的最小值设为1,将降序序列的最小值设为-10^26,。这是默认选项。

CYCLE和NOCYCLE : 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;最小值为1。对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。

CACHE:使用CACHE选项时,该序列会根据序列规则生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统会再次生成一组序列号保存在缓存中,这样可以提高生成序列号的效率。ORACLE会默认生成20个序列号。

NOCACHE:不预先在内存中生成序列号。

--删除序列    

  drop sequence seq_name;   

--修改序列

   Alter sequence seq_name 

    [INCREMENT BY n]

   [{MAXVALUE n | NOMAXVALUE}]

   [{MINVALUE n | NOMINVALUE}]

  [{CYCLE | NOCYCLE}]

   [{CACHE n | NOCACHE}];

 注意: 不能修改序列的START WITH属性。在修改序列时,应注意升序序列的最小值应小于最大值。

%%%%%%% 使用序列设置主关键字时,在数据库迁移时需要注意。由于迁移后的表中已经存在数据,如果不修改序列的起始值,将会在表中插入重复数据,  违背主键约束。所有在创建序列时要修改序列的起始值。

---- Oracle同义词使用

  优点:

    1)简化SQL语句

      2)隐藏对象的名称和所有者

      3)为分布式数据库的远程对象提供了位置透明性

      4)提供对对象的公共访问

  分类:私有同义词和共有同义词

   创建:

      私有:create [or replace]  synonym synonym_name for table_name;

      公有:create [or replace] public synonym synonym_name for table_name;

  删除:

      私有:drop synonym synonym_name;

      公有:drop public synonym synonym_name;

   注意:创建同义词同样需要管理员授权,grant create synonym to user1;

  --- 举个例子,还是上面emp表,用户是user1和user2,user1为emp表创建了私有同义词,这个时候user2是否能够访问到呢?答案肯定是不能,如果创建了公有呢?结果还是不能,很纳闷吧^_^,还差一个权限

grant select on emp to public; 授予权限之后,你再试试。 如果某个用户下有张表你希望所有人都能够访问,这个时候你就可以使用公有同义词,你总不能使用Grant select on emp to user2; 这个吧,那得有多烦啊,每创建一个用户,你都要授权。

---- Oracle索引使用

  索引是与表关联的可选结构,是一种快速访问数据的途径,可提高数据库性能。数据库可以明确地创建索引,以加快对表执行SQL语句的速度。当索引键作为查询条件时,该索引将直接指向包含这些行的位置。

即便删除索引,也无须修改任何SQL语句的定义。

   索引分类:

    物理分类     逻辑分类
分区或非分区索引 单列或组合索引
B树索引 唯一或非唯一索引
正常或反向键索引 基于函数索引
位图索引   

  

   创建索引:

    B树:create index index_name on table_name(column_list);

    组合:create index index_name on table_name(column_list);

    反向键索引:create index index_name on table_name(column_list) reservse;

    位图索引:create bitmap index index_name on table_name(column_list);

    唯一索引:create unique index index_name on table_name(column_list);

  删除索引:drop index index_name;

  重建索引:alter index index_name rebuild noreverse;(将反向键索引更改为B树索引)

  建立索引原则:

    1)频繁搜索的列可以作为索引。

    2)经常排序、分组的列可作为索引。

    3)经常用作连接的列(主键 / 外键)可作为索引。

    4)将索引放在一个单独的表空间中,不要放在有回退段、临时段和表的表空间中。

    5)对大型索引而言,考虑使用 NOLOGGING子句创建大型索引。

    6)根据业务数据发生的频率,定期重新生成或重新组织索引.并进行碎片整理。

    7)仅包含几个不同值的列不可以创建为B树索引,可根据需要创建位图索引。

    8)不要在仅包含几行的表中创建索引。

  

---- Oracle分区

  分类:范围分区、列表分区、散列分区、复合分区、间隔分区和虚拟列分区等。

   下面 介绍一下范围分区 和 间隔分区--

   范围分区:

    应用范围比较广的表分区方式,它以列的值作为分区的划分条件,将记录存放到列值所在的range分区中。

   创建:

    Create  table user

    (

      user_id number,

      user_name number,

      birthday date not null

      .........

    )

    partition by range(birthday)

    (

      partition p1 values less than (to_date('2017-01-01'),'yyyy-MM-dd'),

      partition p1 values less than (to_date('2016-01-01','yyyy-MM-dd')),

      partition p3 values less than (maxvalue)

    )

   添加:

    alter table table_name add partition p4 less than (to_date('2015-01-01','yyyy-MM-dd'));

  合并:

    alter table table_name merge partitions p1,p2 into partition p2;

   删除:

    alter table table_name drop partition p1;

  

  间隔分区:

    间隔分区是范围分区的一种增强功能,可以实现范围分区的自动化。

    创建:

      Create  table user

      (

      user_id number,

      user_name number,

      birthday date not null

      .........

      )

      partition by range(birthday)

      interval(numtoyminterval(1,'MONTH'))

      (partition p1 values less than (to_date('2016-01-01','yyyy-MM-dd')));

    解释:

      1)只需创建第一个开始分区,如上面的P1.

      2)INTERVALONUMTOYMINTERVAL(3, 'MONTE')语句中,  INTERVAL 代表“间隔即按照后面括号中的定义间隔添加分区。

      3)NUMTOYMINTERVAL(3, 'MONTH')表示每3个月为一个分区。

        NUMTOYMINTERVAL(n,'Interval_unit')函数用于将n转换成 interval_unit 所指定的值。

        interval_unit 可以为 YEAR 或 MONTE 。

        举例:

        NUMTOYMINTERVAL(1,'YEAR'):每1年为一个分区。

        NUMTOYMINTERVAL(1, 'MONTH'):每1个月为一个分区。

        与该类型相关的函数还有 NUMTODSINTERVAL(n, 'interval_unit'),用于将n转换成 interval_unit 所指定的值。

        interval_unit 可以为 DAY , HOUR ,  MINUTE ,  SECOND 。

        注意该函数不支持 YEAR 和 MONTH 。

      4)系统会根据数据自动创建分区。

  

      未完待续。。。。。。。。。。。。。

  

最新文章

  1. iOS开发中设置UITextField的占位文字的颜色,和光标的颜色
  2. ios app 提交评审注意事项
  3. centos 7 中 tomcat 安装
  4. Servlet容器的启动过程
  5. DB2 重新设定表自增字段的当前值
  6. 【记录】让人淡疼的BUG之参数传送错误
  7. char* 和 wchar_t* 如何互相转换
  8. WPF 限制Textbox输入的内容
  9. 四、 添加模型Model(ASP.NET MVC5 系列)
  10. smack4中文文档
  11. .net core 并发下的线程安全问题
  12. syntax error near unexpected token `do(写的shell脚本出现格式问题)--->1.问题2.展示信息3.解决方案
  13. MAVEN项目不扫描mybatis的mapper.xml问题
  14. django的视图函数
  15. 微信硬件平台(八) 3-0ESP8266向微信服务器请求设备绑定的用户
  16. redis分布式锁小试
  17. 【leetcode】278. First Bad Version
  18. Inside i++
  19. 【C/C++】exit不兼容解决方案
  20. 两个变量交换的四种方法(Java) 七种方法(JS)

热门文章

  1. 关于所学,及JNI问题
  2. Intel 8086 标志寄存器及JCC指令表
  3. Selenium实战(五)——HTML测试报告
  4. Spring boot mvn
  5. Jquery开发电商网站实战(带源码)
  6. Linux 常用命令 服务器间scp 用户 export 创建文件、软连接
  7. 用 ArcMap 发布 ArcGIS Server Feature Server Feature Access 服务
  8. Python类的特殊成员方法
  9. How to Install Oracle Java 11 on Ubuntu 18.04 LTS (Bionic) Written by Rahul, Updated on April 3, 20
  10. php 文件追加写入