1、韩顺平 J2EE 视频教程玩转 oracle10g 实战教程 (全)笔记1 / 170注:笔记中所有示例,均通过测试!韩顺平 j2ee 系列教程-玩转 oracle10g 学习笔记引言:数据保存问题?可使用文件保存和数据库保存。使用文件保存数据存在几个缺点:1、文本的安全性问题;2、文件不利于查询和对数据的管理;3、文件不利于存放海量数据;4、文件在程序中控制不方便。为解决数据保存问题,专家们设计出更加利于管理数据的东东-数据库(本质就是一个软件),它能更有效的管理数据。数据库是衡量一个程序员水平的重要指标。数据库1、数据库的本质就是一款软件,这个软件专门用于管理和维护数据;2、数据存放在数据
2、库中。数据库服务器、数据库和表的关系所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每个应用创建一个数据库。为了保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。数据库服务器、数据库和表的关系如图所示:韩顺平 J2EE 视频教程玩转 oracle10g 实战教程 (全)笔记2 / 170注:笔记中所有示例,均通过测试!为什么选择 oracle-性能优越概述:目前主流数据库包括微软: sql server 和 access瑞典 MySql: AB 公司 mysqlibm 公司: db2(处理海量)美国 Sybase
3、 公司: Sybaseibm 公司: informix美国 oracle 公司: oracle做项目时应当如何选择数据库?1、标的(项目预算);2、功能的要求;3、并发数(多少人用);4、安全、稳定性。5、操作系统(unixsolaris,freeBSD,aix,hp unix/linux/window)oracle 数据库的认证oca(oracle certified associate)初级认证ocp(oracle certified professional)中级认证ocm(oracle certified master)高级认证oracle10g 安装步骤:1、安装文件2、把 1020
4、1_database_win32.zip 文件 copy 到没有中文的路径下3、检查服务选项,确定本机没有安装过 oracle 数据库,如果有则卸载4、将压缩包解压后,双击 setup.exe 文件进行安装。说明:建议大家自己建立一个文件目录,比如 d:/hsporacle/oracle,然后把数据库安装到韩顺平 J2EE 视频教程玩转 oracle10g 实战教程 (全)笔记3 / 170注:笔记中所有示例,均通过测试!目录下即可。(目录不要带中文)这里我们可以选择创建启动数据库(默认数据库)当我们每创建一个数据库实例的时候,就会自动的生成三个用户:sys 用户(超级管理员,权限最大)sys
5、tem 用户(管理员用户,权限仅次于 sys 用户)scott 用户(普通用户)5、在默认的情况下,scott 用户是锁定状态(lock user),一般我们启用它。特别注意:如果安装的时候,忘记对某个用户解锁,比如 scott 可以通过 system 来对该用户解锁。步骤:1、先使用 system 登录,运行 sqlplus2、使用命令:alter user scott account unlockoracle 后台服务OracleDBConsoleorcl 网络企业管理器服务OracleOraDb10g_home1TNSListener 监听服务(监听端口 1521)OracleServi
6、ceORCL 数据库实例服务oracle 发展与现状oracle10g 比 oracle9i 增加了什么?简要说:10g 支持网格(Grid),支持自动管理(Automatic Management)详细说:1、10g 的 g 是“Grid”缩写,支持网格计算,即,多台结点服务器利用高速网络组成一个虚拟的高性能服务器,负载在整个网络中均衡(Load Balance),按需增点,避免单点故障(Single Point of Faliure)。2、安装容易,安装工作量比 9i 减少了一半。3、新增基于浏览器的企业管理器(Enterprise Manager)。oracle 公司介绍-产品线数据库服
7、务器:2007 年最新版本 11G,2013 年最新版本 12C应用服务器:Oracle Application Server开发工具:Oracle JDeveloper,Oracle Designer,Oracle Developer,等等应用软件(主要竞争对手:德国 SAP 公司)企业资源计划(ERP)软件客户关系管理(CRM)软件人力资源管理软件(HCM)oracle 开发工具1、sqlplusw 和 slqplus 工具是 oracle 自带的工具软件使用:1、在开始-程序-oracle oradb_home10g-application development-sql plus2、在
8、运行栏中输入:sqlplusw 即可,也可以使用 sqlplus 进入 oracle 数据库韩顺平 J2EE 视频教程玩转 oracle10g 实战教程 (全)笔记4 / 170注:笔记中所有示例,均通过测试!oracle 管理工具介绍pl/sql developer 属于第三方软件,主要用于开发,测试,优化 oracle pl/sql 的存储过程比如:触发器,此软件 oracle 不带,需要单独安装。oracle 管理工具介绍Enterprise manager console(企业管理器)oralce10g 是通过 web 管理的一般默认端口是 5500,也有 1158 的。访问 url(
9、一定要保证 oracle 服务启动才可访问)http:/ip:1158(或 5500)/emhttp:/机器名:端口/emsql*plus 常用命令连接命令1、connect (可用于切换用户使用)用法:conn 用户名/密码网络服务名as sysdba/sysoper当用特权用户身份连接时,必需带上 as sysdba 或 as sysoper2、disconnect说明:该命令用来断开与当前数据库的连接,但不退出 sqlplus 窗口3、password说明:该命令用于修改用户的密码,如果要想修改其它用户的密码,需要 sys/system 登录特别说明:如果给自己改密码则可以不带用户名。如
10、果给别人修改密码需带用户名(必需是 system 或者 sys 用户才可以修改)4、show user说明:显示当前用户名5、exit说明:该命令会断开与数据库的连接,同时会退出 sql*plussql*plus 常用命令介绍交互式命令1、分号结尾,功能性命令可以不带;oracle 用户管理创建用户(简单版)概述:在 oracle 中要创建一个新的用户使用 create user 语句,一般是具有 dab(数据库管理员)的权限才能使用。基本语法:create user 用户名 identified by 密码;注意:oracle 规定用户密码不能以数字开头给用户修改密码概述:如果给自己修改密码
11、可以直接使用 sqlpassword 用户名如果给别人修改密码则需要具有 dba 的权限,或是拥有 alter user 的系统权限,也可以使用 password 用户名sqlpassword 用户名;sqlalter user 用户名 identified by 新密码;特别说明:oracle 已对 oracle 操作中出现的错误进行了编号,以后遇到错误将记录编号进行网上查询解决方案。oracle 用户管理创建用户(细节)例子:sqlcreate user shunping identified by m123default tablespace userstemporary tablesp
12、ace tempquota 3m on user;identified by 表明用户 shunping 将用数据库方式验证 default tablespace users/用户的表空间在 users 上韩顺平 J2EE 视频教程玩转 oracle10g 实战教程 (全)笔记6 / 170注:笔记中所有示例,均通过测试!temporary tablespace temp/用户 shunping 的临时表建在 temp 空间quota 3m on users/表明用户 shunping 建立的数据对象(表、索引、视图、pl/sql 块)最大只能是 3m刚刚创建的用户是没有任何权限的,因此,需要
13、 dba 给该用户授权。sqlgrant connect to shunping如果你希望该用户建表没有空间的限制sqlgrant resource to shunping如果你希望该用户成为 dbasqlgrant dba to shunping表空间(oracle 独有的概念)什么是表空间?表存在的空间,一个表空间是指向具体的数据文件。为什么创建好的用户无法正常登录?oracle 中用户建立后是无法正常登录的,只有在数据库管理员(DBA)对用户分配相应的权限后,用户才可以登录。如何给用户分配权限?基本语法:grant create 权限 to 用户名;案例:sqlgrant create
14、session to xiaoming;也可以按角色对用户分配权限基本语法:grant 角色名 to 用户名;案例:sqlgrant dba to xiaoming;oracle 管理用户的机制(原理)oracle 中权限的概念权限分为系统权限与对象权限。系统权限是数据库管理相关的权限:create session (登录权限)create table (创建表权限)create index (创建索引权限)create view (创建视图权限)create sequence (创建序列权限)韩顺平 J2EE 视频教程玩转 oracle10g 实战教程 (全)笔记7 / 170注:笔记中所有
15、示例,均通过测试!create trriger (创建触发器权限).对象权限是和用户操作数据对象相关的权限。update 改insert 增delete 删select 查角色分为预定义角色和自定义角色预定义角色:把常用的权限集中起来,形成角色。常见的角色有:DBA、connect、resource自定义角色按需定制一定权限形成角色,可以作为预定义角色的补充。来满足用户的需求。oracle 用户管理用户管理的综合案例概述:创建的新用户是没有任何权限的,甚至连登录的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用使令 grant,回收权限使用命令 revoke赋权限基本语法:gr
16、ant 权限/角色 to 用户名;回收权限基本语法:revoke 权限/角色 from 用户名;oracle 用户管理删除用户韩顺平 J2EE 视频教程玩转 oracle10g 实战教程 (全)笔记8 / 170注:笔记中所有示例,均通过测试!概述:一般以 dba 的身份去删除某个用户,如果用其它用户去删除用户则需要具有 drop user 的权限基本语法:drop user 用户名 cascade;为了讲清楚用户的管理,这里举例说明:1、创建 xiaoming,并赋予 connect 和 resource创建用户基本语法:create user 用户名 identified by 密码;sq
17、lcreate user xiaoming identified by m123;给用户授权基本语法:grant 权限/角色 to 用户名;sqlgrant connect to xiaoming;sqlgrant resource to xiaoming;2、切换用户切换用户基本语法:connect 用户名/密码;sqlconn xiaoming/m123;3、xiaoming 修改密码修改密码基本语法:password 用户名;sqlpassword xiaoming;管理员修改密码基本语法:alter user 用户名 identified by 新密码;sqlalter user xi
18、aoming identified by xiaoming123;(sys 或 system 用户修改其它用户的方法)4、使用 xiaoming 建表建表基本语法:create table 表名(字段属性);sqlcreate table users(id number);5、添加数据添加数据基本语法:insert into 表名 values(值);sqlinsert into users values(1);6、查询数据查询表内容基本语法:select * from 表名;sqlselect * from users;7、删除表删除表基本语法:drop table 表名;sqldrop t
19、able users;8、回收权限(需 sys 或 system 用户)回收权限基本语法:revoke 权限/角色名 from 用户名;sqlrevoke connect from xiaoming;sqlrevoke resource from xiaoming;9、删除用户删除用户基本语法:drop user 用户名 cascade;当我们删除一个用户的时候,如果这个用户自己已经创建过数据对象,那么我们在删除该用户时,需要加cascade,表示把这个用户删除的同时,把该用户创建的数据对象一并删除。sqldrop user xiaoming;方案(schema)韩顺平 J2EE 视频教程玩转
20、 oracle10g 实战教程 (全)笔记9 / 170注:笔记中所有示例,均通过测试!理解:当一个用户,创建好以后,如果该用户创建了任意一个数据对象,此时,我们的dbms 就会创建一个对应的方案与该用户对应。方案名与用户名完全一样。小技巧:如果希望看到某个用户的方案究竟有什么数据对象,我们可以使用 pl/sql developer方案这个概念的实际应用:要求:请完成一个功能,让 xiaohong 用户可以去查询 scott 的 emp 表步骤:1、先用 scott 登录sqlconn scott/tiger;2、赋权限给 xiaohong给某用户添加表增删改查权限基本语法:grant sel
21、ect|update|delete|insert|all on 表名 to 用户名;sqlgrant select on emp to xiaohong;3、xiaohong 查询 scott 的 emp用户查询授权表的基本语法:select * from 方案名.表名;注意:方案名不带的话,默认是查询自己方案中的表。sqlselect * from scott.emp;练习题:用户创建练习:1、创建用户 tea,stu,并给这两个用户 resource,connect 角色sqlconn system/orcl;/使用 system 用户创建 tea 和 stu 用户sqlcreate us
22、er tea identified by tea;/创建 tea 用户sqlcreate user stu identified by stu;/创建 stu 用户sqlgrant resource to tea;/对 tea 用户授权 resource 权限sqlgrant connect to tea;/对 tea 用户授权 connect 权限韩顺平 J2EE 视频教程玩转 oracle10g 实战教程 (全)笔记10 / 170注:笔记中所有示例,均通过测试!sqlgrant resource to stu;/对 stu 用户授权 resource 权限sqlgrant connect
23、 to stu;/对 stu 用户授权 connect 权限2、使用 scott 用户把对 emp 表的 select 权限给 teasqlconn scott/tiger;/切换 scott 用户操作sqlgrant select on emp to tea;/将 scott 的 emp 查询权限交给 tea使用 tea 查询 scott 的 emp 表sqlconn tea/tea;sqlselect * from scott.emp;/查询 scott 的 emp 表使用 scott 用户把 emp 表的所有权限赋给 teasqlconn scott/tiger;sqlgrant all
24、 on emp to tea;/将 scott 的 emp 操作的全部权限交给了 tea使用 tea 更新/删除/插入 scott 的 emp 表sqlconn tea/tea;sqlupdate scott.emp set job=Teacher where job=sqldelete from scott.emp where job=sqlinsert into scott.emp values(8888,FORD,Teacher,7698,08-9 月-81,1500,300,20);使用 scott 收回权限sqlconn scott/tiger;sqlrevoke all on em
25、p from tea;3、想办法将让 tea 把自己拥有的对 scott.emp 的权限转给 stu;sqlconn scott/tiger;sqlgrant all on emp to tea with grant option;/with grant option 表示得到权限的用户,可以把权限继续分配/with admin option 如果是系统权限,则带 with admin optionsqlconn tea/tea;sqlgrant all on scott.emp to stu;使用 stu 查询 scott 用户的 emp 表sqlconn stu/stu;sqlselect * from scott.emp;使用 tea 收回给 stu 的权限sqlconn tea/tea;sqlrevoke all on scott.emp from stu;系统权限 with admin option对象权限 with grant option