Oracle学习札记(未完待续)

Oracle学习笔记(未完待续)

前言
   一个好的技术只能决定你的开始,不能决定你的以后。
   技术+项目管理+CMM+心理学+会计+金融。  
   第一年:做2~4个项目,第二年:编写一些文档(离项目经理不远了),第三年:有一定的管理能力的话就成为经理了,开始进行一些业务上的设计。
  
1、大型数据库DB2(只限制于IBM的产品),oracle。
2、Oracle 8/8i:i表示的是internet,意味着oracle开始向网络发展,但是这个版本属于过渡版本。
3、Oracle 9i:是现在使用最广泛地版本,是Oracle的升级版,共3CD。
4、Oracle 10g:是一个过渡性的产品,g表示的网格就算,700M。
5、Oracle 11g:是一个完整性的产品,1.8G。
6、安装时,关掉防火墙和网络!
7、全局数据库名我设的为orcl,SID为orcl
8、密码是oracleadmin
9、主要有四个用户:
   超级管理员:sys/change_on_install
   普通管理员:system/manager
   普通用户:scott/tiger(scott是oracle创始人之人,他有一只叫做“tiger”的猫)
   大数据用户:sh/sh
10、在安装过程过,一定要选上“创建带样本方案的数据库”,则以后不会出现大数据用户(实验用)。
11、最好将 oracle服务改成手工服务,否则启动电脑速度变慢。
12、有两个重要的服务:
    监听服务: OracleOraDb10g_home1TNSListener
               如果有程序要操作数据库,或者是一些远程的客户端要连接数据库则必须启动此服务;
    数据库的实例服务:OracleServiceORCL
               保存数据库的具体信息的服务,每一个数据库都有一个数据库实例(服务)。
               命名规则:OracleServiceXXX,XXX是配置的数据库名称(严格来讲是SID名称)。
13、卸载:
    a.直接运行卸载程序
    b.删除硬盘上的残留文件,如果删除不掉则先进入到安全模式下删除;
    c.同时删除注册表中所有与Oracle有关的配置项;
    如果没有正常的安装成功,则必须进行卸载,直接用b和c就可以完成卸载。
14、Oracle监听服务经常出现的错误
    错误一:注册表使用了优化软件被删除了相关项
    对于每一个系统服务实际上都会在注册表中有所保存;
     运行-> regedit->进入注册表编辑器。搜索OracleOraDb10g_home1TNSListener,右击->复制项名称-》得到监听注册项“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\OracleOraDb10g_home1TNSListener”
     里面有一个“ImagePath”的选项,这个选项有可能会在使用优化软件的时候被自动的删除,如果被删除的话则应该建立一个新的项。名称为“ImagePath”,数值数据为“D:\oracle\product\10.2.0\db_1\BIN\TNSLSNR”,BIN里Oracle的可执行程序,TNSLSNR是监听的启动程序。 TNSLSNR.exe 也可能是恶意软件所伪装,尤其是当它们存在于 c:\windows 或 c:\windows\system32 目录,所以优化器有可能把它优化掉!!!
    错误二:网络环境的改变
    在Oracle 10g里面,如果网络的环境改变了,有可能原始的网络就无法正常工作,此时就必须手工进行网络配置的修改。网络环境的改变最多就是电脑名称的修改。这个问题11g版本可以自动进行重新配置,但是10g或者以前的版本,只能手工修改。否则监听服务无法正常启动,因为网络环境发生改变了。必须修改网络配置文件:
    配置文件路径:D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN
    有两个配置文件:listener.ora和tnsnames.ora(可以用记事本打开),把两个文件里的HOST的值改为修改过的计算机名称,之后再重新启动监听服务。但是以后如果使用程序连接Oracle 10g的话,则以上的配置有可能还是不能正常访问数据库,此时可以进入到第二步操作,进行数据库名称的注册,配置和移动工具-》Net Manager,-》监听程序-》LISTENER-》数据库服务。按照图1.保存。

Oracle学习札记(未完待续)
保存以后则在listener.ora中多出下列:
  (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (SID_NAME = ORCL)
    )
在BIN在也有一个监听状态的的检查命令LSNRCTL.EXE
打开后运行如图2

Oracle学习札记(未完待续)
   
15、对于Oracle数据库操作主要使用命令行方式,而所有的命令都使用sqlplus完成,sqlplus有两种形式:
    a:dos风格,sqlplus.exe
    b:windows风格,sqlplusw.exe
直接在“运行”中敲入“sqlpus”进入dos,“sqlplusw”进入window。
在sqlplus中会有折行、折页问题,在sqlplus中也有折行、折页问题,但是可以调整,所以sqlplusw用得较多。
Oracle学习札记(未完待续)

“主机字符串”为空时表示找到默认的实例(orcl数据库),如果这里有多个数据库的话,这里就写上数据库的名称。

16、sqlplusw.exe也有折行,和折页的问题
Oracle学习札记(未完待续)

但是可以通过两个格式化命令进行调整:
  
   a.设置每行显示的记录长度:set linesize 300;
Oracle学习札记(未完待续)

但是有折页(有两行字段名),默认打印13行,
   b.设置每页显示的记录长度:set pagesize 30;

Oracle学习札记(未完待续)

   虽然sqlplusw显示上方便一些,可是对于命令的编辑上却不是很方便。如果正常的操作,命令写错了,则肯定能使用方向键移到错误的位置上进行修改。但是在sqlplusw中,方向键只能控制屏幕的移动。所以在sqlplusw中提供了ed和@指令(在sqlplus中也可以使用),可以进行记事本的调用和执行。
    a.使用ed,调用记事本程序。
