oracle表结构重组,Oracle 构造与已知表结构相同的表问题

//构造一个与已知表就够相同的表,我们常用的方法为:

//create table t_name as

//select col_name from t_exists

//where 1=0;

//这种构造方法,减少了我们的工作量,带了很大的方便;

//但是你知道吗?这种构造表的方法,仅仅是构造表的结构与

//已知表结构相同,其他的关于表、列的约束,列的默认值,注释

//等这些都没有复制过来。

create table student(

stu_no number(5),

stu_name varchar2(20),

sex char(1),

age number(3))

--

alter table student

add constraint pk_stu primary key(stu_no);

alter table student

modify sex default 'M'

add constraint ck_sex check(sex in('F','M'));

comment on table student is '学生信息表';

comment on column student.stu_no is '学生学号';

comment on column student.stu_name is '学生姓名';

comment on column student.sex is '性别';

comment on column student.age is '学生年龄';

--

SQL> desc student;

Name     Type         Nullable Default Comments

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

STU_NO   NUMBER(5)                     学生学号

STU_NAME VARCHAR2(20) Y                学生姓名

SEX      CHAR(1)      Y        'M'     性别

AGE      NUMBER(3)    Y                学生年龄

--

create table t_stu as

select * from student

where 1=0;

--

SQL> desc t_stu;

Name     Type         Nullable Default Comments

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

STU_NO   NUMBER(5)    Y

STU_NAME VARCHAR2(20) Y

SEX      CHAR(1)      Y

AGE      NUMBER(3)    Y

//从表结构,我们看到了,t_stu表只是复制了student表的结构,

//而我们刚刚才为student表添加的primary key,default,comment,

//全部都没有复制过来。

//如果你不仅想要构造表结构,而且还要向表中添加现存表中的数据,

//你可以这样写:

create table t_emp as

select * from scott.emp

order by sal

where 1=1;//这个条件可有可无

//实例:

SQL> create table t_emp as

2  select * from scott.emp

3  where rownum<=5

4  order by sal;

--

SQL> select rownum,t.* from t_emp t;

ROWNUM EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO

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

1  7369 SMITH      CLERK      7902 1980-12-17     800.00               20

2  7521 WARD       SALESMAN   7698 1981-2-22     1250.00    500.00     30

3  7654 MARTIN     SALESMAN   7698 1981-9-28     1250.00   1400.00     30

4  7499 ALLEN      SALESMAN   7698 1981-2-20     1600.00    300.00     30

         5  7566 JONES      MANAGER    7839 1981-4-2      2975.00               200b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值