Przede wszystkim dokładnie poznaj połączenia. Nie tylko połączenia wewnętrzne i lewe. Dowiedz się, co robi łączenie krzyżowe i pełne łączenie zewnętrzne. Poznaj okoliczności, które spowodują, że wybierzesz konkretny rodzaj złączenia. Zrozum, że nie można ich zamieniać, a zapytanie, które wykorzystuje lewe złączenie, może zwrócić inne wyniki niż to, które używa złączenia wewnętrznego. (Można by pomyśleć, że byłoby to oczywiste, ale przeczytałem zbyt wiele pytań, w których ludzie opisując swój problem, nieco przypadkowo wypróbowali różne połączenia).
Następnie naprawdę rozumiem agregaty i ich działanie. Mysql pozwoli ci uniknąć wykonywania grupowych czynności w standardowy sposób. Ale miej dyscyplinę, aby całkowicie zdefiniować grupę według klauzuli. Pomoże ci to zrozumieć, co robisz i ułatwi przeniesienie twojej wiedzy do innych baz danych.
Dowiedz się, co robi opis przypadku.
Podczas wykonywania złożonych zapytań naucz się pracować w porcjach. Sprawdź przy każdej porcji, czy masz oczekiwane wyniki. Załóżmy na przykład, że musisz napisać zapytanie sprawozdawcze dotyczące zamówień, które zostały zwrócone w ciągu ostatnich 3 miesięcy, powód zwrotu oraz dane kontaktowe klienta. Pierwszym krokiem jest odzyskanie zamówień w ciągu ostatnich trzech miesięcy. Gdy dowiesz się, że masz taką solidną treść, możesz dodać informacje o przyczynie zwrotu. Gdy już będziesz mieć taką bryłę, możesz dodać klienta, który ją zwrócił. Kiedy już to zrobisz, dodaj dane kontaktowe tej osoby. Na każdym etapie sprawdź wyniki i sprawdź, czy mają one sens. W tym przypadku prawdopodobnie chcę mieć tylko jeden rekord na każde zwrócone zamówienie. Jeśli na jakimkolwiek etapie pośrednim liczba wyników wzrośnie lub spadnie, wiesz, że masz problem z zapytaniem. Czasami w blokach konstrukcyjnych będziesz chciał zobaczyć dodatkowe pola, aby sprawdzić, czy informacje są poprawne. Umieszczam je w osobnym wierszu i komentuję je, gdy przechodzę do następnego kroku (usuwając je na końcu, gdy wiem, że mam rację), aby były łatwo dostępne, jeśli dodanie kolejnej zmarszczki sprawi, że zapytanie stanie się zabawne. Nie można poprawnie wykonywać złożonych zapytań bez dokładnego zrozumienia, jak powinny wyglądać wyniki. Myślenie, że wygląda OK, ponieważ zwróciło niektóre wyniki, prawie gwarantuje, że masz złe wyniki przez większą część czasu. m prawo), aby były łatwo widoczne, jeśli dodanie kolejnej zmarszczki sprawi, że zapytanie będzie zabawne. Nie można poprawnie wykonywać złożonych zapytań bez dokładnego zrozumienia, jak powinny wyglądać wyniki. Myślenie, że wygląda OK, ponieważ zwróciło niektóre wyniki, prawie gwarantuje, że masz złe wyniki przez większą część czasu. m prawo), aby były łatwo widoczne, jeśli dodanie kolejnej zmarszczki sprawi, że zapytanie będzie zabawne. Nie można poprawnie wykonywać złożonych zapytań bez dokładnego zrozumienia, jak powinny wyglądać wyniki. Myślenie, że wygląda OK, ponieważ zwróciło niektóre wyniki, prawie gwarantuje, że masz złe wyniki przez większą część czasu.
Oto lista kilku podstawowych rzeczy, które powinieneś być w stanie zrobić w SQL bez zastanowienia:
- Najpierw prosty wybór bez połączeń (i bez select *), ale z warunkami na zaznaczeniu
- Powinieneś wiedzieć, jak połączyć dwie lub więcej tabel i uzyskać rekordy, które znajdują się we wszystkich tabelach
- Powinieneś wiedzieć, jak łączyć dwie lub więcej tabel i uzyskiwać rekordy we wszystkich tabelach, ale zwracaj tylko jeden rekord z tabeli z wieloma stronami relacji jeden do wielu
- Powinieneś być w stanie uzyskać rekordy w jednej tabeli, ale nie w powiązanej tabeli
- Powinieneś mieć możliwość agregowania danych dla raportu
- Powinieneś być w stanie wstawić jeden rekord do tabeli
- Powinieneś być w stanie zaktualizować jeden rekord w tabeli
- Powinieneś być w stanie usunąć jeden rekord z tabeli
- Powinieneś być w stanie wstawić grupę rekordów do tabeli bez kursora
- Powinieneś być w stanie zaktualizować grupę rekordów w tabeli bez kursora
- Powinieneś być w stanie usunąć grupę rekordów w tabeli bez kursora
- Powinieneś być w stanie wykonać wiele akcji w jednej transakcji i obsłużyć pułapkę błędów
- Powinieneś być w stanie stworzyć unię rekordów i wiedzieć, kiedy używać UNION vice UNION ALL
- Powinieneś być w stanie różnicować dane dla jednego pola w oparciu o niektóre kryteria (używając CASE)
Kiedy poczujesz się swobodnie z podstawową znajomością SQL, poznaj strukturę bazy danych. Potrafię pisać skomplikowane zapytania w stosunku do bardzo skomplikowanych DBS, które obsługuję znacznie szybciej niż inne osoby, ponieważ rozumiem strukturę i nie muszę myśleć o tym, gdzie są przechowywane rzeczy. Jeśli rozumiesz strukturę tabeli i relacje między kluczami obcymi oraz gdzie przechowywane są wartości wyszukiwania i co oznaczają kolumny (nie tylko ich nazwa, ale jakie dane w nich przechowywane), możesz być ekspertem w wyszukiwaniu tej bazy danych. Pierwszą rzeczą, którą robię w każdej nowej pracy, jest dokładne zrozumienie struktury db.