MySQL数据库连接操作详解

在关系型数据库管理系统中,SQL(Structured Query Language)扮演着至关重要的角色,它适用于各种规模的应用程序。MySQL作为一种流行的RDBMS(关系型数据库管理系统),以其免费、可扩展、直观和快速的特点,被广泛用于开发可扩展的基于Web的软件应用。MySQL支持客户端-服务器架构,并内置于MySQL服务器中,该服务器负责处理所有数据库指令、SQL命令和语句。本文作为数据科学博客马拉松的一部分发布。

目录

  • MySQL中的连接是什么?
  • 为什么使用SQL连接?
  • 设置MySQL表
  • MySQL中的连接类型
  • 内连接
  • 外连接
  • 自连接
  • 交叉连接
  • MySQL连接的局限性
  • 结论
  • 常见问题解答

MySQL中的连接是什么?

MySQL数据库通过表存储大量数据。数据库管理员(DBA)和数据分析师确保数据分析的准确性。MySQL连接允许从多个相关表中检索记录,使用共同的键将主键与外键连接起来,形成类似于Adhar、PAN或护照号码的关系。外键连接表。JOIN子句与SELECT、UPDATE和DELETE一起使用,提高了数据查询的效率。

为什么使用SQL连接?

MySQL连接之所以受欢迎,是因为它们提供了从两个或多个表中提取和整理数据的便利。当需要从数据库中提取大量数据时,不能将所有数据存储在一个表中,因为这会花费太多时间加载数据,并且数据可能会不一致。这就是为什么需要从不同的表中获取数据。DBMS的最终目标是实现规范化,确保数据集的高质量。规范化将数据分割到多个表中,而连接子句允许从多个表中获取数据,而不影响数据的质量和安全性。

设置MySQL表

在了解每种连接之前,先创建两个表:

CREATE TABLE supplier( SNO varchar(4) PRIMARY KEY, SNAME varchar(15), STATUS int(5), CITY varchar(20) ); CREATE TABLE parts( PNO varchar(4) PRIMARY KEY, SNO varchar(4) REFERENCES supplier(SNO), PNAME varchar(15), COLOR varchar(10), WEIGH int(5), CITY varchar(20), cost int(5) );

向supplier和parts表中插入数据:

Supplier INSERT INTO supplier VALUES('S1','Smith',20,'London'); INSERT INTO supplier VALUES('S2','Jones',10,'Paris'); INSERT INTO supplier VALUES('S3','Blake',30,'Paris'); INSERT INTO supplier VALUES('S4','Clark',20,'London'); INSERT INTO supplier VALUES('S5','Adams',30,'Athens'); INSERT INTO supplier VALUES('S6','Pavan',24,'Hyderabad'); Output Parts: INSERT INTO parts VALUES('P1','S1','Nut','Red',12,'London',50); INSERT INTO parts VALUES('P2','S1','Bolt','Green',17,'Paris',70); INSERT INTO parts VALUES('P3','S2','Screw','Blue',17,'Rome',80); INSERT INTO parts VALUES('P4','S3','Screw','Red',14,'London',80); INSERT INTO parts VALUES('P5','S2','Cam','Blue',12,'Paris',90); INSERT INTO parts VALUES('P6','S3','Cog','Red',19,'London',68);

MySQL中的连接类型

MySQL支持多种连接类型,用于从多个相关表中检索数据。MySQL连接的主要类型包括:

内连接子句是最常用的MySQL连接类型。它用于检索只有共同匹配的记录,即在多个表中连接条件得到满足的记录。

语法:

SELECT column_names FROM tableA INNER JOIN tableB ON tableA.col = tableB.col;

示例:

select A.SNAME, B.PNAME from supplier A INNER JOIN parts B ON A.SNO=B.SNO;

借助内连接,只能检索匹配的行,但使用外连接可以检索匹配和不匹配的行。它将在连接表的非匹配行中显示NULL值。外连接的类型包括:

LEFT JOIN子句允许检索左表(表A)的所有行,以及右表(表B)中满足连接条件的行。如果左表的任何记录与右表不匹配,则在结果集中的右表列将显示NULL。

语法:

SELECT column_names FROM tableA LEFT [OUTER] JOIN tableB ON tableA.col = tableB.col;

示例:

select a.SNAME, a.CITY, b.PNAME, b.COLOR from supplier a LEFT JOIN parts b ON a.SNO=b.SNO;

RIGHT OUTER JOIN遵循与LEFT OUTER JOIN相同的原则。它检索右表(表B)的所有数据,并与左表(表A)的记录匹配。如果右表中的记录在左表中没有任何匹配记录,则结果集中的左表列将有NULL值。

语法:

SELECT column_names FROM TableA RIGHT [OUTER] JOIN TableB ON tableA.col = tableB.col;

示例:

select a.SNAME, a.CITY, b.PNAME, b.COLOR from supplier a RIGHT JOIN parts b ON a.SNO=b.SNO;

自连接意味着将表连接到自身。它表明表中的每一行都与自身以及表中的其他每一行连接。当想要提取层次数据或比较同一表中的行时,自连接是最佳选择。

语法:

SELECT column_name FROM TableA TA, TableA TB WHERE condition;

示例:

select a.SNAME,b.CITY from supplier a, supplier b where b.SNO=a.SNO;

MySQL CROSS JOIN或笛卡尔连接有助于检索每个表的所有行的组合。如果没有提供额外的条件,它将返回表A的每一行与表B的所有行的乘积。如果表A的大小是m,表B的大小是n,那么结果集的大小将是m*n。

SELECT column_names FROM TableA CROSS JOIN TableB; select a.SNAME, a.CITY, b.PNAME, b.COLOR from supplier a CROSS JOIN parts b;

MySQL连接的局限性

Q1. MySQL中的4种连接类型是什么?
A. MySQL中的四种连接类型是INNER JOIN、LEFT JOIN(或LEFT OUTER JOIN)、RIGHT JOIN(或RIGHT OUTER JOIN)和FULL JOIN(或FULL OUTER JOIN)。
Q2. 什么是MySQL连接?
A.MySQL连接是基于指定条件从多个表中组合数据的操作,创建一个包含两个表列的新结果集。
Q3. 什么是连接和类型?
A. 连接是数据库中组合不同表的数据的操作,基于共同列。主要类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN,每种都决定了结果集的组成。
Q4. 如何在MySQL中连接两个表?
A. 在MySQL中连接两个表,使用JOIN关键字,后跟表名和ON子句,指定匹配的列。例如:“SELECT * FROM table1 JOIN table2 ON table1.column = table2.column;”
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485