日期:2014-05-16 浏览次数:20478 次
数据表基本操作
?
数据库的数据逻辑上是存储在表空间中,物理上是存储在数据文件中。
创建数据表
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,从而会大大降低数据库系统的效率,索引通常用于提