Oracle数据库管理玩转实战教程学习笔记最全版.docx

上传人:b****8 文档编号:12731606 上传时间:2023-06-07 格式:DOCX 页数:134 大小:85.70KB
下载 相关 举报
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第1页
第1页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第2页
第2页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第3页
第3页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第4页
第4页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第5页
第5页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第6页
第6页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第7页
第7页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第8页
第8页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第9页
第9页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第10页
第10页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第11页
第11页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第12页
第12页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第13页
第13页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第14页
第14页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第15页
第15页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第16页
第16页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第17页
第17页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第18页
第18页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第19页
第19页 / 共134页
Oracle数据库管理玩转实战教程学习笔记最全版.docx_第20页
第20页 / 共134页
亲,该文档总共134页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Oracle数据库管理玩转实战教程学习笔记最全版.docx

《Oracle数据库管理玩转实战教程学习笔记最全版.docx》由会员分享,可在线阅读,更多相关《Oracle数据库管理玩转实战教程学习笔记最全版.docx(134页珍藏版)》请在冰点文库上搜索。

Oracle数据库管理玩转实战教程学习笔记最全版.docx

Oracle数据库管理玩转实战教程学习笔记最全版

(O管理)玩转实战教程(韩顺平)学习笔记

韩顺平—玩转oracle视频教程笔记

一:

Oracle认证,与其它数据库比较,安装

oracle的卸载

1.停止所有与ORACLE相关的服务。

2.使用OUI(OracleUniversalInstaller)卸载Oracle软件。

 “开始”->“程序”->“Oracle-OraDb110g_home1|Oracleinstallationproduct|Universalinstaller.

3.删除注册表内容。

运行regedit命令,删除下面内容:

HKEY_LOCAL_MACHINE|SOFTWARE|ORACLE注册表键,删除此键。

  HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet|Services,删除Services键下所有以oracle为首的键。

HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet|Services|Eventlog|Application,删除此键下所有以oracle为首的键。

 

  HKEY_CLASSES_ROOT,删除此键下所有以Ora,Oracle,Orcl,EnumOra为前缀的键。

  HKEY_CURRENT_USER|Software|Microsoft|Windows|CurrentVersion|Explorer|MenuOrder|StartMenu|Programs,删除此键下所有以oracle为首的键。

  HKEY_LOCAL_MACHINE|SOFTWARE|ODBC|ODBCINST.INI注册表键,删除了MicrosoftODBCFORORACLE注册表键以外的所有有Oracle字样的键值。

  HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet|Services,删除以Oracle或OraWeb为前缀的键。

4.删除环境变量。

 删除环境变量CLASSPATH,PATH中含有Oracle字样的值。

5.最后在文件系统内删除ORACLE相关的文件及目录:

删除系统盘符:

\ProgrmFiles\Oracle目录;删除ORACLE_BASE目录。

 我无法删除D:

\oracle目录,重新启动机器之后才删除

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

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

(2)system用户是管理操作员,权限也很大。

具有sysoper角色,没有createdatabase的权限,默认的密码是manager

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

也就是说sys和system这两个用户最大的区别是在于有没有createdatabase的权限。

Enterprisemanagerconsole(企业管理器)(10G新应用到浏览器中)

oracle10g是通过web管理的一般默认端口是5500,也有1158的。

访问url(请一定保证oracle服务启动了):

http:

//ip:

1158(也可能是5500)/em

http:

//机器名:

端口/em

二:

Oracle的基本使用--基本命令

sql*plus的常用命令

连接命令

1.conn[ect]

用法:

conn用户名/密码@网络服务名[assysdba/sysoper]当用特权用户身份连接时,必须带上assysdba或是assysoper

2.disc[onnect]

说明:

该命令用来断开与当前数据库的连接

3.psssw[ord]

说明:

该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用sys/system登录。

4.showuser

说明:

显示当前用户名

5.exit

说明:

该命令会断开与数据库的连接,同时会退出sql*plus

6.SHOWPARAMETERNAME;

说明:

显示当前数据库实例名(只能用sys和system查);

文件操作命令

1.start和@

说明:

