Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1411768
  • 博文数量: 416
  • 博客积分: 13005
  • 博客等级: 上将
  • 技术积分: 3297
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 16:26
文章分类

全部博文(416)

文章存档

2014年(1)

2013年(4)

2012年(46)

2011年(64)

2010年(12)

2009年(4)

2008年(40)

2007年(187)

2006年(58)

分类: Oracle

2007-02-02 09:44:24

ORACLE PLSQL使用经验总结_3
建和管理表 
数据会分配一定的空从而定表的大小,所以表的大小不用指定。表可容最多1000列。表可在用使用数据的同时创建,而且表的构可在表修改。 
如没有指定,数据CHAR的列默认长1度的范12000 
当一个列中数据的精度未知(如可能是44.354.3567),定
义这列的数据使用NUMBER数据型,而不是NUMBER(p,s) 数据型,NUMBER(p,s)用于定点数。LONG数据用于度不定,最大值为2G的字符型数据。 
RENAME
句的:RENAME old name TO new name; 注意要是表名中包含空格,符号或数字,必使用双引号。 
TRUNCATE TABLE table 
命令把表中的所有行除,并存容量参数重置义值命令DDL命令,不能回, DROP TABLE命令把表的行,相的索引和表构一并除,但不能放存。要成功TRUNCATE TABLE 命令,你必须拥表或DELETE TABLE的系统权限。 
CREATE TABLE子句中使用子查询,新表中的列数必与子查询返回的列数相等,列位置对应。另外,除NOT NULL束外,新列不会承源列的所有束。 
你不能列重命名。在表中添加一列,你不能指定列的位置,它会被默放置在最后。你可以一列增加度。 通常当一列包含数据,你不能修改列的数据型,不能减少一列的度,但当列中包含空或你不改列的大小,你可以把CHAR 转换为VARCHAR2数据型。 
DROP TABLE table命令后加上CASCADE CONSTRAINTS回把表中的相关约束一并除。如命令:"DROP TABLE employee CASCADE CONSTRAINTS;"会把employee表中的数据,构,和关约束一并除。 
ORACLE
的表名必以字母开头,表名中可包含数字09,符号:“$”“_”“#”。表名不是大小写敏感的,如没指定,在建表认为大写。 
同一个用不能有两个同名的象,即表的命名不能重 
如在建新表查询引用另一表的列,无需新列定数据型,因数据型在里是可承的,除非你在新表中把些列改了名。 
当你建一个数据VARCHAR2的列,必指定度。 
其他数据库对 
义词时句中出PRIVATE OR REPLACE 是无效的。在你自己的方案(schema)中建同义词时,方案名不是必的。如果方案的主人希望所有用访问自己方案中的表,使用PUBILIC关键字。法: 
CREATE [PUBILIC] SYNONYM synonym  FOR object ; 
CURRVAL
列用于在当前序列中连续序列号,它能用在UPDATE句的SET子句中和INSERT句的VALUES子句中,可以用在INSERT句的子查询SELECT列表中。但不能用于视图SELECT句和HAVING子句的SELECT句中。 
除一个自己的序列,你必须拥DROP SEQUENCE限,要人的序列,你必须拥DROP ANY         
SEQUENCE
限。 
如果建序列没有指定参数ORACLE分配的默认值20会使用。 
序列的法: 
CREATE SEQUENCE name 
[INCREMENT BY n] 
;指定序列以n增,如果没指定,默认值1会使用 
[START WITH n] 
;由n
 
[(MAXVALUE n | NOMAXVALUE)] 
置最大n或不置最大 
[(MINVALUE n | NOMINVALUE)] 
置最小n或不置最小 
[(CYCLE | NOCYCLE)] 
;当达到最大值时或不循 
[(CACHE n | NOCACHE)] 
分配存大小,默认为20 
不是任何情况建索引都能提高效率,要是在不适合建索引的情况下建了索引,反而会降低效率。 
建索引的情况: 
列中包含的很大列中包含大量空值;WHERE子句或接条件中常使用多个列;表很大,但看的行不足24%。 
当使用索引的情况: 
表很小;某列在查询的条件中不常使用;看的行大于24%;常更新。 
由于序列号独立于表存的,所以一个序列可用于多个表中。 
示一序列的下一查询伪SYS.DUAL,如: 
SELECT parts_id.NEXTVAL FROM SYS.DUAL; 
里的parts_id是序列名。 
建索引
CREATE INDEX index_name ON table_name (column[, column] . . .); 

阅读(1025) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~