Pytania rekrutacyjne SQL(podchwytliwe) + odpowiedzi

Поділитися
Вставка
  • Опубліковано 23 січ 2025

КОМЕНТАРІ • 22

  • @patrykdychtanowski7222
    @patrykdychtanowski7222 5 місяців тому +1

    Super Odcinek jak zawsze, dzięki!

  • @TomaszTomzik
    @TomaszTomzik 5 місяців тому +3

    Te zadania w znacznej mierze obejmują tzw. ubzdurzenia baz danych, których nie powinno być,. np. jak to z wyrównywaniem długości stringów przez dodanie spacji po prawej. Powiem więcej w znacznej większości zadań to są bugi baz danych.

    • @nieinformatyk
      @nieinformatyk  5 місяців тому

      Gdyby to były bugi to już dawno byłyby usunięte :) Sposób porównywania stringów jest niecodzienny, ale jest to zwyczajnie opisane w dokumentacji: docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/Data-Type-Comparison-Rules.html#GUID-A114F1F4-A08D-4107-B679-323DC7FEA31C
      "With blank-padded semantics, if the two values have different lengths, then Oracle first adds blanks to the end of the shorter one so their lengths are equal. "
      Są to detale, które jednak warto znać, bo ułatwiają one debugowanie kodu.

    • @TomaszTomzik
      @TomaszTomzik 5 місяців тому +2

      @@nieinformatyk są to bugi lub źle zaprojektowane rozwiązania a, że działają latami to nie nazywa się tego bugami. Wiem coś na ten temat.

  • @bartoszpawliczak2823
    @bartoszpawliczak2823 5 місяців тому +1

    Bardzo fajny materiał, 7,5 punktu (zad. 5, zad. 8, zad. 10 nie do końca dobrze, głównie przez te różnice w silnikach). Mam też kilka kwestii dyskusyjnych: w zadaniu nr 2 powinniśmy raczej znaleźć trzecią sumę i wartości >=, bo może być tak, że dwóch sprzedawców na taką samą sprzedaż. W zad. 6 - to zależy od typu daty, czy jest date, czy timestamp.

    • @nieinformatyk
      @nieinformatyk  5 місяців тому +1

      Brawo! Bardzo dobry wynik :) Co do pkt. 2 to spodziewałem się tej niejedoznaczności, dlatego dodałem napis, że w sytuacji ex aeqou wybieramy dowolny rekord.
      Ad. 6 Zgadza się, aczkolwiek tu są też róznice między bazami danych. Bo w Oracle DATE przechowuje datę z dokładnością do sekund, w Postgres i Sql Server tylko do dni. Więc typ danych robiłby różnicę tylko w Postgres i Sql Server.

  • @stefan.ocetkiewicz
    @stefan.ocetkiewicz 5 місяців тому

    A, nawet nieźle wyszło, 7,5 pkt - przy czym nie znam prawie w ogóle Oracle'a. Wiadomo, z podstawami bym sobie i w nim poradził, ale specyficzne różnice między bazami znam wyłącznie między MySQL, Postgresem a MS SQL.

    • @nieinformatyk
      @nieinformatyk  5 місяців тому +1

      Bardzo dobry wynik, gratuluję :) Różnice między bazami danych w gruncie rzeczy sprowadzają się do nazw typów danych i funkcji, zarządzania obiektami, uprawnieniami i transakcjami, czyli de facto wszystkim co bezpośrednio zależy od architektury systemu. Grupowanie danych, łączenie tabel, podzapytania czy funkcje analityczne działają niemal identycznie poza wyjątkami :)

    • @stefan.ocetkiewicz
      @stefan.ocetkiewicz 5 місяців тому

      @@nieinformatyk dziękuję 🙂. Podchodziłem trochę z pewnymi obawami do "testu", bo wstyd by było nie zrobić choć z 50%, podczas gdy w tym roku mija mi 20 lat romansu z SQLem 😂. Ale jednak okazało się, że nadążam 🙈.
      Tak, te różnice nie są może wielkie, ale czasami potrafią dać w kość. Ja np nie przepadam za MySQL - jest strasznie ubogi w porównaniu z Postgres, a w pewnym zadaniu przejechałem się na jego brakach bardzo...

  • @TomaszTomzik
    @TomaszTomzik 5 місяців тому

    Co do order by w widoku, oczywiście w Oracle można sortować ale też to może nie zadziałać... jednak zauważyłem, że przy skomplikowanych widokach i zapytaniach opartych o wielopoziomowe widoki znacznie przyspiesza ich działanie, Oracle ma jakiś problem gdy widoki nie zawierają w sobie sortowania. Nie rozpracowałem dlaczego, ale czasami to nie ma znaczenia a czasami ma. W Apex gdy definiujesz słowik z widoku jest opcja dla order by "Delivered order by from view"... i wtedy order by w widoku ma wielki sens;)

    • @nieinformatyk
      @nieinformatyk  5 місяців тому

      Nie spotkałem takiej sytuacji, ale wierzę, że mogło tak być. Niektóre ścieżki dostępu wymagają sortowania zbiorów, więc być może na posortowanym zbiorze optymalizator wybrał inny algorytm dostępu. Ale to tylko moje domysły :)

  • @RobieMVPAplikacjeKarolBocian
    @RobieMVPAplikacjeKarolBocian 5 місяців тому +1

    Fajne!!!
    🥰😍🤩
    🥰😍🤩
    🥰😍🤩
    🥰😍🤩
    🥰😍🤩

  • @marcinkusnierz5312
    @marcinkusnierz5312 5 місяців тому +1

    Siemka Darek! Trochę nie w temacie, jeśli chodzi o powyższy filmik, ale mam do Ciebie pytanko. W swoich materiałach często wspominasz, że optymalizacji BD można nauczyć się poprzez naukę administracji bazą danych oraz architektury. Jakie książki mógłbyś polecić o tej tematyce?

    • @nieinformatyk
      @nieinformatyk  5 місяців тому +1

      Hej, to zależy z jakim systemem bazodanowym pracujesz. Podstaw optymalizacji SQL da się nauczyć w miarę uniwersalnie w oderwaniu od RDBMS, np. używanie UNION ALL zamiast UNION, czytanie planu zapytania czy przepisywanie OR-ów na UNION ALL. Bardziej zaawansowane techniki optymalizacji zależą jednak od architektury systemu i tutaj już wypadałoby sięgać po pozycji stricte systemu z którym pracujesz. Jeśli chodzi o Oracle to polecam: www.oreilly.com/library/view/cost-based-oracle-fundamentals/9781590596364/

    • @marcinkusnierz5312
      @marcinkusnierz5312 5 місяців тому

      No tak… nie doprecyzowałem o którą bazę mi chodzi, ale miałem na myśli właśnie Oracle, także trafiłeś z odpowiedzią. Dziękuję 😉

  • @maciejszypula
    @maciejszypula 5 місяців тому

    zawsze daję młodym do napisania querkę która dodaje kolumnę z autonumeracją rosnąco po jakimś stringu. Żeby zobaczyć czy umieją sobie zrobić partycję i unikalność na podstawie więcej niż 1 kolumny. Musowo outer joiny.

  • @TomaszTomzik
    @TomaszTomzik 5 місяців тому

    Okres czasu? co to jest?:D

    • @nieinformatyk
      @nieinformatyk  5 місяців тому

      "Okres jest miarą czasu, tak samo jak np. bochenek jest miarą chleba."

    • @TomaszTomzik
      @TomaszTomzik 5 місяців тому +1

      @@nieinformatyk dlatego się mówi "okres" nie trzeba dodawać "czasu" ;)

    • @nieinformatyk
      @nieinformatyk  5 місяців тому +1

      @@TomaszTomzik Być może jest to masło maślane, tak jak cofanie się do tyłu :)