0.临时表
create global temporary table my_temp(
tempid number(9) primary key,
tempName varchar2(20)
)
on commit delete rows; //表示提交数据,就消除临时表中的数据
insert into my_temp values(1,'a');
select * from my_temp;
commit; //将缓存中的数据存到硬盘中(即提交数据)
create global temporary table my_temp(
tempid number(9) primary key,
tempName varchar2(20)
)
on commit preserve rows; //表示会话结束,就消除临时表中的数据
insert into my_temp values(1,'a');
commit; //将缓存中的数据存到硬盘中(即提交数据)
select * from my_temp;
exit;
//断开数据库连接(即会话结束)
补充:schema(表示数据库对象的统称)
//给别的用户创建表必须拥有 create any table 权限
system: create table scott.my(id number(9));
--DML (数据操作语言,只能操作数据,不能改变表结构)
--insert update delete select
1.插入数据(insert into )
语法:insert into table_name(column_nam[.,.,.] ) values(column_value[.,.,.])
注意:column_name与column_name个数,类型一致
当插入所有字段时,可以省略column_name,但column_value一定要与表结构一致
当使用默认值的字段使用关键字default
A.表中一次插入多条数据
a.表不存在 =>数据已提交
1).与原表一样
create table myperson as select * from person;
2).取原表中的部分字段
create table myperson01 as select name,age from person;
3).取原表中的部分字段和其他数据
create table myperson02 as select name,age, 'oracle' "company" from person;
b.表存在
=>数据未提交,需要commit;提交数据
1).与原表一样
insert into table myperson select * from person;
commit;
2).取原表中的部分字段
insert into table myperson01 select name,age from person;
commit;
3).取原表中的部分字段和其他数据
insert into table myperson02 select name,age, 'sun' from person;
commit;
B.一次插入多条数据,不借助有数据的表
dual:这是系统提供的一张临时表
union:把多个查询结果整合到一起
insert into myperson01
select 'ee',19,5 from dual union
select 'ff',20,6 from dual;
2.更新数据(update)
A.更新所有记录
a.更新一个字段
update myperson02 set "Company"='yc';
b.更新多个字段
update myperson02 set "Company"='yc',age=19;
B.更新部分记录 => where条件,用来筛选数据(条件为true就更新,条件为false不更新)
a.更新一个字段
update myperson02 set "Company"='alibaba' where id=3;
b.更新多个字段
update myperson02 set "Company"='baidu',age=19 where id=1;
C.当有主外键关系时,更新外键值,外键值必须在主表内有
update person set phoneid=2 where id=5;//在主表中没有,更新失败
update person set phoneid=3 where id=4;//在主表中有,更新成功
小结:
insert update delete select
=> DML(数据操作语言,只能操作数据,不能改变表结构) 数据会存在回滚段中
create alter drop truncate
=> DDL(数据定义语言,可以改变表结构)
grant revoke
=> DCL(数据控制语言)
commit rollback
=> TCL(事物控制语言,针对DML语言)
3.删除数据(delete)
A.没带条件,删除表中所有的数据
1).
delete from mye;
rollback;
//数据回滚
2).彻底删除
delete from mye;
commit;
//把回滚空间的数据刷掉了
rollback;
//数据回不来了
B.带条件删除表中的数据
delete from myperson01 where id=2;
C.截断 truncate (不会把删除的数据放入undo(回滚)空间,所以rollback找不回数据)
truncate table myperson01; == delete from myperson01;commit;
tempdb 临时表数据 清空 数据库删除临时表
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章