Oracle-初学笔记

1、SQL语句的分类

数据定义语言(DDL)

DDL语句可以定义数据库对象,以及产生对Oracle数据字典的更新。DDL语句可以创建、修改和删除各种对象,例如表、视图、存储过程、数据库触发器、数据库链接以及数据库中几十种其他的对象。

数据操纵语言(DML)

DML使用Insert、Update、Delete、Select来操纵数据。

在Oracle环境中,支持一种称为一致性读映像的概念,即用户在通过Insert、Update和Delete语句对数据库做出未提交的更改的同时,并不会妨碍另一个用户发出的Select语句。Commit语句建立一个新的检查点,利用该点可以及时地将表数据更新到一个一致点上。从一条Select语句返回给用户的结果肯定是来自最近一次执行Commit时的那些行。

事务控制

也就是,要么“所有语句都成功完成”,否则,只要有语句失败,那么这一组内所有语句都要失败。

会话控制

会话控制语句维护用户数据库连接期间的临时性和持久性。例如下面一个常见的修改会话命令:

SQL>alter session set nls_date_format = 'yyyy-mon-dd hh24:mi:ss';

SQL>select sysdate from dual ;

查询结果:

2008-10-25 23:42:49

系统控制

系统控制语句基本上都是数据库管理命令。这些SQL语句用于打开数据库、关闭数据库,以及执行一些管理命令。

2、表列数据类型

字符

VARCHAR2(n)

VARCHAR2是常见的字符串类型,用于存储最长为4000个字符的字符串。实际上,这是一种变长度的字符串。它只是用所需的最少字节-没有填充。参数n是必需的。

CHAR(n)

CHAR用于存储固定长度的字符串。如果所插入的长度小于CHAR所声明的长度,则右边以空格填充

NCHAR(n)、NVARCHAR2(n)

这两种类型仅用于存储Unicode字符数据。

数字

NUMBER、NUMBER(a)、NUMBER(a,b)

这种列类型用于存储数字。不要使用精确的参数来存储未知范围的值。参数“a”代表精度,即占位符的总位数。参数“b”表示刻度,即小数位右边的位数。刻度是可选的,如果没有这个参数,则将作为整数存储。对于分数,在插入时将被四舍五入为最接近的整数。如果只是使用刻度,则可以使用NUMBER(*,b)。

日期类型

DATE

DATE类型用于存储日期和时间。DATE类型的默认显示格式为DD-MON-YY,通过alter session命令,可以修改这种默认的显示格式。

TIMESTAMP、TIMESTAMP(a)

TIMESTAMP数据类型是从DATE类型派生而来的。它可以表示与DATE具有相同精度的时间,并且包括秒的小数部分。参数“a”表示时间戳小数部分的位数。TIMESTAMP可以结合时区。分布在多个不同时区的应用程序很可能会使用这种类型的日期列。INTERVAL类型以特定的有效位表示时差。TIMESTAMP的格式为:

28-JUL-03 01.25.56.000122 PM

大型对象

CLOB、BLOB、NCLOB

使用CLOB存储大型字符对象,上限是4GB。而VARCHAR2最长4000字符。基于字符的列如果超出4GB,则应该使用CLOB类型。使用BLOB存储4GB的二进制数据。对CLOB、BLOB的操作是通过一个CLOB/BLOB API进行的。该API是Oracle的内置包DBMS_LOB。NCLOB类型存储使用国家字符集(National Character set)的4GBUnicode字符对象。

BFILE

对象不必物理存在一个列中。实际上,列可以作为对象的引用。这样的对象可以是主机磁盘上的一个文件。BFIEL可以作为对外部文件的引用。而外部文件的内容这通过DBMS_LOB API来访问。注意下面创建Oracle目录要求拥有create any directory的权限。

create or replace directory
student_files as 'D:/student_files';
create table student_writing_samples
(
student_id varchar2(10),
writing_samples bfile
);

XML类型

XMLType

XMLType是随Oracle9i/Release 2一起发布的。这种类型用于存储XML文档,作为某个实体的属性。

create table student_transcripts
(
student_id varchar2(10),transcript sys.xmltype
);

XMLTYPE有内置方法。如:

insert into student_transcripts (student_id,transcript)
values ('A101',sys.xmltype.createxml(
'<student_transcript>'
||'<class>'
||'<course>Math 101</course>'
||'<grade>A</grade>'
||'</class>'
||'<class>'
||'<course>English 102</course>'
||'<grade>A</grade>'
||'</class>'
||'</student_transcript>'));

LONG和RAW类型

LONG

在版本8中,Oracle引入了对大型对象的支持。在此版本发布之前,超出VARCHAR2类型范围的字符串可以通过使用LONG数据类型来操纵,不过功能有所限制。现在超出VARCHAR2限制的字符串可以作为CLOB。

RAW、LONG RAW

与LONG类似,在Oracle8提供LOB支持之前,RAW和LONG RAW数据类型也有其用途。RAW和LONG RAW类型用于操纵二进制数据。

ROWID类型

ROWID、UROWID

ROWID包含组合信息,运行Oracle标识,形成一个单独的ROWID值,通过这个值可以定位一个表中某个特定行(即表空间、文件、数据库块以及在块中的特定位置)。可以声明一个带有ROWID类型的列的表。用ROWID值填充该表,并且使用Oracle内置包DBMS_ROWID提取该值的信息。UROWID是一种通用ROWID值,它支持非Oracle的表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值