Oracle11g学习笔记一

2024-06-16 01:32
文章标签 学习 笔记 oracle11g

本文主要是介绍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中的几个单行函数。

 

这篇关于Oracle11g学习笔记一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065144

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件