SQL(结构化查询语言)是一种用于管理和操作关系型数据库的强大工具。它被数据科学家、分析师、网页开发者和其他技术爱好者广泛用于数据检索和操作。SQL提供了多种方法来检索和探索数据、连接多个表以及创建存储过程和函数。本文将介绍SQL连接方法和开发及使用存储过程和函数的技巧。
理解SQL中的连接。
了解SQL中不同类型的连接,如内连接、左连接、全连接等。
了解SQL中存储过程和函数的区别。
在数据科学博客大赛中发表的本文,将探讨SQL连接方法和技巧,以及存储过程和函数的使用。
为了理解SQL中不同类型的连接及其相关概念,将使用以下客户和交易表来自销售数据库。
客户表:
交易表:
SQL中的连接用于组合两个或多个表中的行,基于相关或共同的列。连接是处理具有一对多和多对多关系的表的好方法。连接方法会考虑表的顺序。在查询中'join'之前的表是左表,另一个是右表。
默认的连接方法,使用'Join'或'Inner Join'子句执行。这种方法只组合满足条件的两个表中的记录。下面的维恩图也说明了这一点,以清晰地展示内连接的图像。
SELECT customers.customer_code, customers.customer_name, transactions.product_code, transactions.sales_amount
FROM customers
JOIN transactions ON customers.customer_code = transactions.customer_code;
上述查询的输出如下:
这个子句返回左表的所有行和满足条件的右表记录。如果右表的任何行没有数据,它将为该特定条件返回NULL。
SELECT customers.customer_code, customers.customer_name, transactions.product_code, transactions.sales_amount
FROM customers
LEFT JOIN transactions ON customers.customer_code = transactions.customer_code;
上述查询的输出如下:
右外连接(或右连接)的工作方式与左连接完全相反。它返回右表的所有行,并在左表的行不满足条件时返回null。右连接用于连接多个表,因为它可以避免重新结构化查询以连接一个表。
SELECT customers.customer_code, customers.customer_name, transactions.product_code, transactions.sales_amount
FROM customers
RIGHT JOIN transactions ON customers.customer_code = transactions.customer_code;
上述查询的输出如下:
全外连接将组合连接两侧的所有行或记录。下面的维恩图说明了全连接的输出。SQLite不支持全外连接和右连接。在日常工作中很少使用右连接和全连接。
SELECT customers.customer_code, customers.customer_name, transactions.product_code, transactions.sales_amount
FROM customers
FULL JOIN transactions ON customers.customer_code = transactions.customer_code;
交叉连接返回表的笛卡尔积。它将客户表的行数乘以交易表的行数。
SELECT customers.customer_code, customers.customer_name, transactions.product_code, transactions.sales_amount
FROM customers
CROSS JOIN transactions ON customers.customer_code = transactions.customer_code;
上述交叉连接查询返回的表如下所示,显示了两个表行数的乘积:
自连接将表与自身组合。可以使用自连接使用同一表中现有的列来创建新列。
SELECT trans.customer_code, trans.product_code, trans.sales_amount,
new_trans.sales_amount + 1000 AS new_amount FROM transactions AS trans,
transactions AS new_trans WHERE trans.customer_code = new_trans.customer_code;
自连接的输出如下:
存储过程和函数是执行特定任务的一组语句。两者之间的主要区别在于:函数在被调用时必须始终返回一个值,而存储过程可能不返回或可能产生值。
为了避免相同查询的重复性和冗余,使用存储过程。存储过程指的是执行特定任务的一组SQL语句。它包含一个用于存储过程名称的头部,带有参数,以及一个用于执行查询部分的主体。
要创建存储过程,请转到'存储过程'并点击'创建存储过程'。然后工作台将自动生成存储过程语法。需要命名存储过程,传递参数,并编写语句。
应用后,需要使用'call ()'来调用存储过程。
这里创建一个简单的存储过程,从'客户'表中打印客户名称。
SQL中的函数在被调用时必须返回一个值。因此,使用它来存储在工作期间需要多次返回的值的语句。它通过一次定义函数时使用参数和查询来节省时间。
要创建函数,请转到'函数'并点击'创建函数'。
它将为创建一个函数语法,然后需要传递参数和条件。然后调用函数以检查交易表中显示的产品。
SQL连接用于组合两个或多个表中的记录。它们用于节省时间并消除重复编写相同查询的冗余。SQL存储过程可能返回也可能不返回值,而SQL函数必须返回值。
在本文中,讨论了各种SQL连接方法,如内连接、左连接、右连接、全连接、交叉连接和自连接。还讨论了SQL中的存储过程和函数以及它们的主要区别和实现。