DROP USER

说明

删除数据库用户

语法

drop_user ::=

参数

username

要删除的用户名

CASCADE|RESTRICT

  • CASCADE强制删除用户,并强制删除用户所拥有的schema和其他对象。
  • RESTRICT只有用户所拥有的schema和其他对象上没有依赖时才会删除用户。

默认是RESTRICT。

注解

删除者必须是DBA。

不能删除系统内建的SYSDBA用户和SYSSECURE用户。

用户ID不能重用。用户删除后,新建的同名用户ID与已删除用户ID不同。

示例

示例1: 删除用户

--  以 sysdba 登录
CONNECT sysdba/szoscar55;

--  清理环境
DROP USER user1 CASCADE;

--  创建用户
CREATE USER user1 WITH PASSWORD 'abc123!';


--  以 user1 登录
CONNECT user1/abc123!;

--  创建表
CREATE TABLE tab1(a INT);

INSERT INTO tab1 VALUES (100);
INSERT INTO tab1 VALUES (200);
INSERT INTO tab1 VALUES (300);


SELECT * FROM tab1 ORDER BY a;
A(int)      |
------------
100         |
------------
200         |
------------
300         |
总数目:3



--  以 sysdba 登录
CONNECT sysdba/szoscar55;

--  查询 user1 的表
SELECT * FROM user1.tab1 ORDER BY a;
A(int)      |
------------
100         |
------------
200         |
------------
300         |
总数目:3

--  删除用户
--  用户有其他对象(表 user1.tab1),删除失败
DROP USER user1;
ERROR, 删除失败,schema USER1 被其他对象所依赖. 如有需要,可以使用 DROP ... CASCADE 语法对依赖对象进行级联删除


--  强制删除用户
DROP USER user1 CASCADE;

--  表 user1.tab1 已被级联删除,查询失败
SELECT * FROM user1.tab1 ORDER BY a;
ERROR, 模式 "USER1" 不存在或无权访问