📜  oracle create as select - SQL (1)

📅  最后修改于: 2023-12-03 15:33:18.801000             🧑  作者: Mango

Oracle CREATE AS SELECT - SQL

在Oracle数据库中,CREATE AS SELECT是一种将已有的表中的数据复制到新表的方式。它基于SELECT语句,可以用于创建空表,也可以用于创建完整的表(包括表结构和数据)。此外,CREATE AS SELECT还可以通过INNER JOIN,LEFT JOIN等方式来从多个表中选择数据。

语法
CREATE TABLE new_table_name AS
SELECT column1, column2, ...
FROM existing_table_name
WHERE ...
示例

考虑以下表格结构和数据:

Table Name: employees

| column name | data type | |-------------|-----------| | employee_id | int | | first_name | varchar | | last_name | varchar | | email | varchar |

| employee_id | first_name | last_name | email | |-------------|------------|-----------|----------------------| | 1 | John | Doe | john.doe@example.com | | 2 | Jane | Smith | jane.smith@example.com | | 3 | Jim | Brown | jim.brown@example.com |

创建表格和数据

如果要使用CREATE AS SELECT创建新表和数据,可以使用以下语句:

CREATE TABLE employees_copy AS
SELECT *
FROM employees;

以上代码将创建一个名为employees_copy的新表,并从employees表复制所有数据。

创建仅包含选定列的表格和数据

如果只需要复制某些列,则可以在SELECT语句中显式指定它们。例如,要复制employee_id,first_name和last_name列:

CREATE TABLE employees_copy2 AS
SELECT employee_id, first_name, last_name
FROM employees;
创建具有筛选条件的表格和数据

如果只需要复制满足特定条件的行,则可以在SELECT语句中添加WHERE子句。例如,要复制雇员的电子邮件以j开头的所有行:

CREATE TABLE employees_copy3 AS
SELECT *
FROM employees
WHERE email LIKE 'j%';
创建使用JOIN的表格和数据

如果要从多个表中选择数据,则可以使用JOIN。在下面的示例中,employees表还有一个departments列,而departments表列出了每个部门的名称和ID。要创建一个新表以列出每个雇员的姓名和部门名称,可以运行以下代码:

CREATE TABLE employee_departments AS
SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;
结论

Oracle CREATE AS SELECT是将现有表中的数据复制到新表的快速简便的方法。使用此方法,可以创建和填充新表,同时保持原始表不变的操作。根据SELECT语句的语法,可以包括任何过滤器或JOIN条件。