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 20

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值