DDL-create table创建表

  • 创建表:create table 新表名 (字段名1 字段1类型,字段名2 字段2类型)

  • 创建备份表+数据:create table 新表名 as select *或字段名 from 表 [where 条件]

  • 创建备份表仅表结构: create table 新表名 as select *或字段名 from 表 where 1=2 (注:添加where 1=2,返回为false,因为没有符合的数据所以为空表)

create

创建表:

语法: create table 表名 (字段名1 字段1类型,字段名2 字段2类型)

范例,创建表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
--创建表:字段名+数据类型及长度
SQL> create table test ( id number(4),name varchar2(20),age number(3),start_date date );

--查看创建的test表数据
SQL> select * from test;
   ID NAME                  AGE START_DATE
----- -------------------- ---- -----------

--查看表结构
SQL> desc test;
Name       Type         Nullable Default Comments 
---------- ------------ -------- ------- -------- 
ID         NUMBER(4)    Y                         
NAME       VARCHAR2(20) Y                         
AGE        NUMBER(3)    Y                         
START_DATE DATE         Y  

创建备份表+数据:

语法: create table 表名 as select ...

注:若select中字段使用了别名,那新表将使用别名做为新表的字段名!!!

注:备份表多了个 as

范例,创建一个备份表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
--通过select查询完整表,创建表
SQL> create table emp4 as select * from emp;
Table created

--通过select查询部分字段,创建表
SQL> create table emp5 as select ename,job,sal from emp;
Table created

--通过select查询部分字段且具备where条件,创建表
SQL> create table emp6 as select ename,job,sal from emp where sal >= 3000;
Table created


--使用别名创建新表
SQL> create table emp8 as select ename "name",job,sal "sals" from emp;
Table created

SQL> select * from emp8;
name       job            sals
---------- --------- ---------          
CLARK                  3200.00
CLARK      MANAGER     3800.00

创建备份表仅表结构:

语法:

注:若select中字段使用了别名,那新表将使用别名做为新表的字段名!!!

注:添加where 1=2,当where返回的是个false时,就没有符合的数据,所以创建了一个表结构后,没有符合的条件数据,就仅仅复制了一个表结构!!!

注:当然你也可以写任意一个不等式0=1或者1=3等等。。。但如果写了一个等式0=0或1=1时将复制数据!!!

1
2
3
4
5
6
SQL> create table emp9 as select * from emp where 1=0;
Table created

SQL> select * from emp9;
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
SQL> create table emp8 as select ename "name",job "jobs",sal "sals" from emp;
Table created

SQL> select * from emp8;
name       jobs           sals
---------- --------- ---------
CLARK                
CLARK                  3200.00
CLARK      MANAGER     3800.00
SMITH      CLERK       1200.00
ALLEN      SALESMAN    1900.00
ALLEN      SALESMAN    2000.00
FORD       ANALYST     3500.00
FORD       ANALYST     3900.00
MILLER                 1500.00
MILLER                 1600.00
SMITH      CLERK       1500.00
clark      manager     2100.00
clark      manager     2100.00
SMITH      CLERK        800.00