1.在VMware中新建一个虚拟机
(1)新建虚拟机,选择自定义(高级),点击下一步; (2)保持默认选项,点击下一步;
(3)选择稍后要安装的操作系统,点击下一步; (4)客户端操作系统选择Microsoft Windows,版本选择Windows XP Professional(注意要和后面安装的Windows版本对应),点击下一步;
(5)保持虚拟机默认名称,位置选择C:LastestSoftwareVMsXPWindows(此目录为自己创建,用于保存新建的虚拟机)cmd连接oracle数据库,点击下一步;
(6)保持默认设置,点击下一步;
(7)虚拟机内存设置稍微大一点,这样运行速度会快一些,设置为2G,点击下一步;
(8)网络类型依然选择使用host-only模式网络,点击下一步;
(9) SCSI控制器cmd连接oracle数据库,保持默认设置,点击下一步; (10)虚拟磁盘类型,保持默认设置,点击下一步;
(11)在磁盘界面,选择新建一个虚拟磁盘,点击下一步; (12) 最大磁盘大小保持默认值40.0GGB,点击下一步;
(13)磁盘文件界面,保持默认,点击下一步; (14)准备创建虚拟机界面,点击完成,至此,虚拟机创建完毕;
2.安装Windows XP Professional操作系统
之前已经在VMWare中创建了虚拟机,接下来要在虚拟机中安装WindowsXP Professional操作系统。 这个安装过程比较简单,和我们平时在自己的电脑上安装Windows操作系统类似,这里就不再介绍了。
3、安装Oracle数据库
此处使用的 Oracle 数据库版本是适用于 Microsoft Windows(32 位)的 10g 第 2 版 (10.2)。 将Oracle数据库安装包复制到WindowsXP系统,解压后进入数据库目录,双击setup可执行程序,开始Oracle数据库的安装过程,如下图:
(1) 启动Oracle安装向导后,可以看到如下图所示的界面,输入两次密码:password,点击下一步。 从图中可以看出,Oracle数据库版是企业版,功能比较全面; 默认勾选create and start the database,这样安装oracle数据库后,会自动创建对应的数据库,可以用于编程测试; 默认创建的数据库名称是orcl。 在该界面中需要为orcl数据库管理员设置相应的密码,这里设置为password; 管理员的用户名为 sys。 在Oracle中,管理员的用户名默认为sys。 相对于用户system一般来说sys有更大的权限,类似于群主(sys,数据库的拥有者,就像微信群的创建者)和管理员(system,数据库的管理员,就像微信群的管理员一样)。
(2) 安装向导程序检查大约一分钟后,弹出如下界面,这里我们需要确认网络配置,勾选正在检查网络配置要求,然后点击下一步;
(3) 接下来会看到如下图所示的界面,点击安装即可。
(4)稍等片刻,可以看到如下图的界面,说明Oracle数据库已经安装完成;
(5) 点击密码管理,可以看到如下图所示的界面。 其中employee表和department表数据目前锁定在SCOTT用户下,去掉勾选,设置新密码为tiger; 同时SH用户下还有一个订单表数据,去掉勾选,设置新密码为sh,点击确定;
(6) 现在回到数据库创建完成界面,然后点击确定,可以看到如下图所示的界面,表面Oracle数据库安装完成,点击退出即可。
(7)等待一段时间后,Oracle会自动打开一个网页,弹出下图所示界面(即Oracle图形化管理界面)。 也可以在本地Windows系统浏览器输入:1158/em进入该界面;
(8)输入用户名sys,输入密码password,选择连接身份为SYSDBA,点击登录,即可看到如下图所示界面;
(9) 点击我同意按钮,可以看到如下图所示的界面;
(10)点击左上角的管理,然后点击数据库对象下的表,可以看到如下图的界面;
(11)在scheme中输入SCOTT,点击start,可以看到如下图界面(搜索到DEPT部门表和EMP员工表);
(12)然后在plan中输入SH,点击start,可以看到如下图的界面(搜索出SALES订单表);
至此,Oracle数据库的安装介绍完毕。 下面简单介绍一下Oracle数据库的一些基本操作。
4.Oracle sqlplus的基本操作
生产环境中的db不能直接使用开发工具(如TOAD、PL/SQL Developer)连接进行数据操作,因为有非常严格的权限控制(这是为了db安全),而且只有一个开发者可以使用的方式是通过SSTHerm工具登录dbserver,然后通过sqlplus以指定的受限用户名登录,然后进行操作。 习惯了使用开发工具的方便,第一次回到sqlplus不习惯,但是只要设置一些简单的参数,sqlplus的易用性可以大大提高。
另外,经常需要将db中的数据导出到文件中。 默认情况下,导出的文件中会有很多垃圾信息,需要去除。 这时候相关的设置就非常有用了。 下面结合实际操作介绍Oracle数据库的一些常用命令。
(1)连接Oracle数据库:sqlplus scott/tiger; 查看当前用户:showuser; 查看当前用户创建的所有表:select*from tab; 运行结果如下图所示:
(2)清屏:hostcls; 切换到 sh 用户:connsh/sh; 查看当前用户:showuser; 查看当前用户创建的所有表:select* from tab; tab是一个数据字典,包括了当前用户的所有表,运行结果如下图所示:
(3)查看Oracle中创建了哪些用户:select username from dba_users;
(4)设置sqlplus模式-显示行宽(一行显示的最大字符数),查看当前linesize宽度:showlinesize; 设置线宽:setlinesize 300; 运行结果如下图所示,可以看到当linesize从80到300时,同一行显示的字数增加了,查询结果占用的行数也减少了;
(5)显示emp表的结构信息:descemp;
(6)执行一个SQL脚本文件:start file_name或@file_name;
这个命令非常有用。 在生产环境中,可以将多条sql语句保存在一个文本文件中,这样当你想执行这个文件中的所有sql语句时,直接使用这个命令即可,类似于DOS中的批处理。 举例如下:
在C:Documents and SettingsAdministrator目录下,编写了一个简单的test.sql脚本文件,内容如下图所示:
然后在sqlplus中分别执行start test.sql和@test.sql,运行结果如下图所示:
(7)设置sqlplus模式——显示总行数(当前连接有效,一个查询结果页显示的最大行数,包括显示的分界线和空白行),查看当前pagesize:showpagesize; 将页面大小设置为 300:setpagesize 300; 运行结果如下图所示。 可以看出,当pagesize从14变为100时,查询结果页面显示的行数增加,查询结果不再换页;
(8)sqlplus的优化主要通过两种方式进行:一是通过set操作实现系统参数设置(可以用show查看配置项,showall可以查看所有系统参数设置列表),比如setlinesize 120; 二、显示格式设置通过列操作实现,如altersome_column formata32; Session参数的设置是通过SQL操作实现的,比如alter sessionset….
(9) 下面介绍一些其他常用的sqlplus设置参数列表。 更全面的set集合请参考oracle官方文档:
nset feedback on/off //设置是否显示“xx line selected”字符串
nsetheading on/off //设置是否显示列名
nsettime on/off //设置是否显示当前系统时间
nsettinging on/off //设置是否显示每条SQL执行消耗的时间
nsettermout on/off //设置执行sql文件时是否在控制台打印相关信息
nsettrimout on/off //设置是否去掉每行标准输出的尾随空格
nsettrimspool on/off //设置是否去掉spool输出文件中每一行的尾部空格
(10) 显示格式的设置主要由column命令完成,其语法为:columncolumnName [format格式][heading标题],如columnlogin_id格式a32标题QQID,其中headingQQID表示login_id字段的名称在结果集中显示为:QQID,该函数与select login_id as QQID from …相同;
(11) Session参数的设置非常专业和复杂,一般开发者不会涉及,但是有两个参数通常可以自己设置:一个是设置日期时间字段的显示格式,执行下面在 sqlplus 中执行命令即可:
altersession set nls_date_format='yyyy-mm-dd hh24:mi:ss'
二是设置当前session的字符编码(每个DB的编码都会不同),这样就可以显示中文了,比如执行如下命令:
alter session set nls_lang='AMERICAN_AMERICA.ZHS16GBK'
当然,这两个参数也可以直接放在当前OS用户的环境变量中,这样就不用每次进入sqlplus都重复上面的命令,就方便多了。
五、Oracle数据库的基本操作
一、Oracle数据库的基本操作
(1)创建数据库:createdatabase mystudenttable;
(2)删除数据库:dropdatabase mystudenttable;
(3) 备份数据
n完整备份:expscott/tiger@orcl buffer=1024 file=c:back.dmp full=y
scott:用户名 tiger:密码 buffer:缓存大小 file:具体备份文件地址
full:是否导出所有文件 ignore:忽略错误,如果表已经存在,也覆盖
n导出数据库中system用户和sys用户的表:expscott/tiger@orcl file=c:backup1.dmp owner=(system,sys)
n导出指定表:expscott/tiger@orcl file=c:backup2.dmp tables=(teachers, students)
n备份远程服务器的数据库:exp用户名/密码@远程IP:端口/实例文件=存放位置:文件名.dmp full=y
(4)数据库恢复:打开cmd,直接执行以下命令,无需再次登录sqlplus;
n完全恢复:impscott/tiger@orcl file=c:back.dmp full=y ignore=y log=c:implog.txt; 指定日志很重要,便于分析和修复错误;
n导入指定表:imp scott/tiger@orcl file=c:backup2.dmp tables=(teachers,students)
n 恢复到远程服务器:imp 用户名/密码@远程IP:端口/实例文件=存放位置:文件名.dmp full=y
B. Oracletable的基本操作
(1) 创建表:createtable tablename(col1 type1 [not null] [主键], col2 type2 [not null], …);
基于现有表创建新表:select * into table_new from table_old(使用旧表创建新表); createtable table_new as select col1,col2,… 仅来自 tab_old 定义
(2)删除表:droptable tablename;
(3)重命名表:altertable tablename rename to new_tablename;
(4) 添加字段:altertable tablename add(字段名字段类型默认值是否为空);
(5)修改字段:altertable tablename modify(字段名字段类型默认值是否为空);
(6)重命名字段:altertable tablename rename column 列名为新的列名
(7)删除字段:altertable tablename drop column字段名;
(8) 添加主键:altertable tablename add primary key(col);
(9)删除主键:altertable tablename drop primary key(col);
(10) 创建索引:create[unique] index indexname on tablename(col1,…);
(11)删除索引:dropindex indexname; 注意索引是不能更改的,如果要更改,必须先删除再重建;
(12)创建视图:createview viewname as select语句;
(13)删除视图:dropview viewname;
C. Oracle数据基本操作
(1) 查询数据:select from [where] [order by [asc or desc]];
(2) 插入数据:insert into table name values(所有列的值); 或插入表名(列)值(对应值);
(3)更新数据:update table set column = new value [where condition] –> 更新满足条件的记录; update table set column = new value –> 更新所有数据;
(4)删除数据:delete from table name where condition –> 删除满足条件的记录; delete from tablename –> 删除表中的所有数据; 犯罪; –> 提交数据; 回滚; –> 回滚数据; delete模式可以恢复删除的数据,但是提交后就没有办法了; delete删除的时候会记录日志,所以删除很慢;
(5) 可截断的表名; 删除所有数据不会影响表结构,不会记录日志,数据无法恢复,所以删除速度非常快;
(6) 可删除表名; 删除所有数据,包括表结构,不会记录日志,数据无法恢复,所以删除速度也很快;
(7) 数据复制
n 表数据复制:insert into table1(select * from table2);
n 拷贝表结构:createtable table1 select * from table2 where 1>1;
n 复制表结构和数据:createtable table1 select * from table2;
n复制指定字段:createtable table1 as select id,name fromtable2 where 1>1;
D.数据库复制命令
不同的数据库有不同的语法(以SQLServer和Oracle为例),复制包括目标表已经存在和目标表不存在两种情况:
SQLServer中,如果目标表已经存在:insert into target table select* from original table;
SQLServer中,如果目标表不存在: select * into the target table from original table; (,复制表结构和数据,如果后面加上where 1=0的条件,则只复制表结构);
Oracle中,如果目标表已经存在:insert into target table select* from original table; 犯罪;
Oracle中,如果目标表不存在:createtable target table as select * from the original table; (复制表结构和数据,后面如果加上where1=0条件,指的是复制表结构)。
参考:
——《CSDN其他博文》
——《潭洲大数据课件》