Oracle学习笔记1

  本人刚从MySQL转学Oracle,刚接触时的感觉,MySQL与Oracle在sql语法上大致相似。很大区别是MySQL与Oracle在表空间分配时的区别:MySQL可以建立多个数据库,每个数据库包含多张表。Oracle建立多个表空间,每一个表空间对应多张表。每一个表空间授权给一个用户进行使用。如此看来Oracle的表空间相当于MySQL的库,但是有一个很大的区别是Oracle中可以把一个表空间中的表分区到其他的表空间,来提升查询的速率。

  下载:   数据库 Oracle11g,可视化图形界面 Toad for Oracle 12.11

  Oracle下好后自带sqlplus,可以对 oracle数据库通过命令行进行操作;比较好用的Oracle的可视化图形界面是toad;个人目前比较偏好于sqlplus。

  下面讲一下sqlplus的操作:

  进入命令行之后通过输入 sqlplus 用户名/密码 即可进入SQL> 操作。 oracle11g有着几个默认用户 ,其中常用的有sys、system、scott。 但是通过以上行红字操作system和scott是无法进入sql操作的。需要对用户进行解锁(百度),之后才能对它们进行操作。sqlplus每次进来它的宽度linesize和每页显示个数pagesize都是设置的很不合理的。我们可以写入命令set linesize 300;与set pagesize 300; 让我们每次查询出显示的格式变得规整。但是每次重新启动oracle的操作时这些设置都会被重置。为了便捷参考文章 https://www.cnblogs.com/befer/p/5152696.html。最快的办法就是将$ORACLE_HOME/sqlplus/admin

路径下glogin.sql中末尾添加:

--SQLPLUS默认编辑器设置为vi
define _editor=vi
--默认打开DBMA_OUTPUT,这样不必要每次在输入这个命令,同时将默认缓冲池设置得尽可能大
set serveroutput on size 1000000
--假脱机输出文本时,会去除文本行两端的空格,而且行宽不定,如果设置为off(默认设置),假脱机输出的文本行宽度则等于所设置的linesize
set trimspool on
--设置选择LONG和CLOB列时显示的默认字节数
set long 5000
--设置显示的文本宽为200个字符
set linesize 200
--设置SQLPLUS多久打印一次标题,将此参数设置大些这样每页只显示一次标题
set pagesize 9999
--设置AUTOTRACE得到解释计划输出的默认宽度,一般80足够放下整个计划
column plan_plus_exp format a80
--设置SQLPLUS提示符,显示格式为用户@数据库名
column global_name new_value gname
set termout off
define gname=idle
column global_name new_value gname
select lower(user) ||'@'|| substr(global_name,1,decode(dot,0,length(global_name),dot-1)) global_name
from (select global_name,instr(global_name,'.') dot from global_name);
set sqlprompt '&gname>'
set termout on

glogin.sql将在sqlplus在启动的时候运行。相当于我们全局设置。

  MySQL与Oracle还有一个区别是事务提交,MySQL是自动进行事务提交而Oracle是不会自动提交事务的 ,关于Oracle的事物提交可以查看 https://blog.csdn.net/rudygao/article/details/18667539,前几天就遇到一个Bug写JDBC连接Oracle数据库时,通过sqlplus插入表中几条数据,然而在Java代码中死活查询不出来,原因就是没有进行事务提交。个人建议将set autocommit on (设置自动进行事务提交)也写入以上配置中;

  到这里了我们也可能不满足系统给我们提供的默认用户,我们可以尝试百度关于创建空间和用户以及将表空间授权给用户http://blog.csdn.net/loongshawn/article/details/50458950推荐一篇相关文章。首先我们查看我们表空间路径比如:C:Oracleoradataorcl 然后我们便通过文章中的操作新建.DBF文件并给这个表空间起名,接着新建用户,最后进行授权。然后发现我们在表空间中新建表进行插入操作还是没有权限。我们需要 执行SQL> grant resource to <用户名> 之后就好使了。

  接下来我就使用java通过JDBC连接Oracle。基本上的操作与MySQL没有任何差异。通过这篇文章中的代码 https://www.cnblogs.com/JimKing/p/9327748.html 可以了解一下如何进行的JDBC连接Oracle。进行驱动连接的Jar包使用 ojdbc6-11.2.0.3.jar ,进行Oracle连接的URL为 jdbc:oracle:thin:@127.0.0.1:1521:orcl

原文地址:https://www.cnblogs.com/JimKing/p/9328521.html