日期:2014-05-16  浏览次数:20359 次

ORACLE 操作和管理表
数据库对象:
:: Table:存储数据
:: View:来自一个或多个表的数据的子集
:: Sequence:数字值发生器
:: Index:改善一些查询的性能
:: Synonym:给对象一个可替代的名字
	不需要指定表的大小,表的大小最终由作为一个整体分配给数据库的空间的数量定义。但是随着时间的过去一个表将使用多少空间是重要的。
	表结构可以被联机修改.
	当使用AS子查询子句时,列定义可以忽略。表在创建时没有数据,除非指定了一个查询。行通常用INSERT语句添加。

表命名和列命名规则

依照命名Oracle数据库对象的标准规则来命名数据库表和列:
:: 表名和列名必须由一个字母开始,长度在 1–30 之间。
:: 名字只能包含 A–Z, a–z, 0–9, _ (下划线),$ 和 # (合法字符,但建议不要使用)。
:: 同一个Oracle服务器用户所拥有的对象名字不能重复。
:: 名字不能用Oracle服务器的保留字。
::名字是大小写不敏感的,例如, EMPLOYEES 与 eMPloyees 或 eMpLOYEES 作为同一个名字来处理

CREATE TABLE语句.
::必须有:/./././.
	–CREATE TABLE权限
	–一个存储区域
CREATE TABLE [schema.]table(column datatype [DEFAULT expr][, ...]);
DEFAULT expr 指定默认值,在INSERT语句省略值时使用

::指定:
	–表名
	–列名、列数据类型和列的大小
create table是DDL语句,DDL语句用来创建,修改,或删除oraclew数据库的结构.这些语句会立即作用于DB,并且他们还将信息记录在数据字典中.
数据库管理员用数据控制语言 (DCL) 语句,授予权限给用户。
			引用另一个用户的表
::表属于另一个用户,不在该用户的方案中
::在那些表名字的前面使用所有者的名字作为前缀

引用另一个用户的表
	方案 (schema) 是对象的集合,方案对象直接反映数据在数据库中的逻辑结构,方案对象包括表、视图、同义词、序列、存储过程、索引、集群和数据库链接。
	如果一个表不属于本用户,那么,其所有者的名字必须放在表名的前面,例如,如果一个方案命名为USER_B,并且USER_B有一个表EMPLOYEES,那么,其他用户用下面的语句从表中取回数据:
SELECT *
FROM user_b.employees;

DEFAULT选项
::在插入时,为一个列指定一个默认值
...hire_date DATE DEFAULT SYSDATE,...

::文字值、表达式或者SQL 函数都是合法的值	././././.
::不可以是另一个列名或者伪列的值(如,伪列nextval或currval,rownum)
::默认数据类型必须与列的数据类型匹配		/./././.

   一个列可以用DEFAULT选项给予一个默认值,列该选项防止插入时输入空值到列中。

   对于带有DEFAULT关键字的INSERT和UPDATE语句,其默认值的处理方式将在 “操纵数据” 一课中讲述。


[b]创建表[/b]
::创建表

	CREATE TABLE dept
	(deptno NUMBER(2),dname VARCHAR2(14),
	loc VARCHAR2(13));
Table created.

::确认表的创建:
DESCRIBE dept



[color=red]Oracle 数据库中的表[/color]
::用户表:
	–由用户创建和维护的表的集合
	–包含用户信息
::数据字典:
	–由Oracle 服务器创建和维护的表的集合
	–包含数据库信息

在Oracle数据库中有另一个表和视图的集合称为数据字典 (data dictionary),该集合由Oracle服务器创建和维护,其中包含有关数据库的信息。

	全部数据字典表的所有者是用户SYS。数据字典表的基表很少被用户访问,因为其中的信息不容易理解,因此,用户一般是访问数据字典视图,因为视图中的信息是以容易理解的格式表示的。存储在数据字典中的信息包括Oracle服务器用户的名字,被授予用户的权限,数据库对象名,表结构和审计信息。

前缀		说明
USER_		这些视图包含关于用户所拥有的对象的信息。
ALL_		这些视图包含所有用户可访问的表 (对象表和相关的表) 的信息。
DBA_		这些视图是受限制的视图,它们只能被分配有 DBA 角色的用户所访问。
V$		这些视图是动态执行的视图,包含数据库服务器的性能、存储器和锁的信息。

查询数据字典
::查看本用户所拥有的表的名称
select table_name from user_tables;

::查看本用户所拥有的不同的对象类型
SELECT DISTINCT object_type FROM user_objects ;

查看本用户所拥有的表、视图、同义词和序列
select * from user_catalog;
	or
select * from cat;
查询数据字典:
	来看看你所拥有的各处数据库对象.
:user_tables
:user_objects
:user_catalog

	注:USER_CATALOG 有一个称为 CAT 的同义词,你可以在 SQL 语句中用该同义词代替 USER_CATALOG。


[color=red]数据类型[/color]

数据类型		说明
VARCHAR2(size)		可变长度的字符数据
CHAR(size) 		固定长度的字符数据
NUMBER(p,s)		可变长度的数字数据
DATE 			日期和时间值
LONG 			最大2G的可变长度字符数据
CLOB			最大4G的字符数据
RAW and LONG RAW	原始二进制数据
BLOB			最大4G的二进制数据
BFILE			最大4G的,存储在外部文件中的二进制数据
ROWID			一个64进制的数制系统,表示表中一行的唯一地址


VARCHAR2(size)	
可变长度字符数据(必须指定最大字符数:最小字符数是 1;最大字符数是 4000)

CHAR [(size)]
固定长度字符数据,长度的大小以字节为单位(默认和最小字符数为 1;最大字符数为 2000)

NUMBER [(p,s)]
数字,精度为p,小数为s (p是小数数字的总长度,s是小数点右边的数字长度;p的范围从1到38,  s的范围从-84到127)

DATE
日期和时间值,从公元前4712.1.1到公元9999.12.31

LONG
最大2G的可变长度字符数据

CLOB
最大4G的字符数据

RAW(size)
原始二进制数据 (必须指定最大长度,最大长度为 2000)

LONG RAW
可变长度原始二进制数据,最大2G

BLOB
二进制数据,最大4G

BFILE
二进制数据存储在一个外部文件中;最大到4G

ROWID
十六进制串,表示行在所在的表中唯一的行地址。该数据类型主要用于返回ROWID伪列



数据类型 (续)	./././.
:: 在用子查询创建表时,LONG列不会被复制。././././.
:: LONG 列不能包括在GROUP BY或ORDER BY子句中。
:: 在每个表中只能有一个LONG列。
:: 在LONG列上不能定义约束。
:: 通常用情况下使用CLOB列而不是LONG列。

	Oracle8引入了大对象 (LOB) 数据类型,它可以存储大的和非结构化的数据,例如文本、图象、视频和空间数据,最大4G。LONG列可以容易地移动到LOB列。


[b]日期时间数据类型.[/b]


数据类型		说明
TIMESTAMP		带小数秒的日期
INTERVAL YEAR TO MONTH	作为年和月的时间间隔存储
INTERVAL DAY TO SECOND	作为天、小时、分和秒的时间间隔存储

数据类型		说明
TIMESTAMP		允许带小数秒的时间被作为日期存储。有一些变异的数据类型。

INTERVAL YEAR TO	允许时间作为年和月的间隔被存储
MONTH

INTERVAL DAY TO		允许时间作为天、小时、分和秒的间隔被存储
SECOND

日期时间数据类型
::TIMESTAMP数据类型是DATE数据类型的一种扩展
::它存储DATE数据类型的年、月和日,加小时、分和秒值,以及秒的小数值

::TIMESTAMP数据类型被指定如下:
TIMESTAMP[(fractional_seconds_precision)]
fractional_seconds_precision在秒日期时间域的小数部分随意地指定0到9个数字,默认是6。

例
CREATE TABLE new_employees
(employee_id NUMBER,
first_name VARCHAR2(15),
last_name VARCHAR2(15),
...
start_date TIMESTAMP(7),
...);

start_date数据类型是TIMESTAMP,精度7指示小数秒的精度,如果不指定,小数秒的默认精度是6。

假定插入两行到NEW_EMPLOYEES表中,输出展示了显示的差异。
(DATE 数据类型以DD-MON