//构造一个与已知表就够相同的表,我们常用的方法为: //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 原帖:http://topic.csdn.net/u/20110423/21/4ebf279b-46bf-49a8-acf9-fafd7c8334cd.html?78480