SQL Server SELECT INTO 语句

SQL Server 是一个关系型数据库管理系统。SQL Server 提供了强大的安全功能来保护数据的完整性和机密性。它包括身份验证授权加密以及各种保护数据库环境的机制。它的设计旨在从小型应用程序 扩展到大型企业级 数据库。它提供了并行处理索引查询优化等功能,以确保高性能

在本文中,我们将深入探讨 SQL Server 的 SELECT INTO 语句,包括其语法、详细实现方式,并通过各种示例及其输出结果来帮助大家理解。

SELECT INTO 用于将结果集复制到一个新表中。SELECT INTO 包含两个操作:首先是创建一个包含要存储列的表,然后将数据复制到该表中。

在很多情况下,如果我们想要存储中间结果,就可以使用这个语句。SELECT INTO 也常用于创建表的备份。

SELECT INTO 的语法:

SELECT 
INTO new_table
FROM old_table
[WHERE condition];

解释: “Selectlist”将包含要从中复制数据的列。我们可以使用 () *声明所有列,或者仅提供列的一个子集。newtable 的结构(Schema)就是根据这些列确定的。Where 条件在此语法中是可选的。

SELECT INTO 语句示例

为了更深入地理解 SQL Server SELECT INTO 语句,我们需要一个表来执行各种查询。因此,我们将创建一个Employee (员工)表,并在其中插入一些记录。

创建表的查询:

CREATE TABLE Employee 
(
    EmployeeID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Department VARCHAR(50),
    Salary DECIMAL(10, 2)
);

向其插入数据的查询:

INSERT INTO Employee (EmployeeID, FirstName, LastName, Department, Salary)
VALUES
    (1, ‘John‘, ‘Doe‘, ‘IT‘, 60000.00),
    (2, ‘Jane‘, ‘Smith‘, ‘HR‘, 55000.00),
    (3, ‘Bob‘, ‘Johnson‘, ‘IT‘, 65000.00),
    (4, ‘Alice‘, ‘Williams‘, ‘Finance‘, 70000.00),
    (5, ‘Charlie‘, ‘Brown‘, ‘HR‘, 60000.00),
    (6, ‘David‘, ‘Miller‘, ‘Finance‘, 75000.00),
    (7, ‘Eva‘, ‘Davis‘, ‘IT‘, 62000.00),
    (8, ‘Frank‘, ‘Clark‘, ‘Finance‘, 72000.00),
    (9, ‘Grace‘, ‘Moore‘, ‘HR‘, 58000.00),
    (10, ‘Harry‘, ‘Young‘, ‘IT‘, 63000.00),
    (11, ‘Isabel‘, ‘Hall‘, ‘HR‘, 59000.00),
    (12, ‘Jack‘, ‘Baker‘, ‘Finance‘, 71000.00),
    (13, ‘Olivia‘, ‘Turner‘, ‘IT‘, 60000.00),
    (14, ‘Paul‘, ‘Moore‘, ‘Finance‘, 73000.00),
    (15, ‘Quinn‘, ‘Parker‘, ‘HR‘, 60000.00),
    (16, ‘Ryan‘, ‘Scott‘, ‘IT‘, 64000.00),
    (17, ‘Samantha‘, ‘Bryant‘, ‘HR‘, 61000.00),
    (18, ‘Tyler‘, ‘Ward‘, ‘Finance‘, 70000.00),
    (19, ‘Ursula‘, ‘Hill‘, ‘IT‘, 61000.00),
    (20, ‘Victor‘, ‘Gomez‘, ‘HR‘, 59000.00),
    (21, ‘Wendy‘, ‘Fisher‘, ‘IT‘, 62000.00),
    (22, ‘Xavier‘, ‘Jordan‘, ‘Finance‘, 71000.00),
    (23, ‘Yvonne‘, ‘Lopez‘, ‘HR‘, 58000.00),
    (24, ‘Zachary‘, ‘Evans‘, ‘IT‘, 63000.00),
    (25, ‘Ava‘, ‘Hernandez‘, ‘Finance‘, 69000.00);

Employee 表如下所示:

!Table-OverviewEmployee 表

解释: 现在,我们将使用上面讨论的语法,将这个表备份到一个名为 EmpBackup 的表中。在这个查询中,我们会将 employee 表中的数据连同其相同的结构一起提取到 EmpBackup 中。

示例 1:简单的 SELECT INTO 语句

让我们通过复制所有列,为存储在 “employee” 表中的现有员工数据创建一个备份,并将其存入名为 “EmpBackup” 的新表。备份表的结构应适当调整,以保留原始表的数据完整性。

查询:

SELECT *
INTO EmpBackup
FROM employee

输出:

!StructureofEmpBackupEmpBackup 的结构

解释: 这将创建一个名为 EmpBackup 的新表,其数据与 Employee 表相同。现在让我们看一下列的类型。

我们可以看到,每一列的类型都与我们之前在 employee 表中定义的类型相同。但请注意,主键并没有被复制过来,因为新表的创建是基于 select 列表的,因此新表不知道任何约束(Constraint)的存在。

示例 2:使用 WHERE 子句的 SELECT INTO

现在让我们来看看结合了 WHERE 子句的 SELECT INTO 用法。在这里,我们从employee 表中提取数据,条件是部门为 “HR”,并且…

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/50117.html
点赞
0.00 平均评分 (0% 分数) - 0