1Z0-051-DDL-1表和临时表的创建和使用
admin
2023-06-08 21:41:37
0

一、创建简单表

 

1.1  使用列规范创建表

 

语法:

CREATETABLE [schema.]tablename [ORGANIZATION HEAP]

(columndatatype [default expression]

[,columndatatype [default expression]]

);

 

注:DEFAULT 字句可能很有用,但它功能很有限。

 

分析以下案例:

CREATETABLE SCOTT.EMP

(EMPNONUMBER(4),

ENAMEVARCHAR2(10),

HIREDATEDATE DEFAULT TRUNC(SYSDATE),

SAL NUMBER(72),

COMM NUMBER(72) DEFAULT 0.03

);

 

SET LONG9999

Select  dbms_metadata.get_ddl('TABLE','EMP','SCOTT')FROM DUAL;

 

 

1.2  使用子查询创建表

语法:

CREATETABLE  [schema.]table  AS subquery;

 

SQL>create tabel emp_copy as select * from scott.emp;

 

SQL>createtable emp_dept as select

Last_nameename,department_name dname,round(sysdate -hiredate) service

From  employees nutural join departments orderby  dname,ename;

 

创建一个没有数据行的表:

SQL>createtable no_emps as select * from scott.emp where 1=2;

 

 

 

1.3.在创建表之后更改表的定义

 

1)添加列

SQL>altertable emp add (job_id number(8));

 

2)修改列

SQL>alter table emp modify (commission_pct number(6,2) default 0.05;

 

3)删除列

SQL>altertable emp drop column job_id;

 

4)标记未使用列

SQL>altertable  emp set unused column job_id;

 

5)重命名列

SQL>altertable emp rename column hire_date to hiredate;

 

6)将表标记为只读

SQL>altertable emp read only;

 

7)一次性删除未使用的列

SQL>altertable emp drop unused columns;

 

 

1.4 删除表

 

语法:

Drop   table  [schema.]tablename;

 

SQL>droptable  emp;  

注:删除表之前不会生成警告(任何DDL命令都一样,他们包含了COMMIT),一般不可逆,在一定特定的情况下,可使用闪回技术和其他恢复技术。

 

1.5 截断表

 

语法:

Trancate  table  [schema.]tablename;

SQL>trancate table emp;

注:瞬间清空emp表,表中有一条记录和一亿条记录的速度是一样的。

 

1.6 创建和使用临时表

临时表包含所有会话都可以访问的定义,但其中的行是插入行的会话专用的。

语法:

Create  global temporary table temp_tab_name

(columndatatype [,column datatype])

On commit{delete |preserve} rows;

 

列的定义与普通表没有区别,末尾的可选句子确定插入的任何行的生命周期。默认方式:在插入行的事务完成时,删除相应的行,但也可以更改此行为,以便将他们保留到插入行的会话结束为止。临时表的数据是临时的,专用于相应的会话,针对其执行的所有SQL命令速度远比针对永久表的命令块。

速度快的原因:

1)临时表不是永久表空间中的段。

2)针对临时表的DML不生成重做数据。

 

【创建和使用临时表案例】

1)使用peenboo身份登录,创建临时表tmp_emp

SQL>createglobal temporary table tmp_emp on commit preserve rows  as select * from emp where 1=2;

 

2)插入一些数据:

SQL>Insertinto tmp_emp select * from emp where department_id=50;

SQL>commit;

 

3)使用peenboo身份,启动第二个SQLPLUS

SQL>selectcount(*) from tmp_emp;

SQL>insertinto tmp_emp select * from emp where department_id =60;

SQL>commit;

 

4)在第一个会话中截断表:

SQL>truncate  table tmp_emp;

 

5)在第二个会话中查询,会话副本仍然包含行:

SQL>selectcount(*) from tmp_emp;

 

6)在第二个会话中,演示会话终止并不会清除数据行。需要断开连接再次连接。

SQL>disconnect;

SQL>connectpeenboo/dbbocom

SQL>selectcount(*) from tmp_emp;


相关内容

热门资讯

神舟二十三号载人飞船发射取得圆... 5月24日,搭载神舟二十三号载人飞船的长征二号F遥二十三运载火箭在酒泉卫星发射中心点火发射。神舟二十...
伊朗总统准备向世界保证不寻求核... 伊朗总统佩泽希齐扬5月24日在接受采访时表示,“伊朗准备向全世界保证,正如已故伊朗最高领袖阿里·哈梅...
火星上出现一摞整齐叠放的石头,... 那是谁干的? 毅力号火星车在火星上发现了一摞整齐叠放的石头。NASA / JPL-Caltech ...
八国发表联合声明,谴责以色列国... △以色列国家安全部长伊塔马尔·本-格维尔(资料图)当地时间24日,阿联酋、约旦、土耳其、埃及、印度尼...
神舟二十三号载人飞船发射升空 IT之家 5 月 24 日消息,刚刚,搭载神舟二十三号载人飞船的长征二号 F 遥二十三运载火箭在酒泉...
浙江上线“创新积分制”数智平台 来源:中国新闻网 中新网杭州5月24日电(鲍梦妮)5月24日,在2026年浙江省“全国科技活动周”上...
国内知名冷门绝学大咖齐聚深圳,... 本文转自【光明日报】; 5月22日上午,作为2026文化强国建设高峰论坛重要组成部分,首届冷门绝学传...
神舟二十三号载人飞行任务航天员... 据微信公众号“中国载人航天”消息,5月24日20时16分,神舟二十三号载人飞行任务航天员乘组出征仪式...
以总理:同特朗普一致认为须消除... 新华社耶路撒冷5月24日电(记者庞昕熠 王卓伦)以色列总理内塔尼亚胡24日在社交平台发文称,他和美国...
专家解读|秉持以人为本 统筹发... 随着大模型、生成式人工智能、智能体等技术的迭代创新,人工智能正在进入加速应用的新阶段,由此引发的社会...