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ć?

Author: Rachel, 2010-01-22

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ć?

 31
Author: marc_s,
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


  1. SELECTING kolumny z tabeli
  2. Część Agregatów 1: COUNT, SUM, MAX/MIN
  3. Część Agregatów 2: DISTINCT, GROUP BY, HAVING

Intermediate


  1. JOINskładnia s, ANSI-89 i ANSI-92
  2. UNION vs UNION ALL
  3. NULL obsługa: COALESCE & Natywna obsługa NULL
  4. Subqueries: IN, EXISTS, i inline views
  5. Subqueries: Correlated
  6. WITH składnia: Subquery Faktoring / CTE
  7. 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
 28
Author: OMG Ponies,
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ść?
 12
Author: Phil Sandler,
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?

 8
Author: user121301,
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

  1. 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).
  2. 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.
 8
Author: Craig Young,
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).

 5
Author: Randy Minder,
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'
 5
Author: HLGEM,
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?

 5
Author: Jose Chama,
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 *
 4
Author: Jack Marchetti,
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
  )
)
 3
Author: Jordão,
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]}

 2
Author: jcm,
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.

 2
Author: Logicalmind,
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)

 1
Author: user1228,
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?

 1
Author: JuanZe,
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.

 1
Author: David Oneill,
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?
 1
Author: Disillusioned,
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?

 1
Author: Tim Jarvis,
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 ?

 1
Author: Shamik,
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ę
 0
Author: keithwarren7,
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
 0
Author: R van Rijn,
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ł?
Ten obszar może mieć ogromny wpływ na wydajność i bezpieczeństwo db. Zrozum to źle, a możesz skończyć w świecie bólu.
  • w jakich sytuacjach używałbyś poleceń SQL adhoc / on-the-fly?

Ponieważ zawsze jest wyjątek od reguły:)

 0
Author: AdaTheDev,
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 ?"

 -2
Author: Erwin Smout,
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