Oracle的介绍

是一个数据库管理系统,是Oracle公司的核心产品。其在数据安全性与安整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据操作能力。基于“客户端/服务        器”(Client/Server)系统结构。

主要特点:

1.支持多用户、大事务量的事务处理。

2.在保持数据安全性和完整性方面性能优越。

3.支持分布式数据处理。将公布在不同物理位置的数据库用通信网络连接起来,组成一个逻辑上统一的数据库,完成数据处理任务。

4.具有可移植性。Oracle可以在Windows、Linux等多个操作系统平台上使用。

Oracle基本概念:

1.数据库。这里的数据库是磁盘上存储数据的集合,在物理上表现为数据文件、日志文件和控制文件等。在逻辑上以表空间形式存在。必须首先创建数据库,然后才能用Oracle。可以在Database Configuation Assistant上创建。

2.全局数据库名。用于区分一个数据库的标识。它由数据库名称和域名构成,类似网络中的域名,使数据库的命名在整个网络环境中唯一。

3.数据库实例。每个启动的数据库都对应一个数据库实例,由这个实例来访问数据库中的数据。

4.表空间。每个数据库都是由若干个表空间构成的,用户在数据库中建立的所有内容都被存储到表空间中。一个表空间可

以由多个数据文件组成,但一个数据文件只能属于一个表空间。

5.数据文件。扩展名是.dbf,是用于存储数据库数据的文件。一个数据文件中可能存储很多个表的数据,而一个表的数据也可以存放在多个数据文件中。数据文件和数据库表不存在一对一的关系。

6.控制文件。技展名.ctl,是一个二进制文件。控制文件是数据库启动及运行所必需的文件。存储数据文件和日志文件的名称和位置。Oracle 11g默认包含三个控制文件。

7.日志文件。扩展名.log,它记录了数据的所有更改信息,并提供了一种数据恢复机制,确保在系统崩溃或其他意外出现后重新恢复数据库。在工作过程中,多个日志文件组之间循环使用。

8.模式和模式对象。模式是数据库对象(表、索引等,也称模式对象)的集合。

Windows下Oracle数据库服务:

1.OracleServiceSID服务是Oracle数据库服务。此服务对应名为SID(系统标识符)的数据库实例创建的。必须启动。

2.OracleOraDb11g_homelTNSListener服务是监听器服务。要远程连接数据库服务器,必须连接监听进程,该服务只有在数据库需要远程访问时候才需要。(PL/SQL等第三方工具连接就相当于远程连接)。

3.OracleDBConsoleSID服务是数据库控制台服务,是采用浏览器方式打开的,用于使用Oracle企业管理器的程序。如果进入 基于Web形式的企业管理(EM)控制平台,必须要启动OracleDBConsoleSID服务。

企业一般是远程连接界面,直接登录你的账号与密码

连接数据库:

Sys和System用户都是Oracle的系统用户,Scott用户是Oracle数据库的一个测试账户,里男包含一些测试例表。每个用户下所有的对象称为模式对象。

1.用SQL Plus工具登录:

1)cmd->sqlplus->用户名:->密码:

2)直接打开程序SQL Plus->用户名:->密码

3)在输入用户名处->用户名/密码@网络服务名

4)命令窗口:sqlplus /nolog 这样就只是打开了sqlplus而并没有连接数据库,之后要连接数据库得继续敲:connect 用户名/密码@数据库名;

2.PL/SQL Developer工具:

1)用户名:输入System.

2)口令:输入对应密码。

3)数据库:输入已经配置好的网络服务名,如orclDB。

4)连接为:Normal普通用户;sysOper数据库操作员;sysDBA数据库管理员。

3.Java连接Oracle:

driver: oracle.jdbc.driver.OracleDriver

url: jdbc:oracle:thin:@localhost:1521:数据库名

DUAL伪表,在Oracle的查询语句中select和from关键字一定有值,但在某些情况下不需要from,如查询常量或函数,为了满足要求,Oracle使用DUAL伪表来实现要求。如: select sysdate from dual;–查询出当前系统日期和时间

Oracle数据类型:

1.字符数据类型:

1)char数据类型。当需要固定长度字符串时,使用char。长度1~2000字节。如果没有指定大小,默认1字节。如果

用户输入的值小于指定的大小,系统用空格填充。如果大于,报错。

2)varchar2数据类型,支持可变长度的字符串。大小为1~4000字节。如果用户输入的值小于指定的大小,不用填充

,varchar2数据类型可以节省磁盘空间。如果varchar2想根据定义的长度存储相应的汉字个数,可以声明为如:varchar2(10 char)

3)nchar数据类型,即国家字符集,使用方法和char相同。用来存储Unicode字符集类型,即双字节字符数据。最

小单位1字符。

4)nvarchar2与nchar类似,只是可变长度的。

2.数值数据类型number:

number数据类型可以存储正数、负数、零、定点数、精度为38信的浮点数。

语法:number(p,s) --如果不写p,s内容,是否是没有限制?

p 为精度,表示数字的有效位数,在1~38之间,从左边第一个不为0的数算起,小数点和负号不计入有效位数。

s 为范围,表示小数右边数字的位数,在-84~+127之间。

规则:首先精确到小数中右边s位,并四舍五入。如果精确后值的有效位数<=p,则正确;否则报错。

3.日期时间数据类型:用于存储日期值和时间值

1)date数据类型,用于存储表中的日期和时间数据。使用7字节固定长度,每个字节分别存储世纪、年、月、日、小时、分和秒。sysdate函数的功能是返回当前的日期和时间。

2)timestamp数据类型,用于存储日期的年、月、日以及时间的小时、分和秒。秒值精确到小数小后6位,包含时区信息。systimestamp函数的功能是返回当前日期、时间和时区。改变日期格式:

Oracle中的SQL窗口:alter session set nls date format=’YYYY-MM-DD HH24:MI:SS’;//只对当前窗口有效。

环境变量:键:nls_date_format值:YYYY-MM-DD HH24:MISS

4.游标类型,SYS_REFCURSOR类型是Oracle提供的系统游标类型。

如下,过程返回一个游标类型:

CREATE OR REPLACE PROCEDURE get_sals(cur_salary OUT SYS_REFCURSOR)ISBEGINOPEN our_salary FOR SELECT empno, sal FROM employee;END;

LOB数据类型:

LOB又称为“大对象”数据类型。我叫存储4GB的非结构化信息,如声音剪辑和视频剪辑。LOB允许对数据进行高效、随

机、分段的访问。一个表中可以有多个列被定义为LOB数据类型。可以通过PL/SQL中提供的程序包DBMS_LOB修改。

1.CLOB(Character LOB,字符LOB)存储大量字符数据。可以存储单字节字符数据和多字节字符数据,主要用于存储非结

构化的XML多档。如新闻、内容介绍等含大量文字内容的文档。

2.BLOB(Binary LOB,二进制LOB)可以存储较大的二进制对象,如图形、视频剪辑和声音剪辑等。

3.BFILE(Binary File,二进制文件)能够将二进制文件存储在数据库外部的操作系统文件中。BFILE列存储一个BFILE

定位器,指向位于服务器文件系统上的二进制文件。最大4GB。

4.NCLOB数据类型用于存储大的nchar字符数据。支持固定宽度字符和可变宽度字符(Unicode字符数据)。使用方法同

CLOB类似。

早期使用Long数据类型存储大数据。

Oracle中的伪列:

1.rouid,数据库中每一行都有一个行地址,rowid伪列返回该行地址。rowId值可以唯一标识数据库中的一行。

2.rounum,返回一个数值代表行的次序。通过使用rownum,用户可以限制查询返回的行数。

rownum对于等于某值的查询条件,可以使用rownum=1作为条件,但是不能等于大于1的值。

rownum对于大于某值的查询条件,可以使用rownum>1,但是不能大于1以上的值。

rownum对于小于某值的查询条件,可以rownum<大于1的整数。

例: select * from(select a.*,rownum rn from (  --这里设置了rownum的列别名,这样就可以在外层查询用between and语句了 select * from employee order by sal desc) a)where rn between 5 and 9;

SQL语言分类:

1.数据定义语言(DDL Data Definition):create创建、alter更改、truncate截断、drop删除

2.数据操纵语言(DML Data Manipulation Language):insert插入、select选择、delete删除、update更新

3.事务控制语言(TCL Transaction Control Language):commit提交、savepoint保存点、rollback回滚

4.数据控制语言(DCL Data Control Language):grant授予、revoke回收

数据定义语言DDL:

create table命令:create table [schema.]table_name(column_name datatype,column_name datetype,....)

schema表示对象的所有者,即模式的名称。如果用户在自己的模式中创建表,则可以不指定所有者名称。

table表示表的名称。

column表示列的名称。

datatype表示该列的数据类型及其宽度。

表名命名规则:

1)表名首字符应该为字母。

2)不能使用Oracle保留字来为表命名。

3)表各的最大长度为30个字符。

4)同一用户模式下的不同表不能具有相同的名称。

5)可以使用下划线、数字、字母,但不能使用空格和单引号。

Oracel和SQL Server数据库对象表之间的差异:

列数:Oracle,254; SQL Server,1024

行大小:Oracle没有限制;SQL Server,8060字节,加16字节指向每个text或image列。

最大行数:Oracle没有限制;SQL Server没有限制

表命名规则:Oracle,[schema.]table_name; SQL Server,[[[server.]database.]owner.]table_name

2.truncate table命令:

可以只删除表中的记录而不删除表结构,删除表中的所有行而不记录日志。

truncate table <table_name>;

数据操纵语言DML:(insert,select,update,delete)

1.选择无重复的行,在select命令中包含distinct子句。select distinct stuName,stuAge from stuInfo;2.使用列别名,列别名不会影响列的实际名称。列别名位于列表达式后面。select stuName as “姓 名”,stuAge as 年龄,stuNo 编号 from stuInfo;**如果列别名中指定有特殊字符(如空格)的列标题使用双引号括起来。**3.利用现有表创建新表。语法: create table <newTable_name>as
select {* | column(s)} from <oldTable_name> [where <condition>];复制表结构和记录:create table newStuInfo
as
select * from stuInfo;复制表指定列和记录:
create table newStuInfo
as
select stuName,stuAge,stuNo from stuInfo;只复制表结构:
create table newStuInfo
as
select * from stuInfo where 1=2;4.查看表中行数:select count(1) from stuInfo; --1比*号效率较高5.取出stuName,stuAge列不存在重复的数据记录:select stuName,stuAge from stuInfo
group by stuName,stuAge
having(count(stuName||stuAge));//“||”在这里是连接操作符,类似于“+”,意思为将两部分内容连接在一起,因为count()里面只能有一个列,所以连接起来。6.删除stuName、stuAge列重复的行(相同数据只保留一行)delete from stuInfo where rowid not in(
select max(rowid) from stuInfo group by stuName,stuAge
having (count(stuName||stuAGe)>1)
union
select max(rowid) from stuInfo group by stuName,stuAge
having (count(stuName||stuAge)=1));7.根据当前用户所有数据量>100万的表的信息
select tabke_name from user_all_tables a where a.num_rows>1000000;--user_all_tables为系统提供的数据视图,使用者可以通过查询该视图获得当前用户表中描述。

事务控制语言TCL:

1)commit:提交事务,提事务中对数据库的修改进行永久保存。

2)rollback:回滚事务,即取消对数据库所做的作何修改。

3)savepoint <savepoint_name>:在事务中创建存储点。

4)rollback to savepoint <savepoint_name>:将事务回滚到存储点。即savepoint 创建的存储点

开启事务:在Oracle中,上一次事务结束以后,数据第一次被修改时自动开启。

结束事务: ①数据被提交:发出commit命令;执行DDL或DCL语句后,当前事务自动commit;与Oracle分离。

②数据被撤销:发出rollback命令;服务器进程异常结束;DBA停止会话。

例: insert into dept values (10,’ACCOUNTING’,’NEW YORK’);

commit;

savepoint a;//a只是一个名称

insert into dept values (20,’SALES’,’NEW YORK’);

rollback to savepoint a;

rollback;–结果只有第一条记录插入成功

数据控制语言DCL:

数据控制语言为用户提供权限控制命令。数据库对象(如表)的所有者对这些对象拥有控制权限。所有者可以根据自己

的意愿决定其他用户如何访问对象,授予其他用户权限(insert,select,update,delete,…)

详解:Oracle数据库介绍 、字符、类型、语言相关推荐

  1. 【ORACLE】详解oracle数据库UTL_RAW包各个函数的模拟算法

    前言 这篇文章可能是你至今(2022-02-11)能在互联网看到的,关于utl_raw包的逻辑说得最深入的一篇文章了. 由于最近在复刻oracle中自带的包到其他数据库,因此需要对oracle中的包的 ...

  2. 手动更改oracle监听,详解Oracle数据库手动注册监听的方法

    本文主要介绍了为一个Oracle数据库(t02)配置多个监听(listener)的实验,过程有点小曲折.通过这个实验让我们来学习一下如何手动注册监听.以下是演示的过程. 1.新增两个测试的监听,lis ...

  3. oracle命令未正确结束_详解Oracle数据库终止正在进行expdp导出数据的正确操作

    概述 今天在做expdp导出时因没预估好数据量,所以需终止正在进行expdp导出数据的任务.那么怎么正确停止expdp导出任务呢?下面介绍一下我的操作过程. 1.不能用ctrl+c来终止导出(演示) ...

  4. mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...

    现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time' 原因 ...

  5. 创建数据库_详解Oracle数据库物化视图及创建物化视图索引

    概述 物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图S ...

  6. 详解ORACLE数据库硬解析、软解析、软软解析

    概述 TOM大叔的调优书中说过一句话,大概意思就是:如果有人让我写本怎样让ORACLE性能最慢的书的话我会将取消绑定变量(bind variable)做为书的第一章和最后一章,可见绑定变量的重要性.而 ...

  7. isight参数优化理论与实例详解_详解oracle数据库优化参数--cursor_sharing

    概述 大家都知道硬解析,软解析对数据库sql的执行效率影响是很大的.在Oracle中,用户输入的SQL语句要进行所谓的Parse解析过程,用于生成执行计划,这也就是Query Optimizer的主要 ...

  8. oracle select 变量_详解oracle数据库优化参数--cursor_sharing

    概述 大家都知道硬解析,软解析对数据库sql的执行效率影响是很大的.在Oracle中,用户输入的SQL语句要进行所谓的Parse解析过程,用于生成执行计划,这也就是Query Optimizer的主要 ...

  9. 详解ORACLE数据库的分区表

    此文从以下几个方面来整理关于分区表的概念及操作:     1.表空间及分区表的概念     2.表分区的具体作用     3.表分区的优缺点     4.表分区的几种类型及操作方法     5.对表分 ...

  10. 参数调整 新部署rac_详解Oracle数据库RAC架构性能优化--参数设置+优化设计

    概述 ORACLE RAC凭借其卓越的容错能力和可扩展性以及对应用透明的切换能力引领了数据库高可用架构的潮流,但在实际的生产环境中,出现的性能问题非常多,对数据库的稳定性产生很大的影响,有一些甚至影响 ...

最新文章

  1. QT的QFutureIterator类的使用
  2. android activity切换动画
  3. 【题解】 P2151 [SDOI2009]HH去散步
  4. 哈佛大学教授:排名前5%学生的秘诀就3个字,这比勤奋更重要!
  5. 新建和删除文件夹js代码
  6. OJ、ACM提交常见错误类型
  7. linux下目标文件的类型6,Linux下文件类型
  8. 斐波那契数列(递归和非递归实现)
  9. 画布上面重叠事件_python学习手札turtle库的键盘事件
  10. mysql innodb_large_prefix_那些从MySQL5.6升级到5.7的坑--innodb_large_prefix-阿里云开发者社区...
  11. 分享利用QQ群淘宝客引流变现技巧
  12. python cox模型_Cox模型的基本概念_Python数据分析系列视频课程--玩转统计模型_数据挖掘与分析视频-51CTO学院...
  13. 数学建模-插值与拟合模型
  14. 1块钱30分钟利用华为云服务器配置一台云电脑并搭建一个简易网站(步步截图较详细)
  15. 思科pt静态路由的简单配置
  16. 高德地图开发(一)显示地图与定位
  17. 使用Glide模仿微信图片加载策略
  18. 安全教育平台显示服务器繁忙,为什么安全教育平台登录不上 安全教育平台登录不上是什么原因...
  19. 使用单视点模型进行水下标定的分析
  20. Socket 和 ServerSocket

热门文章

  1. topcoder srm 686 div1 -3
  2. Unity Android 打开相册和摄像头
  3. 图片 + 未知宽高 + 垂直居中
  4. spring整合xfire
  5. JSP和JSTL获取服务器参数
  6. springBoot笔记(一) @SpringBootApplication的神奇魔力
  7. ORM框架之Mybatis(二)数据库连接池、事务及动态SQL
  8. Oracle 分析函数的使用(主要是rollup用法)
  9. 给定一个数组和一个数M,在数组中求一些数使它们的和最接近M------递归
  10. ×××,专线,BACKUP