1.Oracle 的 安装
我装的是 oracle 10g, 然后照着网上的教程点鼠标就行,虽然出现警告,但用着没问题。
2.PLSQL Developer
类似于 mysql 里面的 navicat ,可视化操作数据库的工具,但操作难度高于navicat ,也可以说oracle比mysql 难学
3.oracle 初步认识
我逛了很多博客,终于发现了自己习惯的,所以记录了一点,并进行了一点实操。
sys; //系统管理员,拥有最高权限
system;//本地管理员,次高权限
scott; //普通用户,密码默认为tiger,默认未解锁
命令行窗口 → sqlplus:启动一个SQL*Plus客户端工具
或 → sqlplus username/password [as sysdba]
或 → sqlplus /nolog:打开SQL*Plus,但不登录
→ conn username/[email protected]:1521/orcl
→ disconnect 断开连接
在登陆的时候,可以选择下面三种登录方式:
sqlplus / as sysdba; //登陆sys帐户
sqlplus sys as sysdba;//同上
sqlplus scott/tiger; //登陆普通用户scott (sqlplus yilei/yilei)
下面分别介绍系统权限和对象权限:
(1)系统权限:
grant 权限列表,.. to username [with admin option 同时获得权限分配权];
revoke 权限列表,.. from usernam;
知识点、用户
MySQL,一个用户,多个数据库,每个数据库拥有各自的表,而Oracle一个数据库,多个用户,每个用户拥有各自的表(数据库对象)
创建用户:
create user username identified by password [account lock | unlock]
[password expire 设置密码过期];
解锁|加锁
alter user username account unlock | lock;
修改密码
非管理员用户登录状态:password → 旧口令 → 新口令 :修改当前用户的密码
管理员登录状态:password username → 新口令 :修改指定用户的密码
alter user username identified by newpassword;
删除用户
drop user username [cascade];
cascade表示级联删除用户的所有对象,删用户时,一起删除该用户的对象
删除当前正在连接的用户
v$session 存放的是已经连接的用户的信息
select sid,serial#,username from v$session where username = ‘’;
alter system kill session 'sid,serial#';
drop user username [cascade];
查看当前的登录的用户
show user;
个人理解: 首先创建用户时,必须用到管理员,当创建成功后,可以使用用户登录
比如:
先登录系统管理员 sys
然后创建 一个username 为 yi ,password 同样也为 yi 的用户
退出当前用户(SYS),准备连接 用户 yi
连接失败,提示信息为 :user Yi lacks Create session privilege
原来是没有会话权限
重新使用 sys ,赋予 user YI session 权限
新创建用户YI 连接成功。
知识点、角色与权限
角色基本内容如下:
grant 角色 to username;
revoke 角色 from username;
一个角色是多个权限的集合
系统预定义角色
connect 连接
resource 访问资源权限,访问表、序列,不包括create session
dba 拥有所有权限
自定义角色
create role 角色名
grant 权限列表|角色列表 to 角色名
每个Oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。Oracle角色(role)就是一组权限(privilege) (或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权。
数据库系统权限(Database System Privilege)允许用户执行特定的命令集。例如,CREATE TABLE权限允许用户创建表,GRANT ANY PRIVILEGE 权限允许用户授予任何系统权限。
数据库对象权限(Database Object Privilege)使得用户能够对各个对象进行某些操作。例如DELETE权限允许用户删除表或视图的行,SELECT权限允许用户通过select从 表、视图、序列(sequences)或快照 (snapshots)中查询信息。
(1)、3种标准角色
Qracle为了兼容以前的版本,提供了三种标准的角色(role):CONNECT、RESOURCE和DBA。
1. CONNECT Role(连接角色)
临时用户,特别是那些不需要建表的用户,通常只赋予他们connect role。CONNECT是使用Oracle的简单权限,这种权限只有在对其他用户的表有访问权时,包括select、insert、update和delete等,才会变得有意义。拥有CONNECT role的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym )、会话(session)和与其他数据库的链(link)。
2. RESOURCE Role(资源角色)
更可靠和正式的数据库用户可以授予resource role。RESOURCE提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
3. DBA Role(数据库管理员角色)
DBA role拥有所有的系统权限----包括无限制的空间限额和给其他用户授予各种权限的能力。SYSTEM由DBA用户拥有。下面介绍一些DBA经常使用的典型权限。
A.grant(授权)命令
下面对刚才创建的用户user01授权,命令如下:
grant connect, resource to user01;
B.revoke(撤消)权限
已授予的权限可以撤消。例如撤消(1)中的授权,命令如下:
revoke connect, resource from user01;
一个具有DBA角色的用户可以撤消任何别的用户甚至别的DBA的CONNECT、RESOURCE 和DBA的其他权限。当然,这样是很危险的,因此,除非真正需要,DBA权限不应随便授予那些不是很重要的一般用户。
撤消一个用户的所有权限,并不意味着从Oracle中删除了这个用户,也不会破坏用户创建的任何表;只是简单禁止其对这些表的访问。其他要访问这些表的用户可以象以前那样地访问这些表。
(2)、创建角色
除了前面讲到的三种系统角色—-CONNECT、RESOURCE和DBA,用户还可以在Oracle创建自己的role。用户创建的role可以由 表或系统权限或两者的组合构成。为了创建role,用户必须具有CREATE ROLE系统权限。下面给出一个create role命令的实例:
create role STUDENT;
这条命令创建了一个名为STUDENT的role。
一旦创建了一个role,用户就可以给他授权。给role授权的grant命令的语法与对用户的语法相同。在给role授权时,在grant命令的to子句中要使用role的名称,如下所示:
grant select on CLASS to STUDENT;
现在,拥有STUDENT角色的所有用户都具有对CLASS表的select权限。
- 、删除角色
要删除角色,可以使用drop role命令,如下所示:
drop role STUDENT;
用PL/SQL Developer 建表,以及用cmd (win + r) 查询 指定用户下 有多少表
首先的给该用户授予一个权限 ,同样得要比它高一级以上的管理员 授予
Resource 是一个角色,自带 访问表的权限。
然后就是创建表,用PL/SQL Developer
语句为:
create table MAN
(
id NUMBER not null,
name VARCHAR2(8) not null,
gender VARCHAR2(2) not null,
age NUMBER not null,
address VARCHAR2(20) default '地址不详',
regdata DATE not null
)
Oracle 中没有int 类型,用 Number 代替
Oracle 和 mysql 在 查询用户有多少表 有很大不同,mysql:show tables
Oracle 为 select table_name from user_tables (这是完整的命令语句,而不是 变量语句)
select table_name from user_tables; //当前用户的表
select table_name from all_tables; //所有用户的表
select table_name from dba_tables; //包括系统表
select table_name from dba_tables where owner=’zfxfzb’