数据库操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解

欢迎阅读本篇博客文章,我们将为您详细介绍 MySQL 中的数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句。掌握这些技巧将有助于您在数据库操作中更加灵活和高效地处理数据。

Sql数据库操作详解

SQL SELECT INTO 语句

SELECT INTO 语句将数据从一个表复制到一个新表中。

SELECT INTO 语法

将所有列复制到新表中:

SELECT *
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;

只复制一些列到新表中:

SELECT column1, column2, column3, ...
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;

新表将按照在旧表中定义的列名和类型创建。您可以使用 AS 子句创建新的列名。

SQL SELECT INTO 示例

以下 SQL 语句创建 Customers 的备份副本:

SELECT * INTO CustomersBackup2017
FROM Customers;

以下 SQL 语句使用 IN 子句将表复制到另一个数据库中的新表中:

SELECT * INTO CustomersBackup2017 IN 'Backup.mdb'
FROM Customers;

以下 SQL 语句仅复制一些列到新表中:

SELECT CustomerName, ContactName INTO CustomersBackup2017
FROM Customers;

以下 SQL 语句仅将德国客户复制到新表中:

SELECT * INTO CustomersGermany
FROM Customers
WHERE Country = 'Germany';

以下 SQL 语句将来自多个表的数据复制到新表中:

SELECT Customers.CustomerName, Orders.OrderID
INTO CustomersOrderBackup2017
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

提示: SELECT INTO 还可以用于使用另一个表的架构创建新的空表。只需添加一个导致查询不返回数据的 WHERE 子句:

SELECT * INTO newtable
FROM oldtable
WHERE 1 = 0;

SQL INSERT INTO SELECT 语句

INSERT INTO SELECT 语句将数据从一个表复制并插入到另一个表中。目标表中的现有记录不受影响。

INSERT INTO SELECT 语法

将一个表中的所有列复制到另一个表中:

INSERT INTO table2
SELECT * FROM table1
WHERE condition;

仅将一个表中的某些列复制到另一个表中:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

SQL INSERT INTO SELECT 示例

在本示例中,我们将使用著名的 Northwind 示例数据库。

以下是 "Customers" 表的一部分选择:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

以及 "Suppliers" 表的一部分选择:

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountry
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonEC1 4SDUK
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA

SQL INSERT INTO SELECT 示例

将 "Suppliers" 复制到 "Customers"(未填充数据的列将包含 NULL):

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;

将 "Suppliers" 复制到 "Customers"(填充所有列):

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;

仅将德国供应商复制到 "Customers":

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';

SQL CASE 表达式

SQL CASE 表达式遍历条件并在满足第一个条件时返回一个值(类似于 if-then-else 语句)。因此,一旦条件为真,它将停止阅读并返回结果。如果没有条件为真,它将返回 ELSE 子句中的值。

如果没有 ELSE 部分并且没有条件为真,它将返回 NULL。

CASE 语法

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;

SQL CASE 示例

在下面的示例中,我们使用了 Northwind 示例数据库中的 "OrderDetails" 表的一部分选择:

OrderDetailIDOrderIDProductIDQuantity
1102481112
2102484210
310248725
410249149
5102495140

SQL CASE 示例

以下 SQL 遍历条件并在满足第一个条件时返回一个值:

SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN 'The quantity is greater than 30'
    WHEN Quantity = 30 THEN 'The quantity is 30'
    ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails;

以下 SQL 将按 City 对客户进行排序。但是,如果 City 为 NULL,则按 Country 进行排序:

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);

SQL NULL 函数

在 SQL 中,处理可能包含 NULL 值的情况是很常见的。在这里,我们将探讨一些处理 NULL 值的 SQL 函数,包括 IFNULL()、ISNULL()、COALESCE() 和 NVL()。

MySQL

MySQL 的 IFNULL() 函数允许您在表达式为 NULL 时返回替代值:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;

或者我们可以使用 COALESCE() 函数,如下所示:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;

SQL Server

SQL Server 的 ISNULL() 函数允许您在表达式为 NULL 时返回替代值:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;

或者我们可以使用 COALESCE() 函数,如下所示:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;

MS Access

MS Access 的 IsNull() 函数在表达式为 NULL 值时返回 TRUE(-1),否则返回 FALSE(0):

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;

Oracle

Oracle 的 NVL() 函数实现相同的结果:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;

或者我们可以使用 COALESCE() 函数,如下所示:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;

这些函数允许您以一种灵活的方式处理 NULL 值,确保在进行计算时不会出现意外的结果。文章来源地址https://www.toymoban.com/diary/sql/573.html

到此这篇关于数据库操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/sql/573.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
连接池:数据库连接管理的关键组件
上一篇 2023年12月05日 17:15
从零开始学习SQL操作:修改数据库和表
下一篇 2023年12月09日 10:25

相关文章

  • SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解

    SELECT INTO 语句将数据从一个表复制到一个新表中。 新表将按照在旧表中定义的列名和类型创建。您可以使用 AS 子句创建新的列名。 以下 SQL 语句创建 Customers 的备份副本: 以下 SQL 语句使用 IN 子句将表复制到另一个数据库中的新表中: 以下 SQL 语句仅复制一些列到新表中:

    2024年02月05日
    浏览(119)
  • pycharm连接MySql数据库,新建表creat table、删除表drop table、查询表select、插入数据insert

    亲爱的小伙伴,欢迎你来为学习新的知识啦~~~ 一、安装pymysql 首先我们肯定要先在python中把能操作mySql的第三方数据库安装一下呀~ 安装方式:pip安装(你有没有安装好pip呀,可以看安装pip的相关文章进行安装好哦~) 打开我们电脑的终端,然后输入以下的命令,将我们

    2024年02月09日
    浏览(51)
  • insert into select 语法使用

    INSERT INTO SELECT语句:从一个表复制数据,然后把数据插入到一个已存在的表中。 将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中, 这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。 1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(fie

    2024年02月16日
    浏览(59)
  • 数据库高效批量更新操作 MERGE INTO

    使用 UPDATE 批量更新大量的数据,会出现效率低下,有时候甚至卡死的情况,后面通过使用 MERGE INTO 代替 UPDATE 执行批量更新,会提升执行效率。 原理:因为 UPDATE 关联子查询写法,是选到一条做一次子查询,这种写法得更新少,走好的索引才行,MERGE 写法是执行完 ON 后一次

    2024年02月17日
    浏览(43)
  • 大数据:hive数据库的操作语法,数据表,内部表,external外部表,数据导入导出load,insert

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月08日
    浏览(76)
  • 数据库作业——select查询操作

    创建数据库 插入数据 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。

    2024年02月13日
    浏览(52)
  • SQL数据库的查询操作大全(select)

    1、数据库的连接、创建 2、对字段的操作:(alter table) 3、对数据的操作(插入、修改、删除) 4、数据查询(select) 5、多表查询(join on) 6、约束操作 四、数据库查询大全(select) 1、select 字段名 from 表; 2、In查询:用于 过滤 你所需要查询的内容                

    2023年04月08日
    浏览(73)
  • Hive Sql优化之一次from查询多次insert into操作

    例:统计字段空值率 优化点:一次map多个reduce,有效节省了map操作 流程如下: 1.创建表; 2.插入数据; 3.参照下面语句;

    2024年02月17日
    浏览(62)
  • MySQL数据库——MySQL INSERT:插入数据(添加数据)

    数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。 INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句。 1) INSERT…VALUES语句 INSERT VALUES 的语法格式为: 语法说明如下:

    2024年02月08日
    浏览(70)
  • 探索SQL深入理解数据库操作的关键概念与技巧【文末送书】

    SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准化语言。无论是在开发应用程序、进行数据分析还是进行数据库管理,掌握SQL都是至关重要的。本文将从入门级别开始,逐步引导您了解SQL语言的基础知识,直到掌握高级技巧。 创建数据库 首先

    2024年04月22日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包