10 najpopularniejszych SQL-owych pytań rekrutacyjnych

Zdjęcie wykonane przez Michała Wachowskiego.
1. Utwórz drzewo z rekordów w tabeli
To najważniejsze pytanie z całej dziesiątki. Naucz się tworzyć zapytania rekurencyjne!
http://stackoverflow.com/questions/1760681/sql-recursive-menu-sorting
2. Jaka jest różnica między Truncate i Delete?
Krótko: Truncate usuwa całą zawartość w tabeli bez możliwości zrobienia rollbacku (zależy od systemu bazodanowego) natomiast Delete usuwa jeden lub więcej rekordów.
Długo: http://stackoverflow.com/questions/139630/whats-the-difference-between-truncate-and-delete-in-sql
3.Czym jest widok? Dlaczego warto z niego korzystać?
Widok jest „tabelą tylko do odczytu”, która jest wynikiem zapisanego zapytania SQL w bazie danych.
Warto używać, bo pozwala na wprowadzenie dodatkowej warstwy abstrakcji w dostępie do danych. Zmiana źródła danych z tabeli T_OLD na T_NEW wymaga zmiany jednego selecta wewnątrz bazy danych.
4. Jaka jest różnica między UNION, MINUS i INTERSECT?
5. Jak zliczyć ilość rekordów w tabeli PRODUCTS
?
SELECT COUNT(*) FROM PRODUCTS;
6. Czym różnią się joiny od siebie?
Źródło: http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
7. Jak wybrać 10 pierwszych rekordów z tabeli?
MS SQL Server – SELECT TOP 10 ...
MySQL / PostgreSQL- SELECT ... LIMIT 10
8. Czym jest transakcja?
Pozwala na uruchomienie serii instrukcji sql jako jedna. Wszystkie instrukcje muszą się wykonać, albo żadna. Pozwala programiście na zmianę kompletu poprawnych danych. Dzięki czemu baza nigdy nie znajdzie się w stanie niepewności.
9. Jaka jest różnica między WHERE i HAVING?
HAVING jest używane po grupowaniu, a WHERE jest używany przed grupowaniem.
10. Znajdź wszystkie produkty których nazwa zawiera tekst „Foo”, bez nie uwzględniania wielkości liter.
SELECT * from Products WHERE UPPER(Name) like '%foo%';