运行sql脚本

案例:

sql>@d:

\a.sql或是sql>startd:

\a.sql

2.edit

说明:

该命令可以编辑指定的sql脚本

案例:

sql>editd:

\a.sql,这样会把d:

\a.sql这个文件打开

3.spool

说明:

该命令可以将sql*plus屏幕上的内容输出到指定文件中去。

案例:

sql>spoold:

\b.sql并输入sql>spooloff

交互式命令

1.&

说明:

可以替代变量,而该变量在执行时,需要用户输入。

select*fromempwherejob='&job';

2.edit

说明:

该命令可以编辑指定的sql脚本

案例:

SQL>editd:

\a.sql

3.spool

说明:

该命令可以将sql*plus屏幕上的内容输出到指定文件中去。

spoold:

\b.sql并输入spooloff

显示和设置环境变量

概述:

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

1.linesize

说明:

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

showlinesize

setlinesize90

2.pagesize说明:

设置每页显示的行数目,默认是14

用法和linesize一样

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

三:

oracle用户管理

oracle用户的管理

创建用户

概述:

在oracle中要创建一个新的用户使用createuser语句,一般是具有dba(数据库管理员)的权限才能使用。

createuser用户名identifiedby密码;(oracle有个毛病,密码必须以字母开头,如果以字母开头,它不会创建用户)

例子:

sql>createusershunpingidentifiedbym123

defaulttablespaceusers

temporarytablespacetemp

quota3monusers;

identifiedby表明该用户shunping将用数据库方式验证defaulttablespaceusers//用户的表空间在users上

temporarytablespacetemp//用户shunping的临时表健在temp空间

quota3monusers//表明用户shunping建立的数据对象(表,索引,视图,pl/sql块..)最大只能是3m

刚刚创建的用户是没有任何权限的,因此,需要dba给该用户授权.

sql>grantconnecttoshunping

如果你希望该用户建表没有空间的限制

sql>grandresourcetoshunping

如果你希望该用户成为dba

sql>grantdbatoshunping

给用户修改密码

概述:

如果给自己修改密码可以直接使用

password用户名

如果给别人修改密码则需要具有dba的权限,或是拥有alteruser的系统权限

SQL>alteruser用户名identifiedby新密码

删除用户

概述:

一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有dropuser的权限。

比如dropuser用户名【cascade】

在删除用户时,注意:

如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade;

用户管理的综合案例

概述:

创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。

给一个用户赋权限使用命令grant,回收权限使用命令revoke。

为了给讲清楚用户的管理,这里我给大家举一个案例。

SQL>connxiaoming/m12;

ERROR:

ORA-01045:

userXIAOMINGlacksCREATESESSIONprivilege;logondenied

警告:

您不再连接到ORACLE。

SQL>showuser;

USER为""

SQL>connsystem/p;

已连接。

SQL>grantconnecttoxiaoming;

授权成功。

查看CONNECT角色具有的权限;

selectrole,privilege,admin_optionfromrole_sys_privswhereupper(role)='CONNECT';

SQL>connxiaoming/m12;//后面的为密码分开来输入。

已连接。

SQL>

注意:

grantconnecttoxiaoming;在这里,准确的讲,connect不是权限,而是角色(角色是权限的集合)。

看图:

现在说下对象权限,现在要做这么件事情:

*希望xiaoming用户可以去查询emp表

*希望xiaoming用户可以去查询scott的emp表

 grantselectonemptoxiaoming

*希望xiaoming用户可以去修改scott的emp表

 grantupdateonemptoxiaoming

*希望xiaoming用户可以去修改/删除,查询,添加scott的emp表

 grantallonemptoxiaoming

*scott希望收回xiaoming对emp表的查询权限

 revokeselectonempfromxiaoming

//对权限的维护。

*希望xiaoming用户可以去查询scott的emp表/还希望xiaoming可以把这个权限继续给别人。

--如果是对象权限,就加入withgrantoption

 grantselectonemptoxiaomingwithgrantoption

我的操作过程:

SQL>connscott/tiger;

已连接。

SQL>grantselectonscott.emptoxiaomingwithgrantoption;

授权成功。

SQL>connsystem/p;

已连接。

SQL>createuserxiaohongidentifiedbym123;

用户已创建。

SQL>grantconnecttoxiaohong;

授权成功。

SQL>connxiaoming/m12;

已连接。

SQL>grantselectonscott.emptoxiaohong;

授权成功。

--如果是系统权限。

system给xiaoming权限时:

grantconnecttoxiaomingwithadminoption

问题:

如果scott把xiaoming对emp表的查询权限回收,那么xiaohong会怎样?

答案:

被回收。

下面是我的操作过程:

SQL>connscott/tiger;

已连接。

SQL>revokeselectonempfromxiaoming;

撤销成功。

SQL>connxiaohong/m123;

已连接。

SQL>select*fromscott.emp;

select*fromscott.emp

第1行出现错误:

ORA-00942:

表或视图不存在

结果显示:

小红受到诛连了。

使用profile管理用户口令

概述:

profile是口令限制,资源限制的命令集合,当建立数据库的,oracle会自动建立名称为default的profile。

当建立用户没有指定profile选项,那么oracle就会将default分配给用户。

1.账户锁定

概述:

指定该账户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用dba的身份去执行该命令。

例子:

指定scott这个用户最多只能尝试3次登陆,锁定时间为2天,让我们看看怎么实现。

创建profile文件

SQL>createprofilelock_accountlimitfailed_login_attempts3password_lock_time2;

SQL>alteruserscottprofilelock_account;

2.给账户(用户)解锁

SQL>alteruserteaaccountunlock;

3.终止口令

为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要dba的身份来操作。

例子:

给前面创建的用户tea创建一个profile文件,要求该用户每隔10天要修改自己的登陆密码,宽限期为2天。

看看怎么做。

SQL>createprofilemyprofilelimitpassword_life_time10password_grace_time2;

SQL>alteruserteaprofilemyprofile;

口令历史

概述:

如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。

例子:

1)建立profile

SQL>createprofilepassword_historylimitpassword_life_time10password_grace_time2password_reuse_time10

password_reuse_time//指定口令可重用时间即10天后就可以重用

2)分配给某个用户

删除profile

概述:

当不需要某个profile文件时,可以删除该文件。

SQL>dropprofilepassword_history【casade】

注意:

文件删除后,用这个文件去约束的那些用户通通也都被释放了。

若创建的PROFILE已经授权给了某个用户,使用CASCADE级联收回相应的限制,收回限制信息后将以系统默认的PROFILE对该用户进行限制。

加了casade,就会把级联的相关东西也给删除掉

四:

oracle表的管理(数据类型,表创建删除,数据CRUD操作)

oracle的表的管理

表名和列的命名规则

∙必须以字母开头

∙长度不能超过30个字符

∙不能使用oracle的保留字

∙只能使用如下字符A-Z,a-z,0-9,$,#等

oracle支持的数据类型

字符类

char   定长最大2000个字符。

例子:

char(10) ‘小韩’前四个字符放‘小韩’,后添6个空格补全如‘小韩’

varchar2(20) 变长 最大4000个字符。

例子:

varchar2(10)‘小韩’oracle分配四个字符。

这样可以节省空间。

clob(characterlargeobject)字符型大对象最大4G

char查询的速度极快浪费空间,查询比较多的数据用。

varchar节省空间

数字型

number范围-10的38次方到10的38次方

可以表示整数,也可以表示小数

number(5,2)

表示一位小数有5位有效数,2位小数

范围:

-999.99到999.99

number(5)

表示一个5位整数

范围99999到-99999

日期类型

date包含年月日和时分秒  oracle默认格式 1-1月-1999

timestamp这是oracle9i对date数据类型的扩展。

可以精确到毫秒。

图片

blob二进制数据可以存放图片/声音 4G  一般来讲,在真实项目中是不会把图片和声音真的往数据库里存放,一般存放图片、视频的路径,如果安全需要比较高的话,则放入数据库。

怎样创建表

建表

--学生表

createtablestudent(   ---表名

         xh      number(4),  --学号

         xm   varchar2(20),  --姓名

         sex     char

(2),    --性别

         birthday,date      --出生日期

         sal     number(7,2)  --奖学金

);

--班级表

CREATETABLEclass(

   classIdNUMBER

(2),

   cNameVARCHAR2(40)

);

修改表

添加一个字段

SQL>ALTERTABLEstudentadd(classIdNUMBER

(2));

修改一个字段的长度

SQL>ALTERTABLEstudentMODIFY(xmVARCHAR2(30));

修改字段的类型/或是名字(不能有数据)不建议做

SQL>ALTERTABLEstudentmodify(xmCHAR(30));

删除一个字段 不建议做(删了之后,顺序就变了。

加就没问题,应为是加在后面)

SQL>ALTERTABLEstudentDROPCOLUMNsal;

修改表的名字  很少有这种需求

SQL>RENAMEstudentTOstu;

删除表

SQL>DROPTABLEstudent;

添加数据

所有字段都插入数据

INSERTINTOstudentVALUES('A001','张三','男','01-5月-05',10);

oracle中默认的日期格式‘dd-mon-yy’dd日子(天)mon月份 yy 2位的年 ‘09-6月-99’1999年6月9日

修改日期的默认格式(临时修改,数据库重启后仍为默认;如要修改需要修改注册表)

ALTERSESSIONSETNLS_DATE_FORMAT='yyyy-mm-dd';

修改后,可以用我们熟悉的格式添加日期类型:

INSERTINTOstudentVALUES('A002','MIKE','男','1905-05-06',10);

插入部分字段

INSERTINTOstudent(xh,xm,sex)VALUES('A003','JOHN','女');

插入空值

INSERTINTOstudent(xh,xm,sex,birthday)VALUES('A004','MARTIN','男',null);

问题来了,如果你要查询student表里birthday为null的记录,怎么写sql呢?

错误写法:

select*fromstudentwherebirthday=null;

正确写法:

select*fromstudentwherebirthdayisnull;

如果要查询birthday不为null,则应该这样写:

select*fromstudentwherebirthdayisnotnull;

修改数据

修改一个字段

UPDATEstudentSETsex='女'WHERExh='A001';

修改多个字段

UPDATEstudentSETsex='男',birthday='1984-04-01'WHERExh='A001';

修改含有null值的数据

不要用=null而是用isnull;

SELECT*FROMstudentWHEREbirthdayISnull;

删除数据

DELETEFROMstudent;

删除所有记录,表结构还在,写日志,可以恢复的,速度慢。

Delete的数据可以恢复。

savepointa;--创建保存点

DELETEFROMstudent;

rollbacktoa; --恢复到保存点

一个有经验的DBA,在确保完成无误的情况下要定期创建还原点。

DROPTABLEstudent;--删除表的结构和数据;

deletefromstudentWHERExh='A001';--删除一条记录;

truncateTABLEstudent;--删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。

五:

oracle表查询

(1)

oracle表基本查询

介绍

在我们讲解的过程中我们利用scott用户存在的几张表(emp,dept)为大家演示如何使用select语句,select语句在软件编程中非常有用,希望大家好好的掌握。

emp雇员表

clerk 普员工

salesman销售

manager 经理

analyst分析师

president 总裁

mgr 上级的编号

hiredate入职时间

sal月工资

comm奖金

deptno部门

dept部门表

deptno部门编号

accounting财务部

research 研发部

operations业务部

loc部门所在地点

salgrade  工资级别

grade   级别

losal   最低工资

hisal   最高工资

简单的查询语句

查看表结构

DESCemp;

查询所有列

SELECT*FROMdept;

切忌动不动就用select*

SETTIMINGON;打开显示操作时间的开关,在下面显示查询时间。

CREATETABLEusers(userIdVARCHAR2(10),uNameVARCHAR2(20),uPasswVARCHAR2(30));

INSERTINTOusersVALUES('a0001','啊啊啊啊','aaaaaaaaaaaaaaaaaaaaaaa');

--从自己复制,加大数据量大概几万行就可以了 可以用来测试sql语句执行效率

INSERTINTOusers(userId,UN

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2