数据库的临时表以及对数据的增、删、改

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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL 是一种常用的关系型数据库管理系统,经常在面试中被询问有关查(CRUD)语句的常见问题。下面我将回答这些问题。 1. 数据:使用 INSERT INTO 语句将新记录添加到表中。语法如下: ```sql INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...); ``` 2. 数据:使用 DELETE FROM 语句从表中除记录。语法如下: ```sql DELETE FROM 表名 WHERE 条件; ``` 3. 更新数据:使用 UPDATE 语句修表中的记录。语法如下: ```sql UPDATE 表名 SET 列名1 = 新值1, 列名2 = 新值2, ... WHERE 条件; ``` 4. 查询数据:使用 SELECT 语句从表中获取数据。语法如下: ```sql SELECT 列1, 列2, ... FROM 表名 WHERE 条件; ``` 常见问题还可能包括以下内容: - 如何插入一条新纪录,如果该记录已存在则更新?使用 INSERT INTO ... ON DUPLICATE KEY UPDATE 语句。它可以插入一条新纪录,如果主键冲突则更新已有记录。 - 如何除重复的记录?使用 DELETE FROM 语句结合子查询和临时表。 - 如何更新一列的值为另一列的值?使用 UPDATE 语句的 SET 子句,将一个列的值设置为另一个列的值。 - 如何查询符合条件的前 N 条记录?使用 SELECT 语句结合 LIMIT 子句,限制结果集的数量。 - 如何查询某个列的唯一值?使用 DISTINCT 关键字去重查询。 以上是一些MySQL查语句常见的面试题目及其回答。掌握这些基本知识,可以在面试中展示自己对MySQL数据操作的熟练程度和深入理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值