Oracle权限和数据类型

oracle创建用户:

CREATE USER 用户名 IDENTIFIED BY 口令 [ACCOUNT LOCK|UNLOCK]

【注】LOCK|UNLOCK创建用户时是否锁定,默认为锁定状态。锁定的用户无法正常的登陆进行数据库操作。

  比如创建一个用户tom,密码是aaa,默认为非锁定,格式是:

  SQL>CREATE USER tom

    2  IDENTIFIED BY aaa

    3  ACCOUNT UNLOCK;

【注】Oracle在SQL*Plus中的命令以分号结尾,代表命令完毕并执行,系统同时会把该命令保存在缓存中,缓存中只保存最近执行过的命令,如果重新执行缓存中的命令,直接使用斜杠符。如果命令不以分号结尾,该命令只是写入缓存保存起来,但是并不执行。

  尽管用户成功创建,但是还不能正常登陆oracle数据库系统,因为该用户还没有任何权限。如果用户能够正常登陆,至少需要CREATE SESSION 系统权限。

  Oracle用户对数据库管理或对象操作的权利,分为系统权限和数据库对象权限。系统权限比如:CREATE SESSION,CREATE TABLE等。拥有系统权限的用户,允许拥有相应的系统操作。数据库对象权限,比如对表中的数据进行增删改操作等,拥有数据库对象权限的用户可以对所拥有的对象进行相应的操作。

  数据库角色(role),数据库角色就是若干个系统权限的集合,常用的几个角色如下:

  • connect角色:主要应用在临时用户,特别是那些不需要建表的用户,通常只赋予他们connect role。connect是使用Oracle的简单权限,拥有connect角色的用户,可以与服务器建立连接会话(session,客户端对服务器连接,称为会话)。
  • resource角色:更可靠和正式的数据库用户可以授权resource role。resource提供给用户另外的权限以创建他们自己的表、序列、过程、触发器、索引等。
  • dba角色:dba role拥有所有的系统权限,包括无限制的空间限额和给其他用户授权的能力。用户system拥有dba角色。

  一般情况下,一个普通的用户,拥有connect和resource两个角色即可进行常规的数据库开发工作。

  可以把某个权限授予某个角色,可以把权限、角色授予某个用户。系统权限只能由dba用户授权,对象权限由拥有该对象的用户授权,授权语法为:

  GRANT 角色|权限 TO 用户(角色)

  回收权限的语法是:

  REVOKE 角色|权限 FROM 用户(角色)

  修改用户密码的语法是:

  ALTER USER 用户名 IDENTIFIED BY 新密码

  修改用户处于锁定(非锁定)状态:

  ALTER USER 用户名 ACCOUNT LOCK|UNLOCK

Oracle数据类型:

  • CHAR(length):存储固定长度的字符串。参数length指定了长度,如果存储的字符创长度小于length,用空格填充。默认长度是1,最长不超过2000字节。
  • VARCHAR2(length):存储可变长度的字符串。length指定了该字符串的最大长度。默认长度为1,最长不超过4000字符。
  • VARCHAR(length):varchar和varchar2目前没有区别,不过Oracle以后的版本就不支持varchar类型,如果想新版本的数据库兼容,就不要用varchar,如果想和其他的数据库兼容就不要用varchar2.
  • NUMBER(p,s):既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38位),s是指小数位数。
  • DATE:存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公园前4712年1月1日到公元后4712年12月31日。
  • TIMESTAMP:不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。
  • CLOB:存储大的文本,比如存储非结构化的xml文档。
  • BLOB:存储二进制对象,如图形、视频、声音等。

对应NUMBER类型的示例:

格式 输入的数字 实际的存储
NUMBER 1234.567 1234.56
NUMBER(6,2) 123.4526 123.45
NUMBER(4,2) 12345.67 输入的数字超过了所指定的精度,数据库不能存储

  对于日期类型,可以使用sysdate内置函数可以获取当前的系统日期和时间,返回DATE类型,用systimestamp函数可以返回当前日期、时间和时区。

  SELECT SYSDATE,SYSTIMESTAMP FROM DUAL

  Oracle的查询中,必须使用“select 列···from 表”的完整语法,当查询单行函数的时候,from后面使用DUAL表,dual表在系统中只有一行一列,该表在输出单行函数时为了select...from的语法完整性而使用。

上一篇:CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (二)PHP(PHP-FPM)安装篇


下一篇:TypeScript设计模式之工厂