用户
创建用户 | 修改用户 | 删除用户 |
---|---|---|
create user username identified by password account lock/unclock 表示用户是否处于锁定状态 password expire 密码登录后立马失效 |
alter user name ccount lock/unclock 表示用户是否处于锁定状态 password expire 密码登录后立马失效 |
drop user name[cascade]若用户拥有数据库对象,必须使用cascade关键字 |
创建用户,授予权限
什么是Scheme
在Oracle中,一个用户就是一个Schema,表都是建立在Schema中的,也可以理解为每个用户拥有不同的表。一个用户想访问另外一个用户,也就是另外一个schema的表的时候,
Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决。
深入理解user和schema的区别
不同的schema之间它们没有直接的关系,不同的schema之间的表可以同名,也可以互相引用(但必须有权限),在没有操作别的schema的操作根权下, 每个用户只能操作它自己的schema下的所有的表。
不同的schema下的同名的表, 可以存入不同的数据(即schema用户自己的数据)。 好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)。
你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以通过alter session的方式进入别人的房子。 这个时候,你可以看到别人房子里的家具(desc)。 如果你没有特别指定的话,你所做的操作都是针对你当前所在房子中的东西。 至于你是否有权限使用(select)、搬动(update)或者拿走(delete)这些家具就看这个房子的主人有没有给你这样的权限了,或者你是整个大厦(DB)的老大(DBA)。
如果你想调用其他schema的对象(有权限的前提下),但并没有建synonym, 同时又不想把其他schema名字放入代码中,就可以首先使用
alter session set current_schema=<schema_name>。
解锁scott用户
创建表
权限管理&角色管理
权限管理 | 角色管理 | |
---|---|---|
概念与作用 | 权利的责任范围 系统设置的安全规则或者安全策略 |
权限的集合 简化权限管理 |
分类 | 系统权限:能否在数据库上完成动作 对象权限:能否在某个数据库对象上完成某个动作 |
|
授予与回收 grant priv to user/role revoke priv from user/role |
创建与删除 create role role drop role role 其中授予与回收相同 |
用户上授予角色
用户上授予角色
grant role to user;
//将lambor,niuniu关联角色student
grant student to lambor,niuniu;
//如果在授予角色之前用户已经登陆,则需要重新登录后角色对应的权限才能生效
用户上回收角色
revoke role from user;
revoke student from lambor,niuniu;
//如果在回收角色之前用户已经登陆,则需要重新登录后角色对应的权限才能回收
删除用户:必须指定 CASCADE 以删除 ‘SE’
这说明你要删除的oracle 用户"SE" 下面还有数据库对象,如 table, view 等,这样你删除用户时必须加选项 cascade:
drop user se cascade; 表示删除用户SE,同时删除 SE 用户下的所有数据对象。
或者就先删除 se 下的所有数据对象,使 se 变成一个啥也没有的空用户,再 drop user se;
一般来说要具有 dba 权限的用户才能删除其他用户
创建约束
查询
当前用户下的表
查询数据库中拥有的账户
查看能管理的所有用户
查看当前用户的信息
创建表
如何将大写字母全部转换为小写
首先先用管理员权限登录
创建表不能在dba权限下,否则无法删除
在win10中按shift+f3
能把所有小写字母转换成为大写字母,按两次
hhh 然而并没有卵用 因为我把()
打成了{}
在网上还查到一种说法是尾部不要打;这个在java中不出错但是在这里也会出现这个错误
create table infos
(
stuid varchar2(7) not null,
stuname varchar2(10) not null,
gender varchar2(2) not null,
age number(2) not null,
seat number(2) not null,
enrolldate date,
stuaddress varchar2(50) default '地址不详',
classno varchar2(4) not null
)
查看表信息
修改表中的约束
查询
找出emp表方便查看
创建一查询,显示能获得与Scott一样工资和奖金的其他雇员的姓名、受雇日期以及工资。
查询职位为SALESMAN或MANAGER,部门编号为10或20,姓名中包含A的员工姓名,职位和部门编号。
部门编号内不存在10或20的所以改了
找出部门10中所有经理,部门20中所有办事员以及既不是经理又不是办事员但其工资大于或等于2000的所有员工的详细信息。