Oracle11g学习笔记一

*注:此笔记为个人在学习Oracle时从教学视频、参考书上摘录整理而成,纯手打完成,如需转载麻烦表明出处,附上链接(http://blog.csdn.net/sherkyoung/article/details/25987601),谢谢!


一、服务

1、Oracle服务有很多,最重要的有两个:OracleOraDb11g_home1TNSListenerOracleServiceORCL

 

2、由于服务众多,如果全部默认自动启动的话会导致开机非常的缓慢,而且有些服务并不是经常或者必须要用,可以改为手动启动以缓解开机压力。

 

3、OracleServiceORCL服务是oracle的主服务比较大而且最好设为自动启动。

 

4、OracleOraDb11g_home1TNSListener服务是oracle的监听服务也是必须开启的。

 

5、监听服务很容易出错,主要在于两方面:注册表的误操作和网络环境的变更。

 

6、注册表误操作主要指的是使用系统优化软件,优化软件将注册表清空,导致服务无法开启。

 

7、网络环境的变更主要指的是计算机名的改变,在oracle 10g之前在修改主机名生效后,监听五服务就会无法正常启动(11g以后会自动识别)。这种时候就需要进行手动配置了,修改listener.oras=tnsnames.ora两个配置文件,将文件中的HOST=[原主机名]修改成现主机名即可。

 

8、需要外部程序访问数据库的时候要进行网络管理配置,打开Oracle自带的Oracle Net Manager软件可进行设置,Oracle Net设置->本地->监听程序->数据库服务->添加数据库然后修改数据库的全局数据库名和SID即可(需与本地数据库同名?)

 

二、工具

1、数据库操作的命令用sqlplus完成,sqlplus的两种形式:sqlplus.exe纯命令行模式和sqlplus w带窗口的操作环境(较为常用)。

 

2、在登录的时候可以选择主机字符串,在sqlplus命令行操作中是默认选择为空。当有多个数据库的时候,就要选择相应的数据库的主机字符串(即数该数据库名称)。

 

3、在sqlplus中操作数据库既可以直接敲响应命令直接执行,也可以使用ed@来执行命令。

 

4@执行本地硬盘中的程序文件需要在@后加上完整的路径(包括后缀名)。但是如果文件的后缀名是.sql的话可以省略。

 

5、登录用户切换命令:conn 用户名/密码_on_install [as sysdba]

方括号内的命令可以省略,指定为操作者身份还是管理员身份。

 

6、每一张表都有其所属于的用户。所以当前用户要访问其他用户的表就必须加上完整的表名称——用户名.表明称(或者:模式名.表名称)如:select * from scott.emp ;

 

7、使用超级管理账户可以手动控制数据库实例的打开和关闭。

a) shutdown immediate;

执行这个命令就会关闭数据库实例,此时关闭sqlplus之后再打开就已无法登录到数据库了(所有帐号都是)

b)   startup;

启动数据库实例,这里发生了点小插曲……按照MLDN视频教程上所说,输入用户名为:/nolog,需密码进行登录。但是我爱sqlplus命令行界面下无法登录。后采用了一下方法成功启动数据库实例:win+R运行快速启动,输入:sqlplus /nolog这样子就可以直接登录了,然后切换到sys用户运行startup命令即可。

 

8、sqlplus可以通过host命令作为前缀调用本机的操作系统命令,如:

Host copy d:\demo.sql d:\hello.txt ;

 

9、格式化命令:

设置命令行窗口每行显示记录的长度:set linesize 300 ;

设置命令行窗口显示的记录长度:set pagesize 30 ;

 

三、总结

1、数据库的安装

2、数据库的账户(常见):[密码约定成俗]

|-sys/change_on_install |-sys/oracle

|-system/manager |-sys/oracle

|-scott/tiger |-scott/oracle

|-sh/sh (无特殊规定) |-

3、sqlplus操作

4、监听服务的错错误

四、SQL语法

SCOTT用户下的表结构

1、在Oracle学习之中重点使用的是SQL语句,本次学习中主要都是scott用户下进行,该用户下有4张表:BONUSDEPTEMPSALGRADE

2、查看表的结构

DESC EMP ;

 

 

3、部门表:dept

NO.

名称

类型

描述

1

DEPTNO

NUMBER(2)

表示部门编号由两个数字组成

2

DNAME

VARCHAR2(14)

表示部门字符最多由14个字符组成

3

LOC

VARCHAR2(13)

部门所在的位置

4、雇员表

NO.

名称

类型

描述

1

EMPNO

NUMBER(4)

表示雇员的编号由4未数字组成

2

ENAME

VARCHAR2(10)

表示雇员的姓名又10位组成

3

JOB

VARCHAR2(9)

