Oracle插入表数据的4种方式
在Oracle数据库中插入表数据是一项基本操作,本文将介绍4种常见的方式。
1. 使用INSERT语句
使用INSERT语句可以将数据插入到指定的表中,语法如下:
INSERT INTO table_name (column1, column2, …) VALUES (value1, value2, …);
其中,table_name
表示要插入数据的表,column1, column2, …
表示要插入数据的列名,value1, value2, …
表示要插入的值。
例如,要将员工表(employee
)中的数据插入到新表(new_employee
)中,可以使用如下语句:
INSERT INTO new_employee (id, name, age, salary) SELECT id, name, age, salary FROM employee;
这个例子中,我们使用了SELECT
语句来获取源表(employee
)中要插入的数据,并将它们插入到新表(new_employee
)中。
2. 使用子查询插入数据
在Oracle数据库中,可以使用子查询来插入数据,语法如下:
INSERT INTO table_name (column1, column2, …) SELECT column1, column2, … FROM table_name2;
其中,table_name
表示要插入数据的表,column1, column2, …
表示要插入数据的列名,table_name2
表示用于提取数据的源表。
例如,我们可以使用如下语句,将employee
表中的年龄大于30岁的员工数据插入到新表(new_employee
)中:
INSERT INTO new_employee (id, name, age, salary) SELECT id, name, age, salary FROM employee WHERE age > 30;
3. 使用MERGE语句
MERGE语句是Oracle中一种特殊的插入数据方式,可以将两个表中的数据进行合并并插入到一个新表中。
MERGE语句的语法如下:
MERGE INTO table_name1 USING table_name2 ON (condition) WHEN MATCHED THEN UPDATE SET column1 = value1, column2 = value2, … WHEN NOT MATCHED THEN INSERT (column1, column2, …) VALUES (value1, value2, …);
其中,table_name1
表示目标表,table_name2
表示源表,condition
表示用于匹配源表和目标表的条件,UPDATE
关键字表示当两个表中有相同记录时,需要更新的列及其新值,INSERT
关键字表示当不存在匹配记录时插入的列及其值。
例如,我们可以使用如下语句将department
表数据和new_employee
表数据进行合并并插入到employee
表中:
MERGE INTO employee e USING (SELECT department_id, department_name FROM department) d ON (e.department_id = d.department_id) WHEN NOT MATCHED THEN INSERT (e.department_id, e.department_name) VALUES (d.department_id, d.department_name);
这个例子中,我们使用了一个子查询来获取department
表的数据,并使用了MERGE
语句将其插入到employee
表的指定列中。
4. 使用外部表插入数据
最后一种插入数据的方式是使用外部表。外部表指向的是一种特殊的文件,该文件存储了要插入到表中的数据。Oracle支持多种文件格式,如CSV、TXT、XML等。
使用外部表插入数据的具体步骤如下:
- 创建外部表:使用
CREATE TABLE
语句创建外部表,该语句必须指定外部表所对应的文件、文件格式和列信息; - 加载数据:通过
CREATE TABLE … AS SELECT
语句将外部表中的数据加载到目标表中。
例如,要将employee
表数据从CSV文件中加载到数据库中,可以使用如下语句:
CREATE TABLE employee_ext ( id NUMBER, name VARCHAR2(100), age NUMBER, salary NUMBER ) ORGANIZATION EXTERNAL ( TYPE csv DEFAULT DIRECTORY data_dir ACCESS PARAMETERS ( RECORDS DELIMITED BY newline FIELDS TERMINATED BY ',' REJECT ROWS WITH ALL NULL FIELDS ) LOCATION ('employee.csv') );
CREATE TABLE new_employee AS SELECT * FROM employee_ext;
这个例子中,我们创建了一个名为employee_ext
的外部表,它与一个名为employee.csv
的CSV文件相关联。接着,我们使用CREATE TABLE … AS SELECT
语句将这个外部表中的数据加载到一个名为new_employee
的目标表中。
总结
以上就是Oracle插入表数据的4种常见方式。每种方式都有其适用的场景,根据具体情况选择最合适的方式进行插入操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:oracle插入表数据的4种方式 - Python技术站