开发者博客:www.developsearch.com
-- 创建表
create table IMS_OT_USER
(
ID VARCHAR2(32) not null,
USER_LOGIN_NAME VARCHAR2(50),
USER_PASSWORD VARCHAR2(32),
CREATE_TIME TIMESTAMP(6),
CREATOR_ID VARCHAR2(32),
MODIFY_TIME TIMESTAMP(6),
MODIFIER_ID VARCHAR2(32),
STATE VARCHAR2(10),
ORDER_NUM NUMBER
)
-- 指定表空间
tablespace IDEALIMSDB
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 3M
next 8K
minextents 1
maxextents unlimited
);
-- 创建主键
alter table IMS_OT_USER
add constraint PK_IMS_OT_USER_ID primary key (ID)
using index
tablespace IDEALIMSDB
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 896K
next 1M
minextents 1
maxextents unlimited
);
-- 创建联合主键(唯一约束)
alter table IMS_OT_USER
add constraint UNI_IMS_OT_USER_LOGIN_NAME unique (USER_LOGIN_NAME)
using index
tablespace IDEALIMSDB
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 384K
next 1M
minextents 1
maxextents unlimited
);
-- 创建外键
alter table IMS_OT_USER
add constraint FK_IMS_OT_USER_EMPLOYEE_ID foreign key (EMPLOYEE_ID)
references IMS_OT_EMPLOYEE (ID);
-- Create/Recreate indexes
create index FK_IMS_OT_USER_EMPLOYEE_ID on IMS_OT_USER (EMPLOYEE_ID)
tablespace IDEALIMSDB
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
创建临时表
理解:在Oracle中创建一张表,这个表不用于其他的什么功能,主要用于自己的软件系统一些特有功能才用的,而当你用完之后表中的数据就没用了。Oracle的临时表创建之后基本不占用表空间,如果你没有指定临时表(包括临时表的索引)存放的表空的时候,你插入到临时表的数据是存放在ORACLE系统的临时表空间中(TEMP)。
创建Oracle临时表,可以有两种类型的临时表:会话级的临时表和事务级的临时表。
- 会话级的临时表因为这这个临时表中的数据和你的当前会话有关系,当你当前SESSION不退出的情况下,临时表中的数据就还存在,而当你退出当前SESSION的时候,临时表中的数据就全部没有了,当然这个时候你如果以另外一个SESSION登陆的时候是看不到另外一个SESSION中插入到临时表中的数据的。即两个不同的SESSION所插入的数据是互不相干的。当某一个SESSION退出之后临时表中的数据就被截断(truncate table,即数据清空)了。
会话级的临时表创建方法:Create Global Temporary Table Table_Name(Col1 Type1,Col2 Type2...) On Commit Preserve Rows;举例create global temporary table Student(Stu_id Number(5),Class_id Number(5),Stu_Name Varchar2(8),Stu_Memo varchar2(200)) on Commit Preserve Rows ;
- 事务级临时表是指该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时表中的数据将自行被截断,其他的内容和会话级的临时表的一致(包括退出SESSION的时候,事务级的临时表也会被自动截断)。
事务级临时表的创建方法:Create Global Temporary Table Table_Name(Col1 Type1,Col2 Type2...) On Commit Delete Rows;举例:create global temporary table Classes(Class_id Number(5),Class_Name Varchar2(8),Class_Memo varchar2(200)) on Commit delete Rows ;
- 两种不通类型的临时表的区别:语法上,会话级临时表采用on commit preserve rows
而事务级则采用on commit delete rows;用法上,会话级别只有当会话结束临时表中的
数据才会被截断,而且事务级临时表则不管是commit、rollback或者是会话结束,
临时表中的数据都将被截断。
常用语句
desc table;检查表结构
drop table stu;删除表
rename student to stu;重命名表
select * from tab where tabtype=‘TABLE’;显示当前用户下的所有表。
select count(*) from table;显示此表的数据行数;
alter table stu add(classid number(2));添加字段
alter table stu modify(xm varchar2(12));修改字段的长度
alter table stu drop column sal;删除表字段
alter table student drop column sal; alter table stu add(salary number(7,2));
insert into stu values(‘A001’,‘张三’,‘男’,‘01-5月-05’,10);
insert into stu(xh,xm,sex) values (‘A003’,‘JOHN’,‘女’);
insert into student(xh,xm,sex,birthday) values (‘A004’,‘MARTIN’,‘男’,null);
update stu set sex=‘女’ where xh=‘A001’;
update student set sex=‘男’,birthday=‘1980-04-01’where xh=‘A001’;
update student set classid=20 where birthday is null;
select * from student order by birthday desc,xh asc; --按birthday 降序按xh升序(asc/默认)
//删除, 这个操作会放到rollback segement中,事务提交之后才生效
delete from student where empno >= 7500 and empno <=8000;
// 删除整个数据, 立即生效
truncate table student;
//修改列的数据类型
alter table student_inf alter column student_name nvarchar(10) null
注:alter:修改 student_inf:表名 column:列 student_name:列名 nvarchar(10):数据类型 null:允许为空
//删除一列内容:
alter table student_inf drop column student_sex
注:drop:删除 student_sex:所要删除的列名
//增加一列内容:
alter table student_inf add student_sex nvarchar(1) null
注:student_sex:列名 null:增加列名允许为空
使用子查询创建一个表
使用ALTER TABLE语句增加,修改或者删除行
假如只是增加或修改一列,可以不加().
drop 就算只有一列都应该加().
修改列名
如果觉得列名不合适, 那么可以使用alter table语句的rename column子句改变列名.
表名
Alter table table_name列名rename column column_name 新列名
to new_column_name;
修改表名
恢复被删除表
在执行drop table 语句的时候,Oracle会将被删除表存放到数据库回收站中, 从Oracle 10g开始,使用FLASHBACK TABLE 可以快速恢复被删除表.
FlashBack table table_name to before drop;
开发者博客:www.developsearch.com