Oracle中用户权限管理 数据类型

一,Oracle的用户管理

在 oracle 中要创建一个新的用户使用 create user 语句,一般是具有 dba(数据库管理员)的权限才能使用。

1) 创建用户

命令:create user 用户名 identified by 密码;

--创建用户:
--语法结构:create user 用户名 identified by 密码 【default tablespace 表空间名】【temporary tablespace temp】
create user hope identified by 123456;
create user hope1 identified by 123456 default tablespace users;
create user hope2 identified by 123456 default tablespace users temporary tablespace temp;

2) 给用户修改密码
如果给别人修改密码则需要具有 dba 的权限,或是拥有 alter user 的
系统权限命令:alter user 用户名 identified by 新密码

--修改用户密码:
--语法结构:alter user 用户名 identified by 密码
alter user hope identified by 654321;

3) 修改自己的密码

如果给自己修改密码可以直接使用命令:password 用户名
问题:创建好的用户无法正常登录?
oracle 中用户建立后是无法正常登录的,只有在数据库管理员(DBA)对用户分配相应的权限后,用户才可以登录。

2 删除用户
概述:一般以 dba 的身份去删除某个用户,如果用其它用户去删除用户则需要具有 drop user 的权限。
命令:drop user 用户名 [cascade]可选参数 cascade
在删除用户时, 注意: 如果要删除的用户,已经创建了表, 那么就需要在删除的时候
带一个参数 cascade; Cascade 有级联的作用

--删除用户:
--drop user 用户名【cascade】
drop user hope;
drop user hope cascade;

3. oracle 用户分配权限和角色
概述:创建的新用户是没有任何权限的,甚至连登录的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用使令 grant,回收权限使用命令 revoke

赋权限基本语法:grant 权限/角色 to 用户名;
回收权限基本语法:revoke 权限/角色 from 用户名;

--权限和角色

--权限指执行特定类型SQL命令或访问其他对象的权利

--系统权限:允许用户执行某些数据库操作

--对象权限:允许用户对某一特定对象执行特定的操作

--角色是具有名称的一组权限的组合

--常用系统预定义角色

--CONNECT:临时用户

--RESOURCE:更为可靠和正式的用户

--DBA:数据库管理员角色,拥有管理数据库的最高权限

--一般情况下,普通用户,有connect和resource的角色就够了。

3.1 分配权限
语法:grant create 权限 to 用户名;
例如:给小明赋予会话的权限
sql> grant create session to xiaoming;
–给hope2赋予查询scott的emp表的权限

grant select on scott.emp to hope2;
grant select,update on scott.emp to hope2;

3.2 分配角色
也可以按 角色对用户分配权限
语法:grant 角色名 to 用户名;
例如:授予小明 resource 角色

sql> grant resource to xiaoming;
--赋予权限和角色
--语法结构:grant 角色1,角色2,。。。 to 用户
grant connect to hope2
grant connect,resource to hope2;

撤销角色和权限:

--语法结构:revoke 角色1,角色2,。。。from 用户
revoke resource from hope2;
revoke connect,resource from hope2;

3.3 oracle 中权限的概念
权限分为系统权限与对象权限。

系统权限 :是数据库管理相关的权限:
create session(登录权限)
create table(创建表权限)
create index(创建索引权限)
create view(创建视图权限)
create sequence(创建序列权限)
create trriger(创建触发器权限)

对象权限:
是用户操作数据对象相关的权限。
比如对表的增删改查(insert 增、delete 删、update 改、select 查);

3.4 角色
在 oracle 中角色分为:预定义角色和自定义角色;

预定义角色:把常用的权限集中起来,形成角色。常见的角色有:dba、connect、resource
等;

connnect 角色 :是授予用户的最基本的权利,能够连接到 oralce 数据库中,并在对其
他用户的表有访问权限时,做 SELECT、UPDATE、INSERTT 等操作。Create session–建立
会话;Alter session–修改会话;Create view–建立视图。Create sequence–建立序列等权限

resource 角色 :具有创建表、序列、视图等权限。Create table–建表;Create trigger–
建立促发器;Create procedure–建立过程;Create sequence—建立序列;Create type–建立类
型等权限;

dba 角色 :是授予系统管理员的,拥有该角色的用户就能成为系统管理员了,它拥有
所有的系统权限。
自定义角色:按需定制一定权限形成角色,可以作为预定义角色的补充。来满足用户的需求。
二,Oracle 数据类型
1 、 char(size)
存放字符串,它最大可以存放 2000 个字符,是定长。可以存储定长的字符串

例子:create table test1(name char(32));
说明:
test1 表中的 name 字段最多存放 32 个字符,
不足 32 个字符 oracle 会用空格补齐,如果超过会报错。

2 、 varchar 可以存储变长的字符串(不太常用)
2------ varchar2(size)
存放字符串,它最大可以存放 4000 个字符,是变长。
举例说明:

create table test2(name varchar2(16));
//test2 表中的 name 字段最多存放 16 个字符,实际有几个字符就占几个字符的空间,如果超过会报错。
注意:如果我们的数据的长度是固定的,比如编号(8 位),最好使用 char 来存放,因为这样存取的速度
区别:::
什么时候用char 什么时候用varchar(2); ??
  当已知字符串的长度的时候用char比较合适,不确定字符串长度时,用varchar2比较合适
-----nchar和nvarchar2可以存储Unicode字符集

3 、 number 型
存放整数,也可存放小数,是变长。number(p,s)//p 代表整个位数,s 代表小数位
说明:
number(5,2): 表示一个小数有 5 位有效数,2 位小数。范围-999.99~999.99
如果数值超出了位数限制就会被截取多余的位数。但在一行数据中的这个字段输入 575.316,则真正保
存到字段中的数值是 575.32。
number(5) : 等价于 number(5,0) 表示一个五位整数,范围-99999~99999。
输入 57523.316,真正保存的数据是 57523
–number 等价于number(38,0)
–number(15)表示可以存储一个15位的整数
–number(22,7)表示可以浮点数,整数部分有15位,小数点后有7位

注意:不建议使用varchar,interger,float,double

4,日期数据类型,date 类型

--date类型,用于表示时间,( 年/ 月/ 日/ 时/ 分/ 秒) ,是定长。
--sysdate:日期函数;显示当前日期
            select systate from dual;    //显示当前日期
 --systimestamp:比Date更精确的一个时间
---Date:日期类型,存储日期和时间
---TimeStamp:比Date更精确的一种日期类型。
---默认的日期格式
      ---中文的oracle:日-月-年  比如:‘1998年7月1日’    默认日期格式-> ‘01-7月-1998’
      ---英文的oracle:day-mon-year  比如1998年7月1日  默认日期格式->'01-JUL-1998'

–与日期相关的函数
—to_date(字符串,格式) :将一个oracle不认识的日期格式转成oracle认识的日期格式返回的是一个日期类型
select to_date(‘2018-01-05’,yyyy-mm-dd);

举例说明:
create table test5(birthday date);
//添加时个要使用默认格式 insert into test5 values('11-11 月-11');
如使用 insert into test5 values('2011-11-11');则报错。
说明:oracle 日期有默认格式为:DD-MON-YYYY,日-月-年;如果我们希望使用自己习惯的日期添加,
也可以,但是需要借助 oracle 函数来添加。
insert into test5 values(to_date('2015-5-3','yyyy-mm-dd'))

5 、 clob 型
字符型大对象,它最大可以存放 8TB ,是变长。(nvarchar(4000) 满足不了需求)
与字符型的 char/varchar2/nchar/nvarchar2 的使用方式一样。

6 、 blob 型
二进制数据,可存放图片、声音,它最大可以存放 8TB ,是变长。
与字符型的 char/varchar2/nchar/nvarchar2 的使用方式一样。
说明:一般情况下很少使用数据库来存放媒体类文件,一般只使用数据库来记录媒体类文件的 URL 地址。如果考虑到文件的安全性,可以存放到数据库中来保存。

猜你喜欢

转载自blog.csdn.net/weixin_44001965/article/details/86363244