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

Oracle基础二

数据表基本操作

?

数据库的数据逻辑上是存储在表空间中,物理上是存储在数据文件中。

创建数据表

CREATE TABLE TABLE1(ID NUMBER(3) NOT NULL,NAME VARCHAR2(20) NULL);

CREATE TABLE TABLE1 AS SELECT ID,NAME FROM TABLE2;

注意:如果查询涉及到Long数据类型,那么CREATE TABLE ...AS SELECT 不会工作。

?

修改数据表

增加列

ALTER TABLE TABLE1 ADD createDate DATE;

修改列

ALTER TABLE TABLE1 MODIFY?NAME VARCHAR(30);?

注意:大部分时候列的值为空才能修改。

删除数据列

ALTER TABLE TABLE1 DROP COLUMN NAME ;

?

?

更改表名

RENAME oldname TO newname;

?

?

删除表

DROP TABLE? TABLE1;

?

清空表数据

TRUNCATE TABLE? TABLE1;

?

注意区别

区别
1。delete from后面可以写条件,truncate不可以
2。delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少
3。delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页
4。当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。
5。如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,而truncate后,种子会恢复初始
6。truncate不会触发delete的触发器,因为truncate操作不记录各个行删除

?

?

约束

非空约束 NO TNULL(简单不用演示)

唯一 UNIQUE

column_name data_type constraint 约束名 unique//单列数据

constraint 约束名(多列) unique using index tablespace(table_name) storage(stored clause)

添加约束

alter table 表名 add constraint 约束名 unique(列名) using index tablespace 表空间名

?

主键 PRIMARY

列名后面直接加上主键约束

itemid varchar2(20) constraint pk_items primary key

如果主键约束保护多个列,必须作为一个表约束创建

constraint pk_items primary key(itemid,itemname)? using index tablespace(table_name) storage(stored clause)

禁用或删除

alter table items drop primary key;

alter table items disable primary key

?

外键 FOREIGN KEY

alter table invency

add constraint fk_invency_items

foreign key(itemid) references items(itemid);

?

条件 CHECK

?条件列约束不保护log数据类型和数据列和对象、嵌套表、varry、ref等

constraint chk_status check(status in('正常','出差','休假'));

?

约束的维护

禁用约束 alter table?表名 disable constraint 约束名

启用约束 alter table 表名 enable constraint?约束名

删除约束 alter table 表名 drop constraint?约束名?

序列的创建

create sequence sequence1

increment by 1?

start with 1

maxvalue 10000

minvalue 1

nocycle

cache 20或nocache

noorder //不指定排序

sequence1.currval

sequence1.nextval

drop sequence sequence1;

--------------------------------------------------------

索引

如果没有建立索引的话,那么查询该表的任何记录都会通过顺序地逐行扫描得到,这会导致大量的磁盘i/o,从而会大大降低数据库系统的效率,索引通常用于提