oracle1

引言:

数据保存问题?

可使用文件保存和数据库保存。 

使用文件保存数据存在几个缺点:

1、文本的安全性问题;

2、文件不利于查询和对数据的管理;

3、文件不利于存放海量数据;

4、文件在程序中控制不方便。

为解决数据保存问题,专家们设计出更加利于管理数据的东东--数据库(本质就是一个软件),它能更有效的管理数据。数据库是衡量一个程序员水平的重要指标。

数据库

1、数据库的本质就是一款软件,这个软件专门用于管理和维护数据;

2、数据存放在数据库中。

数据库服务器、数据库和表的关系

所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每个应用创建一个数据库。

为了保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。

服务器访问量大的时候随时准备重启。

 oracle的安装

系统要求 ■ 操作系统最好为windows server ■ 内存最好在256M以上 ■ 硬盘空间需要2G以上

iso文件要镜像陈驱动器才能够使用。

Oracle安装会自动的生成sys用户和system用户

(1) sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install 

(2) system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限,默认的密码是manager 

(3) 一般讲,对数据库维护,使用system用户登录就可以拉 

也就是说syssystem这两个用户最大的区别是在于有没有create database的权限。

 oracle管理工具的介绍(1)

sql*plus是oracle自带的工具软件,主要用于执行sql语句,plsql块. 如何使用:

1)在开始->程序->oracle oradb_home10g->application development->sql*plus

2)在运行栏中输入: sqlplusw即可

 oracle管理工具的介绍(2)

概述: sqlplus 是 dos下操作oracle的工具,其功能和sql*plus相似.

1)在运行栏中输入 sqlplus

2)找到该可执行文件sqlplus.exe, 在oracle主目录ora10ginsqlplus.exe ,鼠标双击即可

 oracle管理工具的介绍(3)

概述: pl/sql developer 属于第三方软件,主要用于开发,测试,优化 oracle pl/sql 的存储过程比如: 触发器,此软件oracle不带,需要单独安装。

 oracle管理工具的介绍(4)

■ Enterprise manager console(企业管理器) oracle 10g是通过web管理的 一般默认端口是5500, 也有1158的。 访问url(请一定保证oracle服务启动了): http://ip:1158 (也可能是5500)/em http://机器名:端口/em

sql*plus常用命令

■ 连接命令

(1)conn[ect]

用法: conn 用户名/密码,则链接进去。

conn 用户名/密码@网络服务名 [as sysdba/sysoper]

当用特权用户身份连接时,必须带上 as sysdba 或是 as sysoper

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

(3)passw[ord] 说明:该命令用于修改用户的密码.如果要想修改其它用户的密码,需要用sys/system管理员登陆. (4)show user 说明:显示当前用户名

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

文件操作命令 
1.start和@ 
说明: 运行sql脚本 
案例: sql>@ d:a.sql或是sql>start d:a.sql 
2.edit 
说明: 该命令可以编辑指定的sql脚本 
案例: sql>edit d:a.sql,这样会把d:a.sql这个文件打开 
3.spool 
说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。 
案例: sql>spool d:.sql 回车,slecet* from table回车,并输入 sql>spool off 

显示和设置环境变量 

概述:可以用来控制输出的各种格式,set show如果希望永久的保存相关的设置,可以去修改glogin.sql脚本 

1.linesize 

说明:设置显示行的宽度,默认是80个字符 

show linesize 

set linesize 90 

2.pagesize说明:设置每页显示的行数目,默认是14 

用法和linesize一样 

至于其它环境参数的使用也是大同小异 

创建用户 
概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用创建新的用户。 
create user 用户名 identified by 密码; (oracle有个毛病,密码必须以字母开头,如果以字母开头,它不会创建用户
给用户修改密码 
概述:如果给自己修改密码可以直接使用 
password 用户名 
如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限 
SQL> alter user 用户名 identified by 新密码 
 删除用户 
概述:一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有drop user的权限。 
比如 drop user 用户名 【cascade】 
在删除用户时,注意: 
如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade; 

自己不能够删除自己。

用户管理的综合案例 
概述:创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用命令grant,回收权限使用命令revoke。 
为了给讲清楚用户的管理,这里我给大家举一个案例。 
SQL> conn xiaoming/m12; 
ERROR: 
ORA-01045: user XIAOMING lacks CREATE SESSION privilege; logon denied 
警告您不再连接到 ORACLE。 
SQL> show user; 
USER 为 "" 
SQL> conn system/p; 
已连接。 
SQL> grant connect to xiaoming; 赋予xiaoming连接的权限
授权成功。 
SQL> conn xiaoming/m12; 
已连接。 
SQL> 
注意:grant connect to xiaoming;在这里,准确的讲,connect不是权限,而是角色。。 看图: 

数据库除了表还有存储过程,触发器,视图。

数据对象:函数,过程,包,类型,触发器,工作,库,表,视图,序列,角色,同义词,表空间,簇。

现在说下对象权限,现在要做这么件事情: 
* 希望xiaoming用户可以去查询emp表 
* 希望xiaoming用户可以去查询scott的emp表 ,管理员和表的拥有者有这个权限,
  grant select on emp to xiaoming 
 select  *  from  scoot.emp
* 希望xiaoming用户可以去修改scott的emp表 
  grant update on emp to xiaoming 
* 希望xiaoming用户可以去修改/删除,查询,添加scott的emp表 
  grant all on emp to xiaoming 
* scott希望收回xiaoming对emp表的查询权限 
  revoke select on emp from xiaoming 

//对权限的维护。 
* 希望xiaoming用户可以去查询scott的emp表/还希望xiaoming可以把这个权限(select 权限)继续给别人。 
--如果是对象权限,就加入 with grant option 
  grant select on emp to xiaoming with grant option 
我的操作过程: 
SQL> conn scott/tiger; 
已连接。 
SQL> grant select on scott.emp to xiaoming with grant option; //不是系统用户(sys,system)要用scott.emp 
授权成功。 
SQL> conn system/p; 
已连接。 
SQL> create user xiaohong identified by m123; 
用户已创建。 
SQL> grant connect to xiaohong; 
授权成功。 
SQL> conn xiaoming/m12; 
已连接。 
SQL> grant select on scott.emp to xiaohong; //不是系统用户(sys,system)授权时要用scott.emp 

授权成功。 

--如果是系统权限。 
system给xiaoming权限时: 
grant connect to xiaoming with admin option //xiaoming可以把admin这个系统权限继续向下传递

问题:scoot把权限给了xiaoming,xiaoming把权限给了xiaohong,如果scott把xiaoming对emp表的查询权限回收,那么xiaohong会怎样? 
答案:被回收。 
下面是我的操作过程: 
SQL> conn scott/tiger; 
已连接。 
SQL> revoke select on emp from xiaoming; 
撤销成功。 
SQL> conn xiaohong/m123; 
已连接。 
SQL> select * from scott.emp; 
select * from scott.emp 
第 1 行出现错误: 
ORA-00942: 表或视图不存在 

结果显示:小红受到诛连了。

数据库服务器、数据库和表的关系如图所示:

原文地址:https://www.cnblogs.com/yaowen/p/4851918.html