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用户登录就可以拉
也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。
oracle管理工具的介绍(1)
sql*plus是oracle自带的工具软件,主要用于执行sql语句,pl\sql块. 如何使用:
1)在开始->程序->oracle oradb_home10g->application development->sql*plus
2)在运行栏中输入: sqlplusw即可
oracle管理工具的介绍(2)
概述: sqlplus 是 dos下操作oracle的工具,其功能和sql*plus相似.
1)在运行栏中输入 sqlplus
2)找到该可执行文件sqlplus.exe, 在oracle主目录\ora10g\bin\sqlplus.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:\b.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: 表或视图不存在 结果显示:小红受到诛连了。
数据库服务器、数据库和表的关系如图所示: