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 заявки.