Sobes.tech
Junior

Какво знаеш за извадки и съединения в базите данни?

sobes.tech AI

Отговор от AI

Образци (заявки SELECT) извличат данни от една или повече таблици. Свързванията (JOIN) комбинират редове от две или повече таблици въз основа на свързана колона между тях.

Видове свързвания:

  • INNER JOIN: Връща редове, които имат съвпадения и в двете таблици.
  • LEFT JOIN (LEFT OUTER JOIN): Връща всички редове от лявата таблица и съответните редове от дясната. Ако няма съвпадение, се връща NULL за дясната таблица.
  • RIGHT JOIN (RIGHT OUTER JOIN): Връща всички редове от дясната таблица и съответните редове от лявата. Ако няма съвпадение, се връща NULL за лявата таблица.
  • FULL JOIN (FULL OUTER JOIN): Връща всички редове, ако има съвпадение поне в една от таблиците. Ако няма съвпадение, се връща NULL за липсващите полета. (Не се поддържа от всички СУБД, например MySQL използва UNION за емулация).
  • CROSS JOIN: Връща декартовото произведение на редовете и двете таблици (всяки ред от първата таблица се комбинира с всеки ред от втората).

Примери за синтаксис:

-- INNER JOIN
SELECT *
FROM table1
INNER JOIN table2 ON table1.id = table2.foreign_id;
-- LEFT JOIN
SELECT customer.name, order.order_id
FROM customer
LEFT JOIN order ON customer.id = order.customer_id;

Ключови думи за заявки:

  • SELECT: Определя колоните за извличане.
  • FROM: Посочва таблицата(ите).
  • WHERE: Филтрира редовете по дадено условие.
  • GROUP BY: Групира редовете с еднакви стойности в една обобщена редица.
  • HAVING: Филтрира групите след GROUP BY.
  • ORDER BY: Подрежда резултата.
  • LIMIT / OFFSET: Ограничават броя на върнатите редове.

Оптимизацията на заявки и свързвания е важна за производителността на базата данни. Използват се индекси, правилно определени типове данни, избягване на SELECT * (когато е възможно), оптимизация на условията в WHERE.

В PHP за работа със заявки и свързвания се използват разширения като PDO или MySQLi, които предоставят API за изпълнение на SQL заявки.