Pytania każdy dobry programista baz danych / SQL powinien być w stanie odpowiedzieć [zamknięty]
Obecnie pytanie to nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi będą poparte faktami, referencjami lub wiedzą specjalistyczną, ale to pytanie będzie prawdopodobnie wywoływało debatę, argumenty, ankiety lub rozszerzoną dyskusję. Jeśli uważasz, że to pytanie można poprawić i ewentualnie ponownie otworzyć, odwiedź Pomoc centrum dla wskazówek. Zamknięte 8 lat temu . zamknięte. To pytanie i jego odpowiedzi są zamknięte , ponieważ pytanie jest off-topic, ale ma znaczenie historyczne. Obecnie nie przyjmuje nowych odpowiedzi ani interakcji.
Przechodziłem przez pytania każdy dobry programista. Net powinien być w stanie odpowiedzieć i był pod dużym wrażeniem treści i podejścia do tego pytania, więc w tym samym duchu zadaję to pytanie programiście Database/SQL.
Jakie pytania uważasz, że dobry programista bazy danych/SQL powinien być w stanie odpowiedzieć?
22 answers
Różne rodzaje połączeń:
- INNER JOIN
- lewe i prawe złącze zewnętrzne
- PEŁNE POŁĄCZENIE
- CROSS JOIN
Zobacz Jeff Atwood ' s Visual Explanation of JOINs
- Co to jest klucz? Klucz kandydata? Klucz główny? Alternatywny klucz? Klucz obcy?
Co to jest indeks i jak pomaga twojej bazie danych?
Jakie typy danych są dostępne i kiedy z których należy korzystać?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:27:37
Przedruk moja odpowiedź tutaj , jako ogólne wytyczne dla tematów.
Podstawy
-
SELECT
ING kolumny z tabeli - Część Agregatów 1:
COUNT
,SUM
,MAX
/MIN
- Część Agregatów 2:
DISTINCT
,GROUP BY
,HAVING
Intermediate
-
JOIN
składnia s, ANSI-89 i ANSI-92 -
UNION
vsUNION ALL
-
NULL
obsługa:COALESCE
& Natywna obsługa NULL - Subqueries:
IN
,EXISTS
, i inline views - Subqueries: Correlated
-
WITH
składnia: Subquery Faktoring / CTE - Views
Zaawansowane Tematy
- Funkcje, Procedury Składowane, Pakiety
- Dane obrotowe: składnia CASE & PIVOT
- Zapytania Hierarchiczne
- Kursory: Implicit and Explicit
- wyzwalacze
- dynamiczny SQL
- Zmaterializowane Widoki
- Optymalizacja Zapytań: Indeksy
- Optymalizacja Zapytań: Wyjaśnij Plany
- Optymalizacja Zapytań: Profilowanie
- modelowanie danych: formularze normalne, od 1 do 3
- Modelowanie Danych: Klucze Podstawowe I Obce
- Modelowanie Danych: Ograniczenia Tabel
- Modelowanie Danych: Link / Tabele Korekcyjne
- Wyszukiwanie Pełnego Tekstu
- XML
- Poziomy Izolacji
- diagramy zależności jednostek (Erd), logiczne i fizyczne
- Transakcje:
COMMIT
,ROLLBACK
, Obsługa Błędów
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:54
Oto kilka:
- Czym jest normalizacja i dlaczego ważne?
- Jakie są sytuacje, w których czy de-normalizacja danych? Co to jest transakcja i dlaczego ważne?
- Co to jest rzetelność referencyjna i dlaczego czy to ważne?
- Jakie kroki należy podjąć, aby zbadaj raporty powolnej bazy danych wydajność?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:39:54
Czym jest SQL injection i jak temu zapobiec?
Co to jest kursor i kiedy go używać (lub nie) i dlaczego?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:42:35
Umieściłem tę odpowiedź, ponieważ Erwin Smout opublikował ODPOWIEDŹ, która była tak zła, że podkreśliła, że prawdopodobnie istnieje potrzeba szczególnej ochrony przed nią.
Erwin zasugerował:
" dlaczego każdy SELECT powinien zawsze zawierać odrębne ?"
Bardziej odpowiednie pytanie brzmiałoby: gdyby ktoś wysunął twierdzenie, że: "każdy wybór zawsze zawiera odrębny"; jak byś skomentował twierdzenie?
Jeżeli kandydat nie jest w stanie w płomieniach albo:
- nie rozumiem problemu z roszczeniem. Brak umiejętności krytycznego myślenia.
- Brak umiejętności komunikowania problemów technicznych.
Dla przypomnienia
- Załóżmy, że Twoje zapytanie jest poprawne, i nie zwraca żadnych duplikatów, a następnie włączenie DISTINCT po prostu zmusza RDBMS do sprawdzenia wyniku (zero korzyści i dużo dodatkowego przetwarzania).
- Załóżmy, że Twoje zapytanie jest nieprawidłowe, i robi zwraca duplikaty, a następnie włączając DISTINCT po prostu ukrywa problem (ponownie z dodatkowym przetwarzaniem). Lepiej byłoby wykryć problem i naprawić zapytanie... tak będzie szybciej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:50
W naszej firmie, zamiast zadawać wiele pytań SQL, na które każdy z dobrą pamięcią może odpowiedzieć, stworzyliśmy Test programistów SQL. Test ma na celu stworzenie przez kandydata solidnego schematu z uwzględnieniem normalizacji i RI, ograniczeń sprawdzania itp. A następnie być w stanie utworzyć kilka zapytań do tworzenia zestawów wyników, których szukamy. Tworzą to wszystko na podstawie krótkiej specyfikacji projektu, którą im podajemy. Mogą to robić w domu i zajmują tyle czasu, ile potrzeba (w granicach rozsądku).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:38:41
Podałbym źle napisane zapytanie i zapytałbym ich, jak by poszli na strojenie wydajności.
Zapytałbym o teorię mnogości. Jeśli nie rozumiesz działania w zestawach, nie możesz skutecznie odpytywać relacyjnej bazy danych.Podałbym im kilka przykładów kursorów i zapytałbym, jak przepisaliby je, aby były ustawione.
Jeśli zadanie dotyczyło importu i eksportu, zadawałbym pytania o SSIS (lub inne narzędzia zaangażowane w to, używane przez inne bazy danych). Jeśli wiązało się to z pisaniem raportów, chciałbym wiedzieć, że rozumieją Agregaty i grupowanie (a także Crystal Reports lub SSRS lub jakiekolwiek narzędzie do sortowania ereportingu, którego używasz).
Chciałbym zapytać o różnicę w wynikach pomiędzy tymi trzema zapytaniami:
select a.field1
, a.field2
, b.field3
from table1 a
join table2 b
on a.id = b.id
where a.field5 = 'test'
and b.field3 = 1
select a.field1
, a.field2
, b.field3
from table1 a
left join table2 b
on a.id = b.id
where a.field5 = 'test'
and b.field3 = 1
select a.field1
, a.field2
, b.field3
from table1 a
left join table2 b
on a.id = b.id and b.field3 = 1
where a.field5 = 'test'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 20:01:46
Jaka jest różnica między clustered index and a nonclustered indeks?
Kolejne pytanie, które zadałbym nie dla konkretnego serwera to:
co to jest impas?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 23:56:37
Wiedząc, że nie używać i dlaczego nie używać:
SELECT *
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:44:28
Ciekawe pytanie dotyczyłobypodziału relacyjnego , czyli jak wyrazić relację "dla wszystkich", która wymagałaby zagnieżdżonych not exists
klauzul.
Pytanie pochodzi prosto z tego linku .
Podano następujące tabele przedstawiające pilotów, którzy potrafią latać samolotami i samolotami w hangarze:
create table PilotSkills (
pilot_name char(15) not null,
plane_name char(15) not null
)
create table Hangar (
plane_name char(15) not null
)
Wybierz nazwiska pilotów, którzy mogą latać każdym samolotem w hangarze.
Odpowiedź:
select distinct pilot_name
from PilotSkills as ps1
where not exists (
select * from hangar
where not exists (
select * from PilotSkills as ps2 where
ps1.pilot_name = ps2.pilot_name and
ps2.plane_name = hangar.plane_name
)
)
Lub ...
Zaznacz wszystkie stosy użytkownicy, którzy zaakceptowali odpowiedzi na pytania oznaczone tagiem 10 najpopularniejszych języków programowania .
(możliwa) odpowiedź (przy założeniu widoku Accepted_Answers
i tabeli Target_Language_Tags
z żądanymi znacznikami):
select distinct u.user_name
from Users as u
join Accepted_Answers as a1 on u.user_id = a1.user_id
where not exists (
select * from Target_Language_Tags t
where not exists (
select *
from Accepted_Answers as a2
join Questions as q on a2.question_id = q.question_id
join Question_Tags as qt on qt.question_id = q.question_id
where
qt.tag_name = t.tag_name and
a1.user_id = a2.user_id
)
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-25 18:35:35
Dlaczego mamy cię zatrudnić, gdy mamy zaawansowaną aplikację wykorzystującą odpowiednio zoptymalizowany ORM i wdrażającą systemy buforowania, takie jak memcached ?
To jest poważne pytanie, powinni być w stanie uzasadnić swoje istnienie. Jak mówi Jeff Atwood "[5]} sprzęt jest tani, Programiści są drogi " [3]}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 20:18:29
Porównuj i porównuj różnice między rozwiązaniem sql / rdbms i rozwiązaniem nosql. Nie możesz twierdzić, że jesteś ekspertem w żadnej technologii, nie znając jej mocnych i słabych stron w porównaniu do konkurentów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 20:34:48
Podaj przykład, gdzie preferowana jest denominacja.
(podoba mi się ten, bo ludzie wychodzą z college ' u i chcą umieścić wszystko w 3. normalnej formie)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:31:01
Jakie typy baz danych sprawiły ci, jako deweloperowi, więcej problemów ze zrozumieniem i debugowaniem? oczekiwana odpowiedź, IMHO, doświadczenie z problemami przy użyciu różnych typów dat/znaczników czasu i Blobów.
Kiedy jest wygodne korzystanie z indeksów bitmap?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:52:30
Co robi explain plan
i jak interpretować wyniki, które z niego otrzymujesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 21:15:52
- jak wykrywać i rozwiązywać problemy z współbieżnością w warstwie aplikacji?
- Jakie paradygmaty blokowania są zazwyczaj dostępne, i omówić ich wady i zalety.
- omów wartości NULL i powiązane zagadnienia.
- Jaki jest największy system baz danych, nad którym pracowałeś pod względem: # tables, # rows, # users.
Również następujące specyficzne dla platformy (SQL Server) pytania:
- omów kolumny tożsamości.
- Jaki jest typ danych znacznika czasu używany do?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 21:32:22
Aplikacja jest używana 24 godziny na dobę. Twoje okno konserwacji / aktualizacji wynosi 2 godziny co miesiąc, jak planujesz zminimalizować zakłócenia?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-23 00:08:40
Prawie wszystko jest tutaj wymienione. Chciałbym podzielić się jednym pytaniem, które zadał mi starszy menedżer w bazie danych. Uważam to pytanie za dość interesujące i jeśli się nad tym głęboko zastanowić, to ma w nim wiele znaczenia.
Pytanie brzmiało-jak opisałbyś bazę danych swojemu 5 - letniemu dziecku ?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-25 17:21:37
- wyjaśnij różnicę między wewnętrzne i zewnętrzne połączenie.
- Co to jest iloczyn kartezjański?
- wyjaśnij trzecią normalną formę
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:28:11
- wyjaśnij możliwe ograniczenia tabel
- wyjaśnij widoki (i zmaterializuj)
- wyjaśnij sekwencje
- wyjaśnij wyzwalacze
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:36:10
- Jakie są wady używania poleceń SQL adhoc/on-the-fly i co byś zamiast tego zrobił?
- w jakich sytuacjach używałbyś poleceń SQL adhoc / on-the-fly?
Ponieważ zawsze jest wyjątek od reguły:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 19:45:45
" dlaczego każdy SELECT powinien zawsze zawierać odrębne ?"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-22 23:09:49