Oracle insert的扩展
向一个表发散弹枪: ⑴ insert into table_name [(column[,column...])] select_statement 每次只能插入一个表,但性能上比写多条insert语句要高。另外,Oracle还提供create table table_name as select ...,as不可少!实现直接创建并且插入表,依赖于后面的s
向一个表发散弹枪:⑴ insert into table_name [(column[,column...])] select_statement
每次只能插入一个表,但性能上比写多条insert语句要高。另外,Oracle还提供create table table_name as select ...,as不可少!实现直接创建并且插入表,依赖于后面的select语句的结果,如:create table new_table as select * from source_table where 1=0
-
案例:
表mxt新增一列time,那么这个列会被置在最后,现想把此列放于第2
create table copy_mxt as select id,time,name from mxt;
drop table mxt;
rname copy_mxt to mxt;
向多个表发散弹枪:
类型:
① 无条件的insert
② 带条件的insert all
③ 带条件的insert first
④ pivoting insert
多表insert的使用限制:
① 只能对table使用insert,不能对视图或物化视图使用
② 不能对远程表使用这个插入操作
③ 多表插入时,不能指定一个表的集操作
④ 多表insert的into的目标表加在一起的列数不能超过999
㈠ 无条件的insert
语法:
insert all
into dest_table1 [column(,column...)] [values (...)]
into dest_table2 [column(,column...)] [values (...)]
...
select_statement --values中指定是select结果列,如果没有values指定列,那么表示目标表的列类型和顺序与select语句查询的结果完全一致。建议不要省略目标表中的列和values,增强可读性。
例子:
1.create table emp_1 as select employee_id,last_name from employees where 1=0;
2.create table emp_2 as select * from employees where 1=0;
3.create table emp_3 as select * from employees where 1=0;
4.insert all
5.--不指定emp_1后面的列,也没有values指定列,那么emp_1所有列类型和顺序与查询的列的类型和顺序一致
6.--也就是emp_1中只有查询结果中的那几列,而且类型和顺序一致
7. into emp_1
8.--指定了emp_2后面的列,但没有values指定列,表示emp_2中要插入的列被选择出来,与查询结果列的类型和顺序一致
9.--emp_2也有很多列,不止这两列
10. into emp_2(employee_id,last_name)
11.--指定emp_3后面的列和values指定列,那么values后面的列名必须与查询结果一致,如果查询有别名,必须在values中使用别名
12.--emp_3指定的列的类型和顺序必须与values保持一致
13.--emp_3也可能列数大于指定列数
14. into emp_3(employee_id,last_name) values(e_id,e_last_name)
15. select employee_id e_id,last_name e_last_name
16. from employees
语法:
insert all
when condition_statement
then into dest_table1[指定列] values[查询中的列]
when condition_statement
then into dest_table2[指定列] values[查询中的列]
select_statement
注释:带条件的insert all与insert first的区别在于只按条件对查询的结果进行刷选,不会考虑前面已经匹配过的记录,每次都是全量匹配,而insert first对已经匹配过的记录不予考虑,下一个when会自动过滤掉上一个匹配过的行记录
例子:
1.insert all
2. --将查询结果s_id>20的插入,条件中指定的列必须与查询结果名字一致,如果有别名,请用别名 3. when e_id>20 4. then into emp_1 5. --s_last_name为M开头的插入,可能插入的行与s_id有重复 6. when e_last_name like 'M%' 7. then into emp_2(employee_id,last_name) 8. --如果指定else,则不满足上面条件的插入到emp_3,插入的行不会与上面两个重复 9. else 10. into emp_3(employee_id,last_name) values(e_id,e_last_name) 11. select employee_id e_id,last_name e_last_name 12. from employees

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Oracle 数据库启动顺序为:1. 检查前置条件;2. 启动监听器;3. 启动数据库实例;4. 等待数据库打开;5. 连接到数据库;6. 验证数据库状态;7. 启用服务(如果需要);8. 测试连接。

Oracle 数据库日志的保留期限取决于日志类型和配置,包括:重做日志:由 "LOG_ARCHIVE_DEST" 参数配置的最大大小决定。归档重做日志:由 "DB_RECOVERY_FILE_DEST_SIZE" 参数配置的最大大小决定。在线重做日志:不归档,在数据库重启时丢失,保留期限与实例运行时间一致。审计日志:由 "AUDIT_TRAIL" 参数配置,默认保留 30 天。

Oracle 所需内存量取决于数据库大小、活动水平和所需性能水平:用于存储数据缓冲区、索引缓冲区、执行 SQL 语句和管理数据字典缓存。具体数量受数据库大小、活动水平和所需性能水平影响。最佳实践包括设置适当的 SGA 大小、调整 SGA 组件大小、使用 AMM 和监控内存使用情况。

Oracle 可以通过以下步骤读取 dbf 文件:创建外部表,引用 dbf 文件;查询外部表,检索数据;将数据导入 Oracle 表。

Oracle 数据库服务器硬件配置要求:处理器:多核,主频至少 2.5 GHz,大型数据库建议 32 核以上。内存:小型数据库至少 8GB,中等规模 16-64GB,大型数据库或高负载工作负载高达 512GB 或更多。存储:SSD 或 NVMe 磁盘,RAID 阵列提高冗余和性能。网络:高速网络(10GbE 或更高),专用网卡,低延迟网络。其他:稳定电源、冗余组件、兼容操作系统和软件、散热和冷却系统。

Oracle 数据库所需内存量取决于数据库大小、工作负载类型和并发用户数量。通常建议:小型数据库:16-32 GB,中型数据库:32-64 GB,大型数据库:64 GB 或更多。其他需考虑因素包括数据库版本、内存优化选项、虚拟化和最佳实践(监视内存使用情况、调整分配)。

要在 Oracle 中创建每天执行一次的定时任务,需要执行以下三个步骤:创建一个作业。为作业添加一个子作业,并设置其计划表达式为“INTERVAL 1 DAY”。启用作业。

Oracle 数据库的内存需求取决于以下因素:数据库大小、活动用户数量、并发查询、启用的功能和系统硬件配置。确定内存要求的步骤包括:确定数据库大小、估计活动用户数量、了解并发查询、考虑启用的功能和检查系统硬件配置。
