SQL高级教程(三)

violet2024/12/04
SQL

SQL SELECT INTO 语句

TIP

通过 SQL ,你可以从一个表复制信息到另一个表。

SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

1 SQL SELECT INTO 语句

SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

TIP

注意:

MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECTopen in new window

当然你可以使用以下语句来拷贝表结构及数据:

CREATE TABLE 新表
AS
SELECT * FROM 旧表 

SQL SELECT INTO 语法

假设有一个名为 employees 的表,包含以下数据:

EmployeeIDFirstNameLastNameAgeDepartment
1JohnDoe30Sales
2JaneSmith25HR
3SamBrown28IT

要创建一个名为 employees_backup 的新表,并将 employees 表中的所有数据插入到新表中,可以使用以下 SQL 语句:

SELECT *
INTO employees_backup
FROM employees;

执行此语句后,新的 employees_backup 表将仅包含年龄大于 25 岁的员工的数据。

SELECT EmployeeID,FirstName,LastName,Age,Department
INTO employees_backup
FROM employees
WHERE Age > 25;

执行此语句后,新的 employees_backup 表将仅包含年龄大于 25 岁的员工的数据。

使用注意事项

TIP

表结构

  • SELECT INTO 会创建一个新表,并且新表的结构将基于选择的列和数据类型。
  • 如果新表已存在,SELECT INTO 语句将失败。在这种情况下,可以使用 INSERT INTO ... SELECT 语句。

数据库支持

  • SELECT INTO 语句在 SQL Server 中非常常用,但在 MySQLPostgreSQL 中通常使用 CREATE TABLE ... AS SELECT 语句。

2 在其他数据库中的替代方案

MySQL 和 PostgreSQL

在 MySQL 和 PostgreSQL 中,可以使用 CREATE TABLE ... AS SELECT 来实现类似的功能:

CREATE TABLE employees_backup AS
SELECT EmployeeID,FirstName,LastName,Age,Department
FROM employees
WHERE Age > 25;

SQL INSERT INTO SELECT 语句

TIP

通过 SQL ,你可以从一个表复制信息到另一个表。

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。

1 SQL INSERT INTO SELECT 语句

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

SQL INSERT INTO SELECT 语法

我们可以从一个表中复制所有的列插入到另一个已存在的表中:

INSERT INTO table2
SELECT * FROM table1;

或者我们可以只复制指定的列插入到另一个已存在的表中:

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;

2 演示数据库

在本教程中,我们将使用 RUNOOB 样本数据库。

下面是选自 Websites 表的数据:

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

下面是 apps APP 的数据:

mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name   | url                     | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP     | http://im.qq.com/       | CN      |
|  2 | 微博 APP | http://weibo.com/       | CN      |
|  3 | 淘宝 APP | https://www.taobao.com/ | CN      |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)

3 SQL INSERT INTO SELECT 实例

复制 apps 中的数据插入到 Websites 中:

实例

INSERT INTO Websites (name,country)
SELECT app_name,country FROM apps;

只复制 id=1 的数据到 Websites 中:

实例

INSERT INTO Websites (name,country)
SELECT app_name,country FROM apps
WHERE id=1;

SQL CREATE DATABASE 语句

TIP

CREATE DATABASE 语句用于创建数据库。

1 SQL CREATE DATABASE 语法

CREATE DATABASE dbname;

2 SQL CREATE DATABASE 实例

下面的 SQL 语句创建一个名为 my_db 的数据库:

CREATE DATABASE my_db;

数据库表可以通过 CREATE TABLE 语句来添加。

SQL CREATE TABLE 语句

TIP

CREATE TABLE 语句用于创建数据库中的表。

表由行和列组成,每个表都必须有个表名。

1 SQL CREATE TABLE 语法

CREATE TABLE table_name (
    column_name1 data_type(size),
    column_name2 data_type(size),
    column_name3 data_type(size),
    ...
);
  • column_name 参数规定表中列的名称
  • data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)
  • size 参数规定表中列的最大长度。

TIP

提示:如需了解 MS Access、MySQL 和 SQL Server 中可用数据类型,请参考 数据类型参考手册open in new window

2 SQL CREATE TABLE 实例

现在我们想要创建一个名为 Persons 的表,包含五列:PersonID、LastName、FirstName、Address 和 City。

我们使用下面的 CREATE TABLE 语句:

实例

CREATE TABLE Persons(
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

PersonID 列的数据类型是 int,包含整数

LastName、FirstName、Address 和 City 列的数据类型是 varchar,包含字符,且这些字段的最大长度为 255 个字符。

空的 Persons 表如下所示:

PersonIDLastNameFirstNameAddressCity

TIP

提示:可使用 INSERT INTO 语句向空表写入数据。

最后更新时间 12/11/2024, 7:07:45 AM