Oracle--基础(增、删、改、查)

 开发者博客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临时表,可以有两种类型的临时表:会话级的临时表和事务级的临时表。

  1. 会话级的临时表因为这这个临时表中的数据和你的当前会话有关系,当你当前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 ;

  1. 事务级临时表是指该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时表中的数据将自行被截断,其他的内容和会话级的临时表的一致(包括退出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 ;

  1. 两种不通类型的临时表的区别:语法上,会话级临时表采用on commit preserve rows

而事务级则采用on commit delete rows;用法上,会话级别只有当会话结束临时表中的

数据才会被截断,而且事务级临时表则不管是commitrollback或者是会话结束,

临时表中的数据都将被截断。

 

 

 

常用语句

desc table;检查表结构

drop table stu;删除表

rename student to stu;重命名表

select * from tab where tabtype=TABLE;显示当前用户下的所有表。

select count* from table;显示此表的数据行数;

alter table stu addclassid number2));添加字段

alter table stu modifyxm varchar212));修改字段的长度

alter table stu drop column sal;删除表字段

alter table student drop column sal; alter table stu addsalary number72));

insert into stu values(‘A001’,‘张三’,‘男’,‘01-5-05’,10;

insert into stuxhxmsex values (‘A003’,‘JOHN’,‘女’);

insert into studentxhxmsexbirthday values (‘A004’,‘MARTIN’,‘男’,null;

update stu set sex=‘女’ where xh=A001;

update student set sex=‘男’,birthday=1980-04-01where xh=A001;

update student set classid=20 where birthday is null;

select * from student order by birthday descxh 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

猜你喜欢

转载自keepwork.iteye.com/blog/1994085