本文主要是介绍Oracle11g学习笔记一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
*注:此笔记为个人在学习Oracle时从教学视频、参考书上摘录整理而成,纯手打完成,如需转载麻烦表明出处,附上链接(http://blog.csdn.net/sherkyoung/article/details/25987601),谢谢!
一、服务
1、Oracle服务有很多,最重要的有两个:OracleOraDb11g_home1TNSListener和OracleServiceORCL。
2、由于服务众多,如果全部默认自动启动的话会导致开机非常的缓慢,而且有些服务并不是经常或者必须要用,可以改为手动启动以缓解开机压力。
3、OracleServiceORCL服务是oracle的主服务比较大而且最好设为自动启动。
4、OracleOraDb11g_home1TNSListener服务是oracle的监听服务也是必须开启的。
5、监听服务很容易出错,主要在于两方面:注册表的误操作和网络环境的变更。
6、注册表误操作主要指的是使用系统优化软件,优化软件将注册表清空,导致服务无法开启。
7、网络环境的变更主要指的是计算机名的改变,在oracle 10g之前在修改主机名生效后,监听五服务就会无法正常启动(11g以后会自动识别)。这种时候就需要进行手动配置了,修改listener.ora和s=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张表:BONUS、DEPT、EMP、SALGRADE
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、判断是否为空:IS(NOT)NULL
使用次愈发可以判断某个一字段的内容事都是“null”,但是null和数字0和空字符串不不同的概念。
4、指定范围的判断:IN操作符
IN操作符表示指定一个查询范围。如:查询雇员编号是7369、7566、7799的雇员信息。
SELECT * FROM emp WHERE empno IN(7369,7566,7799) ;
上述代码表示在三个编号中选择,NOT IN表示不再此范围内。注意,在IN操作符中存在null,不影响最后结果,但是在NOT IN中,如果可选范围中含有null值则结果是无任何返回值,NOT IN中出现null表示的就是查询全部数据。
5、模糊查:LIKE子句
LIKE子句的功能是提供了模糊查找的操作,例如:某些程序上的搜索操作,都属于LIKE子句的实现。但是搜索引擎的查询不会死LIKE。LIKE只会在要求性能不高的情况下使用。
匹配符:|-匹配单个字符:_
|-匹配任意多个字符:%
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、Q:SUBSTR()函数截取字符串的时候,下标是从0还是1开始的?
A:在Oracle数据库之中,SUBSTR()函数从0或1开始都是一样的;
同时该函数也可以设置为负数,便是由后向前指定截取开始点。
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(字符串):将字符串变为数字显示。
3、TO_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、时间
Oracle中DATE里面是包含时间的,但在默认情况下是不现实的,可以通过添加下面的标记实现:
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 ;
其中L是LOCALE,表示当前语言环境下的货币符号。
6、TO_DATE()函数
SELECT TO_DATE(‘1989-09-12’,’yyyy-mm-dd’) FROM dual ;
一般只在更新数据库时使用。
7、TO_NUMBER()函数
基本无用,Oracle自动实现。
通用函数(核心)
通用函数有两个:NVL()、DECODE()。
1、NVL()函数处理null
NVL是专门处理null的函数,下面是将null变为‘0’
SELECT ename,sal,comm,(sal+NVL(comm,0))*12,NVL(comm,0) FROM dual ;
2、DECODE()函数:多数值判断
DECODE()函数非常类似于程序中的if,else语句但是DECODE()函数判断的是数值而不是逻辑语句。
DECODE()函数的语法如下:
DECODE(数值|列,判断值1,显示值1,判断值2,显示值2,判断值3,显示值3,……)
判断值与显示值要成对出现。
总结
1、SQL语句的基本格式,基本语法的:SELECT、FROM、WHERE、ORDER BY的关系;
2、SCOTT用户下的所有的数据表信息,包括列的名称,作用及使用类型;
3、Orcale中的几个单行函数。
这篇关于Oracle11g学习笔记一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!