在命令行输入ed a,则会弹出
Oracle学习札记(未完待续)

选择是, 但是使用ed打开记事本之后,sqlplusw窗口会进入到阻塞状态,无法使用。
     b.使用@执行:@a。
     但是在winidows中,由于提供了许多的方便的编辑软件,所以一般会在外部编辑程序,例如,在D盘上建立一个demo.txt的文件,里面有sql语句。要读取键盘上的文件,则必须写上完整的路径:@D:\demo.txt。而且如果这个文件的后缀是*.sql,则不用输入文件后缀(demo.sql),输入:@d:\demo或者@d:demo。
     我个人的爱好是:在编辑软件中写sql,复制、粘贴就行了。

17、sqlplus中set linesize 300无效(因为dos窗口的宽度不变),set pagesize 30有效(长度可变)。
Oracle学习札记(未完待续)

18、
   在一个数据库中,会有许多的用户(现在已知的是四个用户),这每一个用户下都会有多张自己的数据表,所以要想查看所有的数据表,则可以使用如下的命令:
   select* from tab;
19、
   show user用于显示当前的登录用户。
20、
  直接进行用户的登录切换
  conn 用户名/密码[as sysdba/sysoper] 例如:conn sys/change_on_install as sysdba;
  “[]”,为可选的,sysoper为普通操作者。
  但是,一旦使用了sys连接之后,则无法直接查询emp表数据。 对于每张表,都有其属于的用户,所以一张表的完整名称是“用户名.表名称”或者说是“模式名.表名”。所以要想访问其他用户的表,应该加上用户名,如:select*from scott.emp。
21、 
  但是一旦使用了超级管理员登陆的话 ,可以通过手工的控制数据库实例的打开和关闭,
  a.关闭数据库实例命令:shutdown immediate
  一旦关闭以后用户无法直接连接到数据库,
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

   此时可以在sqlplusw中,先使用“/nolog”登录,之后使用管理员登录,conn sys/change_on_install as sysdba,然后启动数据库实例“startup”。
Oracle学习札记(未完待续)

22、
   sqlplusw也可以调用操作系统命令,使用“host”作为前缀。例如:host copy d:\demo.sql d:\hello.txt。
  

23、
  查看所有表名称
  select*from tab;
24、
  查看表结构
  desc 表名称
25、
   number(2):由两位数字组成;
   varchar2(14):最多由14个字符组成;
   date:日期类型
   number(7,2):两位小数,五位整数,共7位
   number:数字
26、  
   重复数据:指的是一行中的每列的记录都重复,才叫重复数据。
   select distinct ename,job from emp;
Oracle学习札记(未完待续)

27、
  改变列的名字:
  select ename,sal*12 nianxin from emp;
Oracle学习札记(未完待续)

28、  
  四则运算
  select ename,(sal+200)*12+300 nianxin from emp;
29、
  使用“||”连接查询的字段
  select empno||','||ename  from emp;
Oracle学习札记(未完待续)

  由于“,”属于原样输出的字符串,所以必须使用单引号括起来,在sql语句中,单引号表示字符串。
加上表头“雇员编号和名字”
  select empno||','||ename 雇员编号和名字 from emp;

Oracle学习札记(未完待续)
30、
  “||”举例
   select '雇员编号是:'||empno||'的名字是'||ename||'基本工资是:'||sal||',职位是'||job||'。' 雇员信息 from emp;

加上表头“雇员信息”
Oracle学习札记(未完待续)

31、
  select*from emp where (job='CLERK' or job='SALESMAN') and sal>1200;
32、
  下面的效果是一样的
  select*from emp where job<>'CLERK';
  select*from emp where job!='CLERK';
  select*from emp where not job='CLERK';
33、
  between and 也对日期起作用
   select*from emp where HIREDATE between '01-1月-1982' and '31-12月-87';
Oracle学习札记(未完待续)

34、
  只要列值中没有任何形式的值就是null。
Oracle学习札记(未完待续)

35、
  关于not in的问题
  a.正常情况下
  select*from emp where empno in(7369,7566,null);
  如果在in操作符中使用了null,则不会影响查询。
  b.not in
  select*from emp where empno not in(7369,7566,null);
  不会有任何的查询结果返回!,以后会讲解为什么not in 中不能出现null,而且:如果not in中出现了null就表示的是查询全部数据。
36、
  模糊查询
  a.
  select*from emp where ename like '%A%';
  查出带有字母“A”的雇员。
  b.%%
  在使用like子句的时候有一个最大的注意点:如果不设置任何关键字的话('%%')则表示查询全部记录:
  这个特点可以节约很多的代码,一定要记住!!!
37、
  order by一定是放在where之后.
  升序asc(默认),降序desc。
  下面效果是一样的:
   select*from emp order by sal;
   select*from emp order by sal asc;
38、
   按照工资由高到低,如果工资相同,则按照雇佣日期由早到晚排序:
   select*from emp order by sal desc,hiredate asc;
Oracle学习札记(未完待续)

39、
  每种数据库系统都有自己的操作函数,即单行函数;
  单行函数主要分为以下五类:字符函数、数字函数、日期函数、转换函数、通用函数;
40、 


 

 

1楼linwaterbin7分钟前
技术+项目管理+CMM+心理学+会计+金融nn这话实在