雇员的职位最多9个字符

4

MGR

NUMBER(4)

雇员对应的领导编号

5

HIREDATE

DATE

雇员被雇佣的日期

6

SAL

NUMBER(7,2)

基本工资,其中有2为小数5位整数

7

COMM

NUMBER(7,2)

奖金(佣金销售才有)

8

DEPTNO

NUMBER

雇员所在的部门编号

5、工资等级表

NO.

名称

类型

描述

1

GRADE

NUMBER

工资的等级

2

LOSAL

NUMBER

此等级的最低工资

3

HISAL

NUMBER

此等级的最高

6、工资表(类似于工资条暂时用不到)

NO.

名称

类型

描述

1

ENAME

VARCHAR2(10)

雇员姓名

2

JOB

VARCHAR2(9)

雇员工作

3

SAL

NUMBER

雇员工资

4

COMM

NUMBER

雇员奖金

 

查询

1、简单查询

Oracle是时间上最早采用SQL语句的的数据库。

SQL语言功能强大,分为一下3组:

A)DML(数据操作语言——用于检索或修改数据

B)DDL(数据定义语言) ——用于定义数据的结构,如创建、修改或删除数据库对象

C)DCL(数据控制语句) ——用于定义数据库用户权限

简单查询表示查询表内所有数据

 

2、在简单查询中可以进行四则运算;

 

3、DISTINCT可去掉重复记录:

SELECT  DISTINCT  job  FROM  emo ;

 

4、别名

在进行简单查询的时候,显示结果列的上方出现的是运算式,,可以通过设置别名来替换。

SELECT ename,sal,comm,sal*12 FROM emp ;

SELECT ename,sal,comm,sal*12 income FROM emp ;

此时就会显示出自定义的别名而不是sal*12(尽量避免使用中文)

 

 

5、在简单查询中也常用||链接查询字段

SELECT empn||’,’||ename||’,’||job FROM emp ;

SQL语句中‘,’属于原样输出符,需要用‘’括出来。‘’表示是字符串。

 

 

限定查询

 

在之前的简单查询之中,是将所有的记录进行显示,但也可以对显示的记录进行过滤操作,这就是先定查询。

1、限定查询就是在之前查询的基础上增加了一个WERE子句,用于指定限定条件,此时语法如下:

SELECT [DISTNCT] *|字段 [别名] [,字段 [别名]]

FROM 表名称[别名]

[WHERE 条件(s] ;

WHERE子句之后可以添加多个条件,最常见的条件就是基本的关系运算:> ,>=, <, <=, |=, BETWEEN...AND, LIKE, IN, IS NULL, AND, OR,  NOT ; 

 

2、范围判断:BETWEEN...AND...

a) 查询基本工资在1500AND3000之间:SELECT * FROM WHERE sal BETWEEN 1500 AND 3000 ;

b) 求反操作:SELECT * FROM emp WHERE NOT sal BETWEEN 1500 AND 3000 ;

c) 对日期进行操作:SELECT * FROM emp WHERE hiredate BETWEEN ‘01-1-81’ AND ‘31-12-81’ ;

 

3、判断是否为空:ISNOTNULL

使用次愈发可以判断某个一字段的内容事都是“null”,但是null和数字0和空字符串不不同的概念。

 

4、指定范围的判断:IN操作符

IN操作符表示指定一个查询范围。如:查询雇员编号是736975667799的雇员信息。

SELECT * FROM emp WHERE empno IN(7369,7566,7799) ;

上述代码表示在三个编号中选择,NOT IN表示不再此范围内。注意,在IN操作符中存在null,不影响最后结果,但是在NOT IN中,如果可选范围中含有null值则结果是无任何返回值,NOT IN中出现null表示的就是查询全部数据。

 

5、模糊查:LIKE子句

LIKE子句的功能是提供了模糊查找的操作,例如:某些程序上的搜索操作,都属于LIKE子句的实现。但是搜索引擎的查询不会死LIKELIKE只会在要求性能不高的情况下使用。

匹配符:|-匹配单个字符:

|-匹配任意多个字符:%

SELECT * FROM emp WHERE ename LIKE ‘A%’ ;——查询雇员名字首字母为A的全部信息

 

6、数据排序

语法如下:

SELECT [DISTNCT] *|字段 [别名] [,字段 [别名]]

FROM 表名称[别名]

[WHERE 条件(s

[ORDER BY字段[ASC | DESC]][,字段[ASC | DESC]];

“ORDER BY”子句写在所有的SQL语句的最后。

|-排序的时候可以指定多个排序字段

|-排序的方式有两种:

升序(ASC):默认,不写也是升序;

降序(DESC):用户需要指定,由大到小排序。

SELECT * FROM emp ORDER BY sal ;

 

单行函数

1、概念

虽然各个数据库都是支持SQL语句的,但是每一个数据库都有自己所支持的操作函数,这就是单行函数。

 

2、分类

单行函数分为以下5类:字符函数、数字函数、日期函数、转换函数、通用函数

 

3、字符函数主要进行字符串的操作,例如:

UPPER(字符串|):将输入的字符串变成大写返回

LOWER(字符串|列):将输入的字符串变成小写返回

INITCAP(字符串|列):开头首字母大写

LENGTH(字符串|列):求出字符串的长度

REPLACE(字符串|列):替换

SUBSTR(字符串|列,开始点[,结束点]):字符串截取

 

4、oracle中要求必须编写完整的SQL语句,所以在Oracle中为了用户查询的方便,提供了一个“dual”的虚拟表。

 

5、QSUBSTR()函数截取字符串的时候,下标是从0还是1开始的?

A:在Oracle数据库之中,SUBSTR()函数从01开始都是一样的;

同时该函数也可以设置为负数,便是由后向前指定截取开始点。

 

6、数字函数对数字进行操作,例如:

ROUND(数字|[,保留的小数的位数]):四舍五入;

TRUNC(数字|[,保留的小数点位数]):舍弃指定位置的内容;

MOD(数字1,数字2):取模,取余数

 

7、日期函数是对日期进行的操作,例如:

查询当前的系统时间: SELECT SYSDATE FROM dual;

可以进行的操作:日期+数字、日期-数字、日期-日期

 

8、日期操作的函数:

LAST_DAY(日期):求出指定日期所在月份的最后一天 ;

NEXT_DAY(日期,星期数):求出下一个指定星期X的日期;

ADD_MONTHS(日期,星期数):求出若干个月之后的日期;

MONTHS_BETWEEN(日期1,日期2):求出两个日期之间经历的月份

 

转换函数

1、概念

Oracle的三种数据:数字(NUMBER)、字符串(VARCHAR)、日期(DATE);转换函数主要功能是完成几种数据之间的相互转换操作 

 

2、分类

TO_CHAR(字符串|列,格式字符串):将日期或是数字变为字符串显示;

TO_DATE(字符串,格式字符串):将字符串变为DATE数据显示;

TO_NUMBER(字符串):将字符串变为数字显示。

 

3TO_CHAR函数

当查询系统时间时,输入:SELECT SYSDATE FROM dual 

回显:

 

会按照“日--年的格式回显”,可以使用TO_CHAR()函数改变格式:

SELECT  TO_CHAR(SYSDATE ,’yyy-mm-dd’) FROM  dual ;

同样,也可以单独进行拆分:

SELECT  TO_CHAR(SYSDATE ,’yyyy’) FROM  dual ;

SELECT  TO_CHAR(SYSDATE ,’mm’) FROM  dual ;

SELECT  TO_CHAR(SYSDATE ,’dd’) FROM  dual ;

但这样显示也还会有一个问题:前导0.此时加入fm标记即可(即’fmyyyy-mm-dd’)。

 

4、时间

OracleDATE里面是包含时间的,但在默认情况下是不现实的,可以通过添加下面的标记实现:

SELECT TO_CHAR (SYSDATE’yyyy-mm-dd hh24:mi:ss’) FROM dual ;

其中,24表示24小时制,去掉则变为12小时制。

 

5、TO_CAHR对数字格式化

SELECT TO_CHAR(1234567890,’L999,999,999,999,999,999,999,999’) FROM dual ;

其中LLOCALE,表示当前语言环境下的货币符号。

 

6、TO_DATE()函数

SELECT TO_DATE(‘1989-09-12’,’yyyy-mm-dd’) FROM dual ;

一般只在更新数据库时使用。

 

7、TO_NUMBER()函数

基本无用,Oracle自动实现。

 

通用函数(核心

通用函数有两个:NVL()、DECODE()。

 

1NVL()函数处理null

NVL是专门处理null的函数,下面是将null变为‘0

SELECT ename,sal,comm,(sal+NVL(comm,0))*12,NVL(comm,0) FROM dual ;

2DECODE()函数:多数值判断

DECODE()函数非常类似于程序中的ifelse语句但是DECODE()函数判断的是数值而不是逻辑语句。

DECODE()函数的语法如下:

DECODE(数值|列,判断值1,显示值1,判断值2,显示值2,判断值3,显示值3,……)

判断值与显示值要成对出现。

 

总结

1、SQL语句的基本格式,基本语法的:SELECTFROMWHEREORDER BY的关系;

2、SCOTT用户下的所有的数据表信息,包括列的名称,作用及使用类型;

3、Orcale中的几个单行函数。

 

你可能感兴趣的:(Oracle)