Oracle是一个数据库管理系统,是oracle公司的核心产品.
数据库不同我们所说的数据库,而是Oracle的一个专业名词,它是磁盘上存储数据的集合,在物理上表现为数据文件,日志文件和控制文件等,在逻辑上以表空间形式存在,使用时,必须首先创建数据库,然后才能使用oracle
用于区分一个数据库的标识,利用RMAN备份时需要使用,类似域名,整个网络环境中唯一
每个启动数据库都对应一个数据库实例,由这个实例来访问数据库中的数据.
每个oracle数据库都是由若干个表空间构成的,用户在数据库中建立的所有内容都被存储到表空间中,一个表空间可以由多个数据文件组成,但一个数据文件只能属于一个表空间
每个数据库中,都有一个名为system的表空间,即系统表空间,还会有sysaux、Temp、undo、users等表空间,这些都是在创建数据库时自动创建的,管理员可以创建自定义的表空间并分配给指定用户,也可以为表空间增加或删除数据文件
通常,数据文件的扩展名是.dbf,用于存储数据库数据的文件,如存储数据库表中的记录,索引、存储过程、视图、数据字典定义。对于数据库操作中产生的一些临时数据,以及为保证事务重做所必需的数据也有专门的数据文件负责存储
一个数据文件中可能存在很多个表的数据,而一个表的数据也可能存放在多个数据文件中,即数据库表和数据文件不存在一对一的关系
通常,控制文件的扩展名是.ctl,是一个二进制文件。控制文件中存储的信息很多,其中包括数据问和日志文件的名称和位置。控制文件是数据库启动及运行所必须的文件。Oracle读写数据时,要根据控制文件的信息查找数据文件
由于控制文件的重要性,因此一个数据库至少要有一个以上的控制文件,oracle 11g默认包含桑控制文件,g各个控制文件内容相同,可以避免因为一个控制文件的损坏而无法启动数据库
日志文件扩展名是.log,它记录了数据的所有更改信息,并提供了一种数据恢复机制,确保在系统崩溃或其他意外出现后重新回复数据库
在oracle数据库中,日志文件是成组使用的,每个日志文件组可以有一个或多个日志文件。在工作过程中,多个日志文件组之间循环使用,当一个日志文件组写满后,会转向下一个日志文件组
模式是数据库对象(如表、索引等,也称模式对象)的集合。Oracle会为每一个数据库用户创建一个模式,此模式为当前用户所拥有,和用户具有相同的名称。
当需要固定长度的字符串时,使用char数据类型,这种数据类型长度1-2000字节,未指明大小,默认占用1字节。如果用户输入的值小于指定的长度,则数据库用空格填充至固定的长度。如果用户输入的值大于指定的长度,则数据库返回错误报告
数据类型支持可变长度的字符串。该数据类型的大小为1-4000字节。在定义该数据类型时,应指定其大小,与char数据类型相比,使用carchar2数据类型可以节省磁盘空间
Nchar,即国家字符集,使用方法和char相同,如果开发的项目需要国际化,那么数据类型选择nchar数据类型,nchar和char的区别在于nchar用于存储unicode字符集类型,即双字节字符数据。
日期时间数据类型用于存储日期值和时间
Timestamp数据类型用于存储日期的年、月、日以及时间的小时、分和秒、其中秒值精确到小数点后6位,该数据类型同时包含时区信息。
伪列就像oracle中的一个表列,但实际上它并未存储在表中
对于一个查询返回每行,ROWNUM伪列返回一个数值代表的次序,返回的第一行的ROWNUM值为1,返回第二行的ROWNUM值为2.通过ROWNUM伪列,用户可以限制查询返回的行数
创建表语法:
CREATE table [schema.]table
(column datatype [, colum datatype [, ...]]);
创建表时,需要指定唯一的表名称、表内唯一的列名称/列的数据类型及其宽度
删除语法:TRUNCATE table <表名>
语法:sql>select distinct 列名 from 表名
Select 列名 from 表名
Where 条件
Order by 列名 ASC,列名 DESC;(可以升降序)
列别名是为列表达式提供的另一个名称,位于列表表达式后面,并显示在列标题中。列别名不会影响列的实际名称
语法:列名后面加 as
语法:create table
As select { * | colum (s)}
From
复制到新表
Create table 新表名
As select 列名 from 表名
查看表中行数
Select count(1) from 表名
取出不存在重复数据的记录
Select 列名 from 表名
Group by 列名
Having(count(列名||列名)<2);
||操作符为链接操作符,将在本章sql操作符部分介绍。连接操作符类似sql server中的+,意思为将两部分内容连接在一起。
控制语言为用户提供权限控制命令。数据库对象的所有者对这些对象拥有控制权限所有者可以根据自己的意愿决定其他用户如何访问对象,授予其他用户权限,使他们可以在其权限范围内执行操作。
算术表达式由NUMBER数据类型的列名、数值常量和连接他们的算术操作符组成组成。算术操作符包括+、-、*、/、
比较操作符用于比较两个表达式的值。比较操作符包括=、!=、<、>、<=、>=、between...and(检查是否在两个值之间)
逻辑操作符用于组合多个比较运算的结果以生成一个或真/假的结果,逻辑操作符包括AND(与)、OR(或)、和NOT(非)
集合操作符将两个查询的结果组合成一个结果集.可以在SQL中使用下面的集合操作符来组合多个查询中的行
操作符返回两个查询选定的所有不重复的行.
操作符合并两个查询选定的所有行,包括重复的行
操作符只返回两个查询都有的行.
操作符只返回由第一个查询选定而未被第二个选定的行,即在第一个查询结果中出现的行.
使用集合操作符连接起来的select语句中的列遵循一下规则
连接操作符(||)用于将两个或多个字符串合并成一个字符串,或者将一个字符串与一个数值合并在一起
提供了用于执行特定操作的专用函数.oracle将函数大致划分为单行函数、聚合函数和分析函数。单行函数可以大致划分为字符函数、日期函数、数字函数、转换函数及其他函数
将值从一种数据类型转换为另一种数据类型。
此函数语法为TO_CHAR(d |n [,fmt]),其中,d是日期,n是数字,fmt是指定日期或数字的格式。
TO_DATE函数将char或varchar数据类型转换为日期数据类型。格式模型fmt指定字符的形式。
TO_NUMBER函数将包含数字的字符串转换为NUMBER数据类型,从而可以对该数据类型执行算术运算
NVL(exp1,exp2)如果exp1的值为null,则返回exp2的值,否则返回exp1的值
分析函数的语法:函数名([参数]) over ([子区子句][排序子句])
在语法中:
函数返回唯一的值,当遇到相同数据时,排名安装记录中记录的顺序依次递增
函数返回唯一的值,当遇到相同数据时,所有相同数据的排名都是一样的
函数返回一个唯一的值,当遇到相同的数据时,所有相同的数据的排名都是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名