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的语法完整性而使用。