美文网首页
Oracle经典实例——插入、更新和删除

Oracle经典实例——插入、更新和删除

作者: 梭哈侠 | 来源:发表于2020-03-26 16:09 被阅读0次
1.插入新纪录

使用INSERT语句和VALUES子句一次插入一行:

insert into table_name(field1,field2...) values(value1,value2...);

省略字段名称,需要插入所有列的值,还要注意VALUES列表的顺序:

insert into table_name values(value1,value2,value3...);
2.插入默认值

为某些列设置了默认值,则需显示指定默认值:

insert into table_name(id) values(default);

对于既有非默认值又有默认值的表,只要不把设置了默认值的列写入INSERT列表,就能为它们插入默认值

3.使用null覆盖默认值

VALUES列表显示指定null,覆盖设置了默认值的field1列:

insert into table_name(field1,field2,...) values(null,value2,...);
4.复制数据到另一个表

在INSERT语句后面附加一个检索目标数据的查询语句:

insert into table1(field1,field2,...) 
    select field1,field2,... from table2 where condition1 and condition2...;

如果去掉WHERE条件,则复制table2的全部数据到table1

5.复制表定义

使用CREATE TABLE语句和一个不返回任何数据的子查询:

create table table1 as select * from table2 where 1=0;

如果WHERE子句不指定一个不可能为真的条件,table2的查询结果集将写到table1中

6.多表插入

使用INSERT ALL或者INSERT FIRST语句:

insert all
    when condition1 then
        into table1(field1,field2,...) values(value1,value2,...)
    when condition2 then
        into table2(field1,field2,...) values(value1,value2,...)
    else
        into table3(field1,field2,...) values(value1,value2,...)
select field1,field2,... from table_name;

使用ALL和FIRST关键字的区别:
当WHEN-THEN-ELSE的结果为真时,INSERT FIRST就立即结束评估,不执行后面的判断,而INSERT ALL会逐一执行每一条语句,不论前面的判断结果如何,因此INSERT ALL会把同一行数据插入到多个表

7.禁止插入特定列

创建一个视图,只暴露那些希望插入的列,然后强制所有INSERT语句都被传送到该视图:

create view view_name as select field1,field2,... from table_name;
insert into view_name(field1,field2,...) values(value1,value2,...);
8.更新记录

使用UPDATE语句更新已有记录:

update table_name set field1=value1 where condition;

如果省略WHERE子句,那么全部行都将被更新

9.合并记录(批量插入、更新)

使用MERGE INTO语句:

merge into table1 t1
    using(select * from table2) t2 on (t1.field1=t2.field1)
when matched then
    update t1.field2=value2
    delete where condition
when not matched then
    insert (t1.field1,t1.field2,...)
    values (t2.field1,t2.field2,...);
10.删除全表记录

使用DELETE语句:

delete from table_name;

如果DELETE语句后面没有WHERE子句,则会删除全表记录,使用的时候要注意

11.删除指定记录或单行记录
delete from table_name where condition;

删除时要注意主键的唯一性约束条件,如果没有唯一性约束,WHERE子句还要确保不会误删记录


整理自《SQL经典实例》

相关文章

网友评论

      本文标题:Oracle经典实例——插入、更新和删除

      本文链接:https://www.haomeiwen.com/subject/rqecuhtx.html