一、基础
1.1、角色
Oracle提供了三种标准的角色(role):CONNECT、RESOURCE和DBA。
- CONNECT角色:
拥有connect角色的用户,可以与服务器建立连接会话(session,客户端和服务器连接,称为会话),主要应用于临时用户,不需要建表的用户。
- RESOURCE角色:
RESOURCE提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)等
- DBA角色:
DBA角色拥有所有的系统权限,包括无限制的空间限额和给其他用户授予各种权限的能力。用户system拥有DBA角色
一般情况下,一个普通用户,拥有CONNECT和RESOURCE两个角色就可以进行常规的数据库开发工作
1.2、连接身份
sysdba
即数据库管理员,权限包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制、管理功能、创建数据库。sys用户必须用sysdba身份才能登录,system用户可以用普通身份登录。
sysoper
即数据库操作员,权限包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制。
normal
即普通用户,权限只有查询某些数据表的数据。默认的身份是normal用户。
1.3、Oracle数据类型
类型 | 含义 |
---|---|
CHAR(length) | 存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。 |
VARCHAR2(length) | 存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。 |
NUMBER(p,s) | 既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38为),s是指小数位数。 |
DATE | 存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年1月1日到公元后4712年12月31日。 |
TIMESTAMP | 不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。 |
CLOB | 存储大的文本,比如存储非结构化的XML文档 |
BLOB | 存储二进制对象,如图形、视频、声音等。 |
-
MySQL字符串:varchar类型
-
Oracle字符串:varchar2:类型
-
char和varchar2类型的区别
- char:固定长度
- varchar2:可变长度
1.4、NUMBER类型
格式 | 输入的数字 | 实际的存储 |
---|---|---|
NUMBER | 1234.567 | 1234.567 |
NUMBER(6,2) | 123.4567 | 123.46 |
NUMBER(4,2) | 12345.67 | 输入的数字超过了所指定的精度,数据库不能存储 |
1.5、日期类型
对于日期类型,可以使用sysdate内置函数可以获取当前的系统日期和时间,返回DATE类型,用systimestamp函数可以返回当前日期、时间和时区。
1.6、dual表
Oracle的查询中,必须使用“select 列… from 表”的完整语法,当查询单行函数的时候,from后面使用DUAL表,dual表在系统中只有一行一列,该表在输出单行函数时为了select…from的语法完整性而使用。
SELECT SYSDATE,SYSTIMESTAMP FROM DUAL
二、基本操作
2.1、用户管理
2.1.1、创建用户
语法:CREATE USER 用户名 IDENTIFIED BY 口令 [ACCOUNT LOCK|UNLOCK]
CREATE USER jerry IDENTIFIED BY tom ACCOUNT LOCK; --用户名不能用数字开头
2.1.2、解锁用户
语法:ALTER USER 用户名 ACCOUNT LOCK|UNLOCK
alter user jerry account unlock;
2.1.3、修改密码
语法:ALTER USER 用户名 IDENTIFIED BY 新密码
alter user jerry identified by newpass;
2.1.4、删除用户
drop user jerry;
2.1.5、授权其他用户访问表
语法:grant 权限 on 表 to 用户
/*scott用户的dept表授权给用户*/
grant all on dept to 用户名;
/*sjx用户查看scott用户的dept表*/
select * from scott.dept;
提示:必须写用户.表名,例如本例中的scott.dept;
2.1.6、收回某用户对某表的权限
语法:revoke 权限 on 表 from 用户
/*收回授予用户的dept表的所有权限*/
revoke all on dept from 用户;
2.2、数据库管理
2.2.1、导入sql
@导入scott脚本