Oracle 数据库笔记1

【oracle 安装成功后,会默认生成3个用户:】
sys 用户:超级管理员,权限最高,他的角色dba,密码 change_on_install
system 用户:是系统管理员,权限也很高,他的角色是dbaoper,密码 manager
scott 用户:普通用户密码是 tiger


【sys 与 system 的差异:】
sys 有 create database 的权限,而 system 没有。其他相似。
在日常对 oracle 管理过程中,使用 system 就足够了。

【sql*plus常用命令】
1.show user; 查看当前用户的用户名

2.连接命令(退出exit;)
conn[ect]
用法:conn 用户名/密码@网络服务名 [as sysdba/sysoper]
当用特权用户身份连接时,必须带上 as sysdba 或是 as sysoper。
如下:
conn scott/876521963;
conn sys/876521963 as sysdba;
conn sys/876521963 as sysoper;

3.断开连接
disc[onnect]
说明:该命令用来断开与当前数据库的连接

4.passw[word]
说明:该命令用于修改用户的密码。如果要想修改其他用户的密码,
需要用 sys/system 登陆。

5.show user
说明:该命令会断开与数据库的连接,同时会退出 sql*plus

6.文件操作命令【常用】
start和@
说明:运行sql脚本
案例:@ d:/a.sql 或者 START d:/a.sql
edit
说明:该命令可以编辑制定的sql脚本
案例:edit d:/a.sql
③spool
说明:该命令可以将 sql*plus 屏幕上的内容输出到指定文件中去。
案例:spool d:/b.sql (创建b.sql文件) 并输入 spool off (将屏幕内容输出到文件)

7.想看scott用户到底可以操作哪些表?
提供一个简单的方法:进入pl/sql,左栏选择“My objects(我的对象)”->“Tables”。

8.Oracle与SQLServer、MySql不能通用的SQL语句:
select top 2 * from emp;
show databases;
show create table emp;
create database mydata;【oracle的数据库虽然很强大,但创建1个数据库却很麻烦】
drop database mydata;
auto_increment、primary key 能否通用?

9.pl/sql一个特殊的sql语句(是区分大小写的)
select * from emp where ename='&name';
按回车之后会弹出一个输入框要求输入name的值~

10.显示和设置环境变量
概述:可以用来控制输出地各种格式,set show 如果希望永久的保存相关的设置,
可以去修改 glogin.sql 脚本。
(1)linesize
说明:设置显示行的宽度,默认是80个字符
show linesize;
set linesize 90;
(2)pagesize (打印报表的时候很有用,数值的大小并非每页显示纪录的大小)
说明:设置每页显示的行数目,默认是14。用法和 linesize 一样。
至于其他环境参数的使用也是大同小异。

11.创建用户
概述:在 oracle 中要创建一个新的用户使用 create user 语句,一般是具有
dba(数据库管理员)的权限才能使用。
create user xiaoming identified by m123;
注意:设置密码的时候必须以字母开头,如果以数字开头的话则不能成功。
-----------------------------------------------------
SQL> show user;
User is "scott"

SQL> create user xiaoming identified by m123;
create user xiaoming identified by m123

ORA-01031: insufficient privileges
-----------------------------------------------------
SQL> disc;
Not logged on

SQL> conn system/876521963;
Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0
Connected as system

SQL> create user yang3wei identified by dxyang3wei;

User created
-----------------------------------------------------

12. 给用户修改密码(如果是给别人修改密码则自身需要 dba 的权限)
概述:
如果给自己修改密码可以直接使用:password 用户名
如果给别人修改密码则需要具有 dba 的权限,或是拥有alter user 的系统权限:
alter user 用户名 identified by 新密码。
注意:在sql *plus里面和 pl/sql里面效果不同

13.用户管理的综合案例
概述:创建的新用户是没有任何权限的,甚至连登陆到数据库的权限都没有,需要
为其指定相应的("相应的"就意味着权限远不止一种)权限。
system sys 具有给新用户赋权限的权力。
②给一个用户赋予权限使用命令 grant.

grant connect to yang3wei;
③回收权限使用命令 revoke
revoke connect from yang3wei;
0.只有具备了 “create session的系统权限,才能登陆
【1.准确来讲,connect 不是一种权限而是一种角色,它包含了 create session 的系统权限】
【2.oracle 大概有 140 多种权限,关键的对象权限有 25 个左右】
【3.一个权限一个权限给太麻烦,太慢了,于是oracle提出角色的概念,
可以一次性给用户赋予多种系统或对象权限,感觉像权限的批量授权】
【4.预定义角色:数据库安装完毕的时候就具有了的角色,如 connect
【5.自定义角色:自定义权限集合,很灵活】

14.删除用户
概述:一般以dba的身份去删除某个用户,如果用其他用户区删除用户则
需要具有 drop user 的权限。比如:
drop user 用户名 【cascade】
注意1:自己删除自己是不允许的~
注意2:再删除用户时,如果要删除的用户,已经创建了表,那么在删除的时候就
需要带一个参数 cascade(把这个用户和这个用户创建的表级联的删除)

15.如果希望 xiaoming 用户可以去查询 emp 表呢?
首先,新用户xiaoming没有任何表!
xiaoming可以建表吗?不可以,没有在system表空间建表的权限。

16.如果希望xiaoming用户可以去查询scott 的emp表呢(对象权限的控制)?
scott、sys、system 等用户执行以下命令(自个儿的东西,权力大的用户):
grant select on emp to xiaoming;
xiaoming 在查询 emp表的时候,必须用以下命 令才能查看 emp表
select * from scott.emp;
希望xiaoming用户可以去修改 scott 的emp 表呢?
grant update on emp to xiaoming;
希望xiaoming用户可以去修改/删除、查询、添加scott的 emp表
grant all on emp to xiaoming;


16.如果 scott 希望收回xiaoming 对 emp 表的查询权限呢?
revoke select on emp from xiaoming;


17.对权限的维护 -- 还希望xiaoming可以把这个权限继续给别人。
【注意:如果是 对象权限,就加入 with grant option
grant select on emp to xiaoming with grant option;


【注意:如果是 系统权限,如 system 给 xiaoming 权限时:】
grant connect to xiaoming with admin option;

18.如果scott授予xiaoming查询scott.emp表的权限,而xiaoming又授予了

xiaohong查询scott.emp表的权限。那么,当scott收回xiaoming查询scott.emp
表的权限时,xiaohong是否还保留有对scott.emp表的查询权限呢?
答:也被回收!(这是对象权限的情形,如果是系统权限,则恰恰相反)


你可能感兴趣的:(oracle)