πŸ” Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² SQL: простой ΠΈ понятный способ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² SQL, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово JOIN. Π­Ρ‚ΠΎ позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† Π½Π° основС ΠΈΡ… ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ использованиС JOIN для поиска связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ "users" ΠΈ "orders":


SELECT *
FROM users
JOIN orders ON users.id = orders.user_id;
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ соСдиняСм Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "users" ΠΈ "orders" ΠΏΠΎ полю "id" Π² "users" ΠΈ "user_id" Π² "orders". Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ строк, содСрТащий Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… условиС соотвСтствия выполняСтся.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ JOIN, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ LEFT JOIN, RIGHT JOIN ΠΈ INNER JOIN, Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… потрСбностСй.

НадСюсь, это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² SQL! Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ Π΅Ρ‰Π΅ вопросы, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ….

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

🌟 ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ тСбя, Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ ΡƒΡ‡Π΅Π½ΠΈΠΊ! БСгодня ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² SQL. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ Π½Π°Π²Ρ‹ΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, поэтому Π΄Π°Π²Π°ΠΉ Π½Π°Ρ‡Π½Π΅ΠΌ!

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ?

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ опрСдСлимся, Ρ‡Ρ‚ΠΎ это Π²ΠΎΠΎΠ±Ρ‰Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚.

Π’ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… связи (relationships) ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для установлСния связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…. Они ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ слоТныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ эффСктивно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запросы ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

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

Π’ SQL сущСствуСт нСсколько способов ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Один ΠΈΠ· Π½ΠΈΡ… - это использованиС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов JOIN ΠΈ ON.

Π”Π°Π²Π°ΠΉ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: "ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹" ΠΈ "Π—Π°ΠΊΠ°Π·Ρ‹". КаТдая Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля:


    CREATE TABLE ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ (
        id INT PRIMARY KEY,
        имя VARCHAR(50),
        адрСс VARCHAR(100)
    );

    CREATE TABLE Π—Π°ΠΊΠ°Π·Ρ‹ (
        id INT PRIMARY KEY,
        ΠΊΠ»ΠΈΠ΅Π½Ρ‚_id INT,
        ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ VARCHAR(50)
    );
    

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связь ΠΌΠ΅ΠΆΠ΄Ρƒ этими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ SQL запрос:


    SELECT *
    FROM ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹
    JOIN Π—Π°ΠΊΠ°Π·Ρ‹ ON ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹.id = Π—Π°ΠΊΠ°Π·Ρ‹.ΠΊΠ»ΠΈΠ΅Π½Ρ‚_id;
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово JOIN для объСдинСния Ρ‚Π°Π±Π»ΠΈΡ† "ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹" ΠΈ "Π—Π°ΠΊΠ°Π·Ρ‹". Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ON, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ условиС связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΌΡ‹ связываСм поля "id" ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹" ΠΈ "ΠΊΠ»ΠΈΠ΅Π½Ρ‚_id" ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "Π—Π°ΠΊΠ°Π·Ρ‹".

Π’ΠΈΠ΄Ρ‹ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

Π’ SQL ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. НСкоторыС ΠΈΠ· Π½ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • Один-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡƒ (One-to-One): КаТдая запись Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ соотвСтствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ записи Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • Один-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ (One-to-Many): КаТдая запись Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСскольким записям Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • МногиС-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ (Many-to-Many): ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ записи Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ мноТСствСнным записям Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ для выполнСния запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

πŸŽ‰ ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°, ΠΌΠΎΠΉ Π΄Ρ€ΡƒΠ³! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ‹ знаСшь, ΠΊΠ°ΠΊ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² SQL. Бвязи ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΠΌ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ слоТныС запросы ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Помни, Ρ‡Ρ‚ΠΎ использованиС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов JOIN ΠΈ ON позволяСт Π½Π°ΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ условия связи.

НС Π·Π°Π±Ρ‹Π²Π°ΠΉ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, вСдь знания - это ΡΠΊΠΎΡ€ΡŒ ΠΊ успСху! Π£Π΄Π°Ρ‡ΠΈ Π² Ρ‚Π²ΠΎΠ΅ΠΌ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ Π² ΠΌΠΈΡ€ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…!

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

SQL Π£Ρ€ΠΎΠΊ 7 | Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ (связСй) ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ | Для ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

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

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

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

πŸ” Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² SQL: простой ΠΈ понятный способ

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² psql: простой способ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ”’ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство строк Π² SQL запросС с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ

Как ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ язык Π² SQL Server Management Studio Π½Π° русский?