SQL Server SELECT INTO语句

时间:2020-02-23 14:32:34  来源:igfitidea点击:

在SQL SERVER系列中,今天我们将看看SQL Server最有用和最有趣的概念之一-SQL SERVER SELECT INTO语句。

SQL SERVER SELECT INTO语句的工作原理

" SQL Server SELECT INTO语句"可帮助我们在同一数据库中创建一个新表,其中包含来自selected(old)表的所有或者特定记录。
此外,我们可以通过某些条件对其进行验证,从而对要复制到新表中的数据添加某些限制。

例如:

有时,我们可能会希望我们的开发人员或者数据库工程师与我们在同一个数据库上工作。
也就是说,在开发项目时,我们可能希望初级开发人员在数据库的一部分上工作。

此外,我们还希望授予他们对给定数据库中任何种类的更改的完整访问权限。

这是SQL SERVER SELECT INTO出现的时候。

这样,将在数据库中创建一个新表,其中包含来自选定/旧表的列和数据值。

现在,让我们在下面的部分中了解SQL Server SELECT INTO语句的结构。

SQL SELECT INTO语句的语法

SQL Server SELECT INTO语句在同一数据库内创建一个新表,并将数据从旧表复制到该表中。

语法:

SELECT column-names 
INTO new-table
FROM old-table;

  • " column-names":旧表的列名。

  • new-table:该表是具有指定值的旧表的副本。

  • old-table:将要从中复制数据到新表中的表。

现在,让我们使用各种示例来实现SQL Server SELECT INTO语句。

通过示例实现SQL SERVER SELECT INTO

首先,让我们创建一个表并将值插入表中。

CREATE TABLE Info (
  id INT PRIMARY KEY,
  City VARCHAR (255) NOT NULL
); 
 
INSERT INTO Info (
 id,
 City
)
VALUES
  (
      1,
    'Pune'
  ),
  (
      2,
    'Satara'
  ),
  (
      3,
    'California'
  );

现在,我们已经创建了具有上述数据值的表" Info",现在让我们创建一个新表" Info_backup",其中包含表中的所有数据值-" Info"。

SQL Server SELECT INTO语句复制所有数据值

示例:使用SQL Server SELECT INTO语句在同一数据库中创建表的备份-" Info"作为" Info_backup"。

SELECT *
INTO Info_backup
FROM Info;

我们将使用SELECT查询查看新创建表的数据" Info_backup",如下所示

Select * from Info_backup;

使用AS子句的SQL SELECT INTO查询

如果我们希望从新旧表中更改要插入到新表中的数据值的列名,则SELECT INTO表以及AS子句可以帮助我们达到目的。

例:

SELECT id AS info_id, city
INTO Info_view
FROM Info;

SELECT * from Info_view;

其中我们使用SQL AS子句和SELECT INTO语句将新创建的表中的列名" id"更改为" info_id"," Info_view"。

使用SELECT INTO语句复制特定的列

现在,我们将参考以下创建的表格-以下示例为"股票"。

CREATE TABLE Stock (
  id INT PRIMARY KEY,
  City VARCHAR (255) NOT NULL,
  Cost INT
); 
 
INSERT INTO Stock (
 id,
 City,
Cost
) VALUES
  (
      1,
    'Pune',
    100
  ),
  (
      2,
    'Satara',
    500
  ),
  (
      3,
    'California',
    50
  );

在以下示例中,我们仅将表中的少数几个选定的列("股票")复制到了新创建的表"股票视图"中。

示例:使用SQL Server SELECT INTO语句将特定的列从旧表复制到新表中。

select id, cost
INTO Stock_view
From Stock;

其中我们选择了" id"和" cost"列的数据值并将其复制到新表中-" Stock"中的" Stock_view"。

带WHERE子句的SQL Server SELECT INTO语句

我们还可以使用条件子句(例如WHERE子句)来构造SQL Server SELECT INTO语句。

因此,根据WHERE子句中提到的指定条件,数据值将从旧表复制到新表。

例:

Select * 
INTO Conditional_Stock
From Stock
WHERE Cost>50 and Cost<400;

SELECT INTO语句将所有数据值从"库存"复制到新表" Conditional_Stock",其"成本"值介于50到400之间。

要注意的一点!

‘当我们有SQL视图来存储目的时,为什么需要SQL Server SELECT INTO语句?’

因为:

使用SQL视图,我们可以通过指定条件来限制或者限制对数据的访问。
SELECT INTO语句可以执行相同的工作。

但是要理解的一点是,视图中所做的所有更改都反映在原始数据库中。
由SELECT INTO语句创建的新表中所做的更改不会反映原始数据中的任何更改。