暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库的安装和基本使用

程序猿的修身养性 2021-04-21
738

1、在VMware中新建虚拟机

1)新建虚拟机,选择自定义(高级),点击下一步;(2)保持默认选项,点击下一步;(3)选择稍后安装操作系统,点击下一步;(4)在客户端操作系统中选择Microsoft Windows,在版本中选择Windows XP Professional(注意,要与稍后安装的Windows版本对应),点击下一步;

5)虚拟机名称保持默认即可,位置选择C:\LastestSoftware\VMs\XPWinddows(该目录是自己创建的,用于保存新建的虚拟机),点击下一步;

6)保持默认设置,直接点击下一步;

7)虚拟机内存设置稍微大一点,这样运行速度会快一些,设置为2G,点击下一步;

8)网络类型仍选择使用仅主机模式网络,点击下一步;

9)SCSI控制器,保持默认设置,点击下一步;(10)虚拟磁盘类型,保持默认设置,点击下一步;

11)磁盘界面选择创建新虚拟磁盘,点击下一步;(12)最大磁盘大小保持默认值40.0GGB,点击下一步;

13)磁盘文件界面,保持默认,点击下一步;(14)已准备好创建虚拟机界面,直接点击完成即可,至此,虚拟机创建完成;

2、安装Windows XP Professional操作系统

前面已经在VMWare中新建好了虚拟机,接下来就要在该虚拟机中安装Windows XP Professional操作系统。这个安装过程比较简单,跟我们平时在自己电脑上安装Windows操作系统差不多,这里就不作介绍了。

3、安装Oracle数据库

这里使用的Oracle数据库版本为10g Release 2 (10.2) for Microsoft Windows (32-Bit)。将Oracle数据库安装包拷贝到Windows XP系统中,解压缩后进入到database目录下,双击setup可执行程序,开始Oracle数据库的安装过程,如下图所示:

1)启动Oracle安装向导后,可看到如下图所示的界面,输入两次密码:password,点击下一步。从图中可以看到,该Oracle数据库版本是企业版,功能比较全面;默认勾选了创建启动数据库,这样在安装完Oracle数据库后,会自动创建相应的数据库,可用于编程测试;默认创建的该数据库名称为orcl,在该界面需要为orcl数据库管理员设置相应的密码,这里就设置为password;管理员的用户名为sys,在Oracle中,管理员用户名默认为sys,相对于用户system来说,sys权限更大,类比于群主(sys,数据库的owner,就像是微信群的创建者)和管理员(system,数据库的管理员,就仅仅是微信群的管理员)。

2)安装向导程序经过一分钟左右的检查之后,弹出下面的界面,这里需要我们确认网络配置,勾选上正在检查网络配置需求,然后点击下一步;

3)接下来会看到如下图所示界面,直接点击安装即可。

4)等待一段时间,可看到如下图所示界面,表明Oracle数据库已安装完成;

5)点击口令管理,可看到如下图所示界面。其中,员工表和部门表数据在SCOTT用户下,当前已被锁定,去掉勾选,并设置新口令为tiger;同时,还有个订单表数据位于SH用户下,去掉勾选,并设置新密码为sh,点击确定; 

6)现在又返回到数据库创建完成界面,再点击确定,可看到如下图所示界面,表面Oracle数据库安装结束,点击退出即可。

7)等待一段时间后,Oracle会自动打开一个网页,弹出如下图所示界面(即Oracle图形化管理界面),也可以在本地Windows系统浏览器中输入http://192.168.12.142:1158/em,进入到该界面;

8)输入用户名sys,输入密码password,并选择连接身份为SYSDBA,点击登录,可看到如下图所示界面;

9)点击我同意按钮,可看到如下图所示界面;

10)点击左上角的管理,再点击数据库对象下的表,可看到如下图所示的界面;

11)在方案中输入SCOTT,点击开始,可看到如下图所示的界面(DEPT部门表和EMP员工表就被搜索出来了);

12)再在方案中输入SH,点击开始,可看到如下图所示界面(SALES订单表就被搜索出来了);

至此,Oracle数据库的安装就介绍完毕。接下来稍微介绍下Oracle数据库的一些基本操作。

4Oracle sqlplus基本操作

生产环境的db没法直接用开发工具(诸如TOAD、PL/SQL Developer)来连接并进行数据操作,因为有很严格的权限控制(这是出于db安全的考量),开发人员能用的唯一途径就是通过SSHTerm工具登录到db server上面,然后用指定的受限用户名通过sqlplus登录,再进行操作。习惯了使用开发工具的便利,初次回到sqlplus的话会挺不习惯,但只要设置一些简单的参数,就可以大大提高sqlplus的可用性。

另外,还经常需要从db中导出数据到文件中,默认情况下,导出的文件中会有很多的垃圾信息,需要除掉,此时相关的设置就显得很有用处。下面结合实践操作,介绍Oracle数据库的一些常用命令。

1)连接到Oracle数据库:sqlplus scott/tiger;查看当前用户:show user;查看当前用户创建的所有表:select * from tab;运行结果如下图所示:

2)清屏:host cls;切换到sh用户:conn sh/sh;查看当前用户:show user;查看当前用户创建的所有表:select * from tabtab是一个数据字典,包含当前用户所有的表,运行结果如下图所示:

3)查看Oracle中有哪些已经创建的用户:select username from dba_users

4)设置sqlplus模式——显示行宽度(在一行上最多显示的字符数),查看当前linesize宽度:show linesize;设置linesize宽度:set linesize 300;运行结果如下图所示,可以看到,当将linesize80改为300,在同一行上显示的字数数变多了,查询结果占用的行数也变少了;

5)显示emp表的结构信息:desc emp

6)执行一个SQL脚本文件:start file_name@ file_name;

这个命令非常有用,在生产环境中,可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有sql语句时,直接使用该命令即可,类似于DOS中的批处理。举例如下:

C:\Documents and Settings\Administrator目录下,编写了一个简单的test.sql脚本文件,内容如下图所示:

然后在sqlplus中分别执行start test.sql和@test.sql,运行结果如下图所示:

7)设置sqlplus模式——显示总行数(当前连接生效,一个查询结果页面中最多显示的行数,包括显示的分割线及空白行),查看当前的pagesize:show pagesize;设置pagesize为300set pagesize 300;运行结果如下图所示,可以看到,当将pagesize14改为100后,一个查询结果页面中显示的行数变多了,查询结果不再换页显示了;

8sqlplus的优化主要通过两种方式来进行:其一,系统参数设置,通过set操作实现(可以搭配show查看配置项,show all可查看所有系统参数设置列表),如set linesize 120;其二,显示格式设置,通过column操作实现,如alter some_column format a32;而Session参数设置,通过SQL操作实现,如alter session set …

9)下面再介绍其它一些比较常用的sqlplus set参数列表,更全面的set集合可参考oracle官方文档:

nset feedback on/off    //设置是否显示“已选择xx”字符串

nset heading on/off     //设置是否显示列名

nset time on/off        //设置是否显示当前系统时间

nset timing on/off       //设置是否显示每条SQL执行所消耗的时间

nset termout on/off      //设置在执行sql文件时,是否在控制台打印相关信息

nset trimout on/off       //设置是否去除标准输出每行的拖尾空格

nset trimspool on/off      //设置是否去除spool输出文件中每行的拖尾空格

10)显示格式的设置主要由column命令完成,其语法为:column columnName [format format][heading heading],如column login_id format a32 heading QQID,其中,heading QQID表示结果集中login_id字段名显示为:QQID,功能与select login_id as QQID from …一样;

11Session参数的设置就显示很专业和复杂了,一般开发人员不会涉及到,但是有两个参数通常可以自行设置:其一是设置日期时间型字段的显示格式,在sqlplus中执行以下命令即可:

alter session set nls_date_format=’yyyy-mm-dd hh24:mi:ss’

其二是设置当前session的字符编码(编码随各个DB会有所不同),以便能够显示中文,如执行以下命令:

alter session set nls_lang=’AMERICAN_AMERICA.ZHS16GBK’

当然,这两个参数也可以直接放在OS当前用户的环境变量中,这样就不用每次进入sqlplus都去重复执行以上的命令,方便不少。

5Oracle数据库基本操作

A、Oracle database基本操作

1)创建数据库:create database mystudenttable

2)删除数据库:drop database mystudenttable;

3)备份数据

n完全备份:exp scott/tiger@orcl buffer=1024 file=c:\back.dmp full=y

scott:用户名   tiger:密码   buffer:缓存大小   file:具体的备份文件地址

full:是否导出全部文件  ignore:忽略错误,如果表已经存在,则也是覆盖

n将数据库中system用户与sys用户的表导出:exp scott/tiger@orcl file=c:\backup\1.dmp owner=(system,sys)

n导出指定表:exp scott/tiger@orcl file=c:\backup2.dmp tables=(teachers, students)

n备份远程服务器的数据库:exp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full=y

4)数据库还原:打开cmd直接执行如下命令,不用再登录sqlplus;

n完整还原:imp scott/tiger@orcl file=c:\back.dmp full=y ignore=y log=c:\implog.txt;指定log很重要,便于分析错误进行补救;

n导入指定表:imp scott/tiger@orcl file=c:\backup2.dmp tables=(teachers,students)

n还原到远程服务器:imp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full=y

B、Oracle table基本操作

1)创建表:create table tablename(col1 type1 [not null] [primary key], col2 type2 [not null], …);

根据已有的表创建新表:select * into table_new from table_old(使用旧表创建新表);create table table_new as select col1,col2,… from tab_old definition only <仅适用于Oracle>

2)删除表:drop table tablename;

3)重命名表:alter table tablename rename to new_tablename;

4)增加字段:alter table tablename add (字段名 字段类型 默认值 是否为空)

5)修改字段:alter table tablename modify (字段名 字段类型 默认值 是否为空);

6)重命名字段:alter table tablename rename column 列名 to 新列名

7)删除字段:alter table tablename drop column 字段名;

8)添加主键:alter table tablename add primary key(col);

9)删除主键:alter table tablename drop primary key(col);

10)创建索引:create [unique] index indexname on tablename(col1,…);

11)删除索引:drop index indexname;注意,索引是不可更改的,想更改必须删除重新建;

12)创建视图:create view viewname as select statement;

13)删除视图:drop view viewname;

C、Oracle data基本操作

1)查询数据:select <列名> from <表名> [where <查询条件表达式>] [order by <排序的列名> [ascdesc]]

2)插入数据:insert into 表名 values (所有列的值);insert into 表名(列) values(对应的值);

3)更新数据:update set =新的值 [where 条件] ——>更新满足条件的记录;update set =新的值 ——>更新所有的数据;

4)删除数据:delete from 表名 where 条件 ——>删除满足条件的记录; delete from tablename ——>删除表所有数据; commit; ——>提交数据; rollback; ——>回滚数据;delete方式可以恢复删除的数据,但是提交后就没有办法了;delete删除的时候,会记录日志,因此删除很比较慢;

5)truncate table tablename;删除所有数据,不会影响表结构,不会记录日志,数据不能恢复,因此删除速度很快;

6)drop table tablename; 删除所有数据,包括表结构一并删除了,不会记录日志,数据不能恢复,因此删除速度也很快;

7)数据复制

n表数据复制:insert into table1 (select * from table2);

n复制表结构:create table table1 select * from table2 where 1>1;

n复制表结构和数据:create table table1 select * from table2;

n复制指定字段:create table table1 as select id,name from table2 where 1>1;

D 、数据库复制命令

不同的数据库,语法会有所不同(以SQL Server和Oracle为例),且复制包括目标表已存在和目标表不存在两种情况:

SQL Server中,如果目标表已存在:insert into 目标表 select * from 原表;

SQL Server中,如果目标表不存在:select * into 目标表 from 原表;(,复制表结构和数据,若后面加条件where 1=0,则只复制表结构);

Oracle中,如果目标表已存在:insert into 目标表 select * from 原表;commit;

Oracle中,如果目标表不存在:create table 目标表 as select * from 原表;(复制表结构和数据,若后面加条件where 1=0,则指复制表结构)。


参考文献:

——《CSDN其他博文》

——《潭州大数据课程课件》

文章转载自程序猿的修身养性,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论