初识oracle
前言
Oracle是一个数据库管理系统。是Oracle公司的核心产品。其数据安全性与完整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据互操作能力,使得越来越多的用户将Oracle作为应用数据的处理系统。与SQL Server相同,两者均为关系型数据库,均支持SQL 92标准,但Oracle是目前最流行的数据库。
Oracle数据库主要特点:
- 1.支持多用户、大事务量的事务处理。
- 2.在保持数据安全性和完整性方面性能优越。
- 3.支持分布式数据处理。将分布在不同物理位置的数据库用通信网络连接起来,在分布式数据库管理系统的控制下,组成一个逻辑上统一的数据库,完成数据处理任务。
- 4.具有可移植性。Oracle可以在Windows、Linux等多个操作系统平台上使用,而SQL Server只能在Windows平台上运行。
Oracle基本概念
1.数据库
- 这里的数据库不是通常情况下我们所说的数据库,而是Oracle的一个专业名词。它是磁盘上存储数据的集合,在物理上表现为数据文件、日志文件和控制文件等,在逻辑上以表空间形式存在。使用时,必须首先创建数据库,然后才能使用Oracle。可以在安装Oracle软件的同时创建数据库,也可以在安装后单独创建数据库。
2.全局数据库名
- 全局数据库名是用于区分一个数据库的标识,在安装数据库、创建新数据库、创建控制文件、修改数据库结构、利用RMAN备份时都需要使用。它由数据库名称和域名构成,类似网络中的域名,使数据库的命名在整个网络环境中唯一。如:一个网络中有两个数据库,数据库名都是orcl,若这两数据库要建立连接,则必须使用不同的域名加以区分。”orcl.prd.com” 其中 “prd.com”为域名。
3.数据库实例
- 每个启动的数据库都对应一个数据库实例,由这个实例来访问数据库中的数据。如果把数据库简单地理解为硬盘上的文件,具有永久性,则数据库实例就是通过内存共享运行状态的一组服务器后台进程。
4.表空间
- 每个Oracle数据库都是由若干个表空间构成的,用户在数据库中建立的所有内容都被存储到表空间中。一个表空间可由多个数据文件组成,但一个数据文件只能属于一个表空间。与数据文件这种物理结构比,表空间属于数据库的逻辑结构。在每个数据库中,都有个名为SYSTEM的表空间,即系统表空间,还会有SYSAUX、TEMP、UNDO、USERS等,这些都是在创建数据库时自动创建。管理员可以创建自定义的表空间并分配给用户,也可以为表空间增加或删除数据文件。
5.数据文件
- 通常,数据文件的扩展名时.dbf,是用于存储数据库数据的文件,如存储数据库表中的记录、索引、存储过程、视图、数据字典定义等。对于数据库操作中产生的一些临时数据,以及为保证事务重做所必需的数据有专门的数据文件负责存储。
6.控制文件
- 控制文件的扩展名时.ctl,是一个二进制文件。控制文件中存储的信息很多,包括数据文件和日志文件的名称和位置。控制文件是数据库启动即运行所必需的文件。当Oracle读写数据时,要根据控制文件的信息查找数据文件。
7.日志文件
- 日志文件的扩展名时.log,它记录了数据的所有更改信息,并提供了一种数据恢复机制,确保系统崩溃或其他意外重新恢复数据库。Oracle的日志是成组使用的,每个日志文件组可以有一个或多个。工作过程中,多个日志文件组之间循环使用,但一个日志文件组写满后,会转向下一个。
8.模式和模式对象
- 模式是数据库对象的集合。Oracle会为每个数据库用户创建一个模式,此模式为当前用户所拥有,和用户具有相同的名称。
Windows下启动数据库
Windows操作系统,Oracle服务的启动和关闭是以后台服务的方式来管理。Oracle每个实例都作为一项服务来启动。
OracleServiceSID服务:Oracle数据库服务。对应名为SID的数据库实例创建的,其中SID是在安装Oracle11g时输入的数据库名称。默认自动启动。如果此服务未启动,数据库客户端应用程序,如SQL*Plus连接数据库服务器时就会出错。
OracleOraDB11g_home1TNSListener服务:监听服务。Oracle服务器端的监听程序。远程连接数据库服务器,客户端必须先连接驻留在数据库服务器上的监听进程。监听器接收从客户端发出的请求,然后将请求传递给数据库服务。一旦建立了连接,客户端与数据库服务就能直接通信。监听器监听并接收来自客户端应用程序的连接请求。该服务只有在数据库需要远程访问时才需要。
OracleDBConsoleSID服务:数据库控制台服务。EMC(企业管理控制台)的服务程序(SID随安装的数据库而不同),用于使用Oracle企业管理区的程序。
如果数据库安装在本地,使用自带SQLPlus访问,只需启动OracleServiceSID服务。并且使用SQLPlus连接不能使用@。这种连接被视为本地连接。Oracle存在默认数据库服务名,本地连接时会自动连接该默认的数据库服务。
如果使用第三方工具来访问数据库,无论数据库安装在本地都必须启动OracleOraDB11g_home1TNSListener服务,Oracle会将第三方工具视为远程连接。
如果进入基于Web形式企业管理控制平台,必须启动OracleDBConsoleSID服务。
配置数据库
Oracle安装完之后,客户端需要进行数据库服务器连接访问数据,必须进行网络配置。网络配置包括服务器端配置和客户端配置,Oracle提供了“NetManager”工具。当数据库用户连接到数据库服务器时,就成为该数据的一个客户端。客户端和服务器可以在同台机器上,也可以通过网络连接不同操作系统。
1) 在Oracle服务器端配置监听器(LISTENER)
2) 客户端需要配置一个本地网络服务名(TNSNAME)
3) Oracle客户端与服务端连接是通过客户端发出连接请求,由服务器端监听器对客户端的连接请求进行合法检查,请求有效连接,否则拒绝连接。
连接数据库
创建一个新数据库时,Oracle将创建一些默认数据库用户,如Sys、System、Scott等,可以使用这些用户连接数据库。Sys和System用户都是Oracle的系统用户,而Scott是Oracle数据库的一个测试账户,包含一些测试样例表。
想要连接数据库,可以使用Oracle自带的SQL*Plus和SQL Developer工具或第三方工具。
SQLPlus工具:与Oracle数据库进行交互的客户端工具。在SQLPlus中,可以运行SQL*Plus命令和SQL语句。Create、Select、Drop、Grant、Revoke等SQL语句在执行完后,都可以保存在一个被称为SQL BUFFER的内存区域中,并且只能保存一条最近执行的SQL。
Oracle数据类型
字符数据类型
- CHAR数据类型
- VARCHAR2数据类型
- NCHAR数据类型
数值数据类型
- NUMBER数据类型
日期时间数据类型
- DATE数据类型
- TIMESTAMP数据类型
系统环境变量配置日期时间问题:新建环境变量 -> 变量名:nls_date_format/值:YYYY-MM-DD HH24:MI:SS
- LOB数据类型
- 称为”大对象”数据类型。可以存储多达4GB的非结构化信息。LOB允许对数据进行高效、随机、分段访问。LOB可以是外部的或内部的,取决于它相对于数据库的位置。
- CLOB:能存储大量字符数据。该数据类型可以存储单字节字符数据和多字节字符数据。
- BLOB:存储较大的二进制对象,如图形或视频。
- NCLOB:存储大的NCHAR字符数据。
Oracle中的表可以有多个LOB列,每个LOB列可以是不同的LOB类型。
- Oracle中的伪列
- 相当于Oracle中的一个表列,实际并未存储在表中。伪列可以从表中查询,不能插入、更新、删除它们的值。
- ROWID:数据库每行都有一个行地址,ROWID伪列返回该行地址。可以使ROWID值来定位表中一行。
能以最快的方式访问表中的一行 能显示表的行是如何存储的。 可以作为表中行的唯一标识
- ROWNUM
- 对于一个查询返回的每行,ROWNUM伪列返回一个数值代表行的次序。返回的第一行的ROWNUM值为1第二行值为2……。
- ROWNUM等于某值的查询条件:如果希望找员工第一条信息,使用ROWNUM=1.如果找员工第二条信息,ROWNUM=2则查不到。
- ROWNUM大于某值的查询条件:如果想找第二行记录以后的记录。使用ROWNUM>2得不到。原因ROWNUM是一个总是从1开始。Oracle认为ROWNUM>n这种条件依旧不成立。
- ROWNUM小于某值的查询条件:想找第11条以前的记录使用ROWNUM<11能找到。
SQL语言简介
SQL语言是高级的结构化查询语言。用户使用SQL语句进行数据操作时,只需要提出”做什么”,而不必指明”怎么做”。SQL语言是数据库服务器和客户端直接的重要沟通手段,用于存取数据,查询、更新和管理关系型数据库系统。
- 数据定义语言(DDL):Create、Alter、Truncate(截断)、Drop命令。
- schema表示对象的所有者,即模式的名称。
- table表示表名称
- column表示列名称
- datatype表示数据类型及其宽度
- 数据操纵语言(DML):Insert、Select、Delete、Update命令。
- 事务控制语言(TCL):Commit、Savepoint(保存点)、RollBack
- commit表示提交事务
- rollback表示回滚
- savepoint表示事务中创建存储点
- rollback to
将事务回滚到存储点
- 数据控制语言(DCL):Grant(授予)、Revoke(回收)
SQL操作符
- 算数操作符
+ - * /
- 比较操作符
= != < > <= >= between and in like is null
- 逻辑操作符
and or not
- 集合操作符
union(联合) union all(联合所有) intersect(交集) minus(减集)
- 连接操作符
||(将两个或多个字符串或数值合并成一个)
SQL函数
Oracle SQL提供了用于执行特定操作的专用函数。
- 单行函数
- 字符函数
- 日期函数
- 数字函数
- 转换函数(将一种类型转换为另一种)
TO_CHAR(1234.5,'$9999.9') TO_DATE('1995-1-1','yyyy-mm-dd') TO_NUMBER('1234.5')
- 其他函数(除字符函数、日期函数、数字函数、转换函数,还有其他一些单行函数统称其他函数)
- NVL(exp1,exp2)
如果exp1的值为Null,返回exp2的值,否则返回exp1的值
- NVL2(exp1,exp2,exp3)
如果exp1的值为Null,返回exp2的值,否则返回exp3的值
- DECODE(value,if1,then1,if2,then2,…,else)
如果value的值为if1,返回then1的值;如果value值为if2,返回then2的值,否则返回else的值
- NVL(exp1,exp2)
- 聚合函数(分组函数)
- 分析函数