PL/SQL创建表空间\序列\用户创建\权限管理\简单编程语言

创建表空间

create tablespace [tablespace_name]
datafile '[路径如D:\app\OracleRoot\oradata\orcl\my.dbf]'  --制定数据库存放路径
size 200M   --初始表空间大小为200M
autoextend on next 10M --自动扩展,每次扩展10M
maxsize unlimited   --最大扩展表空间没有限制
logging  --创建表空间是是否生成重写日志,将会拖慢表空间创建时间
--nologging 相反,创建表空间是不生成日志,可以加快表空间创建的速度
--maxsize 1024M
--maxsize unlimited 大小不受限制
extent management local autoallocate  
--extent management local [uniform|uniform 100K|autoallocate]
--分别对应:(默认)区的大小相同|区的大小相同·指定为100K|区的大小由随表的大小自动动态改变,大表使用大区小表使用小区 
segment space management auto;
--segment space management [manual|auto]  手动管理或自动管理
--修改表空间大小
alter database datafile   
'需要增加的数据文件路径,即上面查询出来的路径' resize 800M; 

创建序列

CREATE SEQUENCE [schema.]sequence_name
    [ START WITH i ] [ INCREMENT BY j ]
    [ MAXVALUE m | NOMAXVALUE ]
    [ MINVALUE n | NOMINVALUE ]
    [ CYCLE | NOCYCLE ][ CACHE p | NOCACHE ];
/*其中:
sequence_name是序列名,将创建在schema方案下
序列的第一个序列值是i,步进是j
如果j是正数,表示递增,如果是负数,表示递减
序列可生成的最大值是m,最小值是n
如果没有设置任何可选参数,序列的第一个值是1,步进是1
CYCLE表示在递增至最大值或递减至最小值之后是否继续生成序列号,若是递减并有最大值,从最大值开始。
若是递增有最小值,从最小值开始。若没有,从START WITH 指定的值开始。默认是NOCYCLE
CACHE用来指定先预取p个数据在缓存中,以提高序列值的生成效率,默认是20
*/

创建用户:

create user user_name identified by pass_word
[or identified exeternally]
[or identified globally as 'CN=user']
[default tablespace tablespace_default] --该用户在默认表空间中创建表
[temporary tablespace tablespace_temp]  --该用户的临时表空间
[quota [integer k[m]] unlimited]] on tablespace_specify1  --配额,该用户可以在其他表空间上的配额 如quota 10M on tab3
[, quota [integer k[m]] unlimited]] on tablespace_specify2
[,...]...on tablespace_specifyn
[profiles profile_name]
[account lock or account unlock]  --默认是不加锁

修改用户

将create 改成alter即可,语法基本一致;

删除用户

drop user username [cascade]  --cascade 用户删除用户时顺带删除一些相关或级联的对象等内容

角色管理

角色可以理解为一个组,有若干个权限组成的组构成了一个角色;
建立用户后,可以将角色赋予给用户,用户相当于就在这个角色组内,可以使用该组内的所有权限。
常见的系统预定义角色:
connect
resource
DBA
EXP_FULL_DATABASE
IMP_FULL_DATABASE
创建角色:

create role role_name
[not identified | identified by [password] | [exeternally] | [globally]]

授予权限
回收权限
角色生效

--授予系统权限
grant sys_privi | role to user | role | public [with admin option];
grant 权限 to role_name;  --授予权限给角色或者用户
grant role_name to user_name;  --将角色授予给用户
set role role_name [identified by password];    --使角色生效,只有生效,对应用户才能使用角色中的权限

--撤销权限
revoke sys_privi | role from user | role | public;

--授予对象权限
grant insert,delete,update,select on 实例.table_name to user_name;

有哪些权限?
系统权限:
对数据库进行行存取和使用的机制,比如,用户是否可以连接到数据库系统(SESSION权限),执行系统级的DDL语句(如CREATE, ALTER, DROP)等。
对象权限:
指某一用户对其他用户的表、视图、序列、存储过程、存储函数、包等的操作。

--connect 可以给一下临时用户
--resource 可以给一些比较可靠的用户
grant connect,resource to user_name;  
grant dba to user_name;   --dba权限比较高

查看一些用户、角色、权限

select * from dba_users;  -- 查看数据库管理员用户
select * from all_users;  -- 查看所有用户
select * from user_users;  --查看当前用户
select * from session_roles;    -- 当前用户被激活的全部角色
select * from user_role_privs;  -- 当前用户被授予的角色
select * from dba_role_privs;   -- 全部用户被授予的角色
select * from dba_role_privs where grantee='用户名';  -- 查看某个用户所拥有的角色
select * from dba_sys_privs where grantee='CONNECT';  -- 查看某个角色所拥有的权限
select * from dba_roles;  -- 查看所有角色
select * from session_privs; --当前用户所拥有的全部权限
select * from user_sys_privs;--当前用户的系统权限
select * from user_tab_privs;--当前用户的对象权限
select * from dba_sys_privs ;--查询某个用户所拥有的系统权限
select * from role_sys_privs;--查看角色(只能查看登陆用户拥有的角色)所包含的权限
-- 查看系统权限
select * from dba_sys_privs;  
select * from user_sys_privs;
-- 查看对象权限
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
--查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from v$pwfile_users;

语句块

[declare
  declaration_statements
]
begin
  executable_statements
  [exception
    exception_handling_statements
  ]
end;

--条件语句
if condition then
  statements
elseif condition then
  statements
else
  statements
end if;

--简单循环
loop
  statement;
  --exit when condition;  --简单循环必须显式退出,否则会一直执行
end loop;

--while循环
while conditon loop
  statements
end loop;

--for循环
for loop_various in [reverse] lower_bound..upper_bound loop
  statements
end loop;

--异常
exception
  when exception_name then statment;
  ...
  when others then statement;

--case语句
case <selector>
  when <条件表达式1> then statement;
  when <条件表达式2> then statement;
  ...
  --注意else语句尽量不能省略,因为如果省略,当没有与选择器匹配的when语句时,就会报一个oracle错误
  [else statement] 
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值