πŸ” Как Π² SQL ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи Ρ‚Π°Π±Π»ΠΈΡ†: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как Π² SQL ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи Ρ‚Π°Π±Π»ΠΈΡ†?

Для просмотра связСй Ρ‚Π°Π±Π»ΠΈΡ† Π² SQL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ JOIN. Он позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π°Π±Π»ΠΈΡ† Π½Π° основС ΠΈΡ… связанных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


SELECT * 
FROM Ρ‚Π°Π±Π»ΠΈΡ†Π°1
JOIN Ρ‚Π°Π±Π»ΠΈΡ†Π°2 ON Ρ‚Π°Π±Π»ΠΈΡ†Π°1.ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1 = Ρ‚Π°Π±Π»ΠΈΡ†Π°2.ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2;

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ JOIN для объСдинСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹1 ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹2 Π½Π° основС значСния Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅1 Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹1 ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅2 Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹2.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ INNER JOIN:


SELECT DISTINCT * 
FROM Ρ‚Π°Π±Π»ΠΈΡ†Π°1
INNER JOIN Ρ‚Π°Π±Π»ΠΈΡ†Π°2 ON Ρ‚Π°Π±Π»ΠΈΡ†Π°1.ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1 = Ρ‚Π°Π±Π»ΠΈΡ†Π°2.ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2;

Π’Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ JOIN, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ LEFT JOIN, RIGHT JOIN ΠΈ FULL JOIN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ условиями связи.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π² SQL ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи Ρ‚Π°Π±Π»ΠΈΡ†?

SQL (Structured Query Language) являСтся основным языком программирования для управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² рСляционных Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ SQL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько способов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ JOIN ΠΈ FOREIGN KEY.

1. ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ JOIN:

Команда JOIN Π² SQL позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π°Π±Π»ΠΈΡ† Π½Π° основС ΠΈΡ… связСй. Она основана Π½Π° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ столбцами Ρ‚Π°Π±Π»ΠΈΡ†, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠ»ΠΈ взаимосвязанныС Π΄Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: "Customers" (Π—Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΈ) ΠΈ "Orders" (Π—Π°ΠΊΠ°Π·Ρ‹), ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°ΠΊΠ°Π·Ρ‹ сдСлали наши ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹:

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

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ JOIN, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "Customers" ΠΈ "Orders" ΠΏΠΎ столбцу "CustomerID", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΎΠ±Ρ‰ΠΈΠΌ для ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†. ΠœΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΠΌΠ΅Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "Customers" ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "Orders". Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ строки, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ совпадСния Π² ΠΎΠ±ΠΎΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ….

2. ИспользованиС внСшнСго ΠΊΠ»ΡŽΡ‡Π° (FOREIGN KEY):

Π’ рСляционных Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (FOREIGN KEY). Π’Π½Π΅ΡˆΠ½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡ - это столбСц ΠΈΠ»ΠΈ комбинация столбцов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связываСт Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° основС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· столбца ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: "Employees" (Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ) ΠΈ "Departments" (ΠžΡ‚Π΄Π΅Π»Ρ‹). Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сотрудника Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π», ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ относится. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ сотрудники относятся ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΡ‚Π΄Π΅Π»Π°ΠΌ:

SELECT Employees.EmployeeName, Departments.DepartmentName
FROM Employees
JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ внСшний ΠΊΠ»ΡŽΡ‡ "DepartmentID" Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ "Employees", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° столбСц "DepartmentID" Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ "Departments". ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ JOIN, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° основС соотвСтствия ΠΌΠ΅ΠΆΠ΄Ρƒ значСниями Π² этих столбцах. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° сотрудников ΠΈ названия ΠΎΡ‚Π΄Π΅Π»ΠΎΠ², ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ΠΈ относятся.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ использовали ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ JOIN для объСдинСния Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ получСния связанных Π΄Π°Π½Π½Ρ‹Ρ…. JOIN - это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных способов Ρ€Π°Π±ΠΎΡ‚Ρ‹ с связями ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² SQL.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ SQL Π‘Π” ΠΈ связь Ρ‚Π°Π±Π»ΠΈΡ†

Π£Ρ€ΠΎΠΊΠΈ MS SQL Server. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

Π£Ρ€ΠΎΠΊΠΈ ΠΏΠΎ SQL | Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… | Бвязь ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как выглядит язык SQL: особСнности ΠΈ синтаксис

πŸ” Как Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ скрипт Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² SQL Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π³ΠΈΠ΄

πŸ” Как Π² SQL ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи Ρ‚Π°Π±Π»ΠΈΡ†: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

5 простых способов Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρƒ Π² SQL ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя