日期:2014-05-16 浏览次数:20411 次
数据库对象: :: 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