Strukturalny język zapytań (SQL) jest jednym z podstawowych elementów nowoczesnej architektury baz danych. SQL definiuje metody używane do tworzenia relacyjnych baz danych i manipulowania nimi na wszystkich głównych platformach. Na pierwszy rzut oka język może wydawać się onieśmielający i złożony, ale nie jest to aż tak trudne.
O SQL
Prawidłowa wymowa SQL jest kwestią sporną w społeczności baz danych. W swoim standardzie SQL, American National Standards Institute zadeklarował, że oficjalna wymowa to „es queue el." Jednak wielu specjalistów od baz danych przyjęło slangową wymowę "sequel". Podobnie jak w przypadku wymowy z GIF, nie ma właściwej odpowiedzi.
SQL ma wiele odmian. Bazy danych Oracle korzystają z własnego PL/SQL. Microsoft SQL Server korzysta z Transact-SQL. Wszystkie warianty są oparte na standardzie branżowym ANSI SQL.
To wprowadzenie wykorzystuje polecenia SQL zgodne z ANSI, które działają w każdym nowoczesnym systemie relacyjnych baz danych.
DDL i DML
Polecenia SQL można podzielić na dwa główne podjęzyki. Język definicji danych zawiera polecenia używane do tworzenia i niszczenia baz danych i obiektów baz danych. Po zdefiniowaniu struktury bazy danych za pomocą DDL, administratorzy i użytkownicy bazy danych mogą używać języka manipulacji danymi do wstawiania, pobierania i modyfikowania danych w nim zawartych.
SQL obsługuje trzeci typ składni o nazwie Język kontroli danych. DCL zarządza dostępem bezpieczeństwa do obiektów w bazie danych. Na przykład Skrypt DCL przyznaje lub odwołuje określone konta użytkowników prawo do odczytu lub zapisu do tabel w jednym lub więcej zdefiniowanych obszarach bazy danych. W większości zarządzanych środowisk wielu użytkowników administratorzy baz danych zwykle wykonują skrypty DCL.
Polecenia języka definicji danych
Język definicji danych służy do tworzenia i niszczenia baz danych i obiektów baz danych. Polecenia te są używane głównie przez administratorów baz danych podczas fazy instalacji i usuwania projektu bazy danych. DDL obraca się wokół czterech podstawowych poleceń:Stwórz, posługiwać się, zmieniać, i upuszczać.
Stwórz
Stwórz polecenie ustanawia bazy danych, tabele lub zapytania na twojej platformie. Na przykład polecenie:
TWORZENIE BAZY DANYCH pracowników;
tworzy pustą bazę danych o nazwie pracowników na twoim DBMS. Po utworzeniu bazy kolejnym krokiem jest utworzenie tabel zawierających dane. Inny wariant Stwórz polecenie spełnia ten cel. Komenda:
CREATE TABLE personal_info (first_name char (20) nie null, last_name char (20) not null, worker_id int nie null);
ustanawia tabelę zatytułowaną dane osobiste w aktualnej bazie danych. W przykładzie tabela zawiera trzy atrybuty: Imię, nazwisko, i numer identyfikacyjny pracownika wraz z dodatkowymi informacjami.
Posługiwać się
posługiwać się polecenie określa aktywną bazę danych. Na przykład, jeśli aktualnie pracujesz w bazie danych sprzedaży i chcesz wydać jakieś polecenia, które będą miały wpływ na bazę pracowników, poprzedź je następującym poleceniem SQL:
UŻYWAĆ pracowników;
Sprawdź dokładnie bazę danych, w której pracujesz, zanim wydasz polecenia SQL, które manipulują danymi.
Zmieniać
Po utworzeniu tabeli w bazie danych zmodyfikuj jej definicję za pomocą zmieniać polecenie, które zmienia strukturę tabeli bez jej usuwania i ponownego tworzenia. Spójrz na następujące polecenie:
ALTER TABLE personal_info DODAJ pensję pieniądze null;
Ten przykład dodaje nowy atrybut do tabeli informacje_osobiste — wynagrodzenie pracownika. pieniądze argument określa, że pensje pracownika są przechowywane w formacie dolarów i centów. Wreszcie zero słowo kluczowe informuje bazę danych, że to pole może nie zawierać żadnej wartości dla danego pracownika.
Upuszczać
Ostatnie polecenie języka definicji danych, upuszczać, usuwa całe obiekty bazy danych z naszego DBMS. Na przykład, aby trwale usunąć utworzoną przez nas tabelę personal_info, użyj następującego polecenia:
DROP TABLE informacje_osobiste;
Podobnie poniższe polecenie posłużyłoby do usunięcia całej bazy danych pracowników:
UPUŚĆ pracowników BAZY DANYCH;
Używaj tego polecenia ostrożnie. upuszczać polecenie usuwa całe struktury danych z bazy danych. Jeśli chcesz usunąć pojedyncze rekordy, użyj kasować polecenie języka manipulacji danymi.
Polecenia języka manipulacji danymi
Język manipulacji danymi służy do pobierania, wstawiania i modyfikowania informacji z bazy danych. Te polecenia DML oferują typową strukturę rutynowej interakcji z bazą danych.
Wstawić
wstawić polecenie dodaje rekordy do istniejącej tabeli. Wracając do przykładu personal_info z poprzedniej sekcji, wyobraź sobie, że nasz dział HR musi dodać nowego pracownika do swojej bazy danych. Użyj polecenia podobnego do tego:
WSTAW W dane_osobiste
wartości('bart','simpson',12345,45000$);
Zauważ, że dla rekordu określone są cztery wartości. Odpowiadają one atrybutom tabeli w kolejności, w jakiej zostały zdefiniowane: Imię, nazwisko, numer identyfikacyjny pracownika i wynagrodzenie.
Wybierz
Wybierz polecenie jest najczęściej używanym poleceniem w SQL. Pobiera określone informacje z operacyjnej bazy danych. Spójrz na kilka przykładów, ponownie korzystając z tabeli personal_info z bazy danych pracowników.
Poniższe polecenie pobiera wszystkie informacje zawarte w tabeli personal_info. Gwiazdka to symbol wieloznaczny w SQL.
WYBIERZ *
Z informacje_osobiste;
Ewentualnie ogranicz atrybuty pobierane z bazy danych, określając co zostanie wybrany. Na przykład dział zasobów ludzkich może wymagać wykazu nazwisk wszystkich pracowników firmy. Następujące polecenie SQL pobierze tylko te informacje:
WYBIERZ nazwisko
Z informacje_osobiste;
gdzie Klauzula ogranicza pobierane rekordy do tych, które spełniają określone kryteria. Dyrektor generalny może być zainteresowany przeglądem dokumentacji kadrowej wszystkich wysoko opłacanych pracowników. Następujące polecenie pobiera wszystkie dane zawarte w personal_info dla rekordów o wartości wynagrodzenia większej niż 50 000 USD:
WYBIERZ *
OD informacje_osobiste
GDZIE wynagrodzenie > 50000 USD;
Aktualizacja
aktualizacja polecenie modyfikuje informacje zawarte w tabeli, zbiorczo lub pojedynczo. Załóżmy, że firma zapewnia wszystkim pracownikom 3-procentowy wzrost kosztów utrzymania w ciągu roku. Następujące polecenie SQL stosuje to uderzenie do wszystkich pracowników przechowywanych w bazie danych:
AKTUALIZUJ informacje_osobiste
SET pensja = pensja * 1,03;
Kiedy nowy pracownik, Bart Simpson, wykaże się wydajnością wykraczającą poza obowiązki, kierownictwo pragnie docenić jego wybitne osiągnięcia poprzez podwyżkę w wysokości 5000 USD. Klauzula WHERE wyróżnia Barta za tę podwyżkę:
AKTUALIZUJ informacje_osobiste
SET pensja = pensja + 5000
GDZIE identyfikator_pracownika = 12345;
Kasować
Na koniec spójrzmy na kasować Komenda. Przekonasz się, że składnia tego polecenia jest podobna do składni innych poleceń DML. Polecenie USUŃ z gdzie klauzula, usuń rekord z tabeli:
USUŃ Z osobistych_informacji
GDZIE identyfikator_pracownika = 12345;
DML obsługuje również pola agregujące. W Wybierz oświadczenie, operatory matematyczne, takie jak suma i liczyć podsumować dane w zapytaniu. Na przykład zapytanie:
wybierz count(*) z personal_info;
zlicza liczbę rekordów w tabeli.
Połączenia baz danych
ZA Przystąp Instrukcja łączy dane w kilku tabelach, aby wydajnie przetwarzać duże ilości danych. W tych stwierdzeniach tkwi prawdziwa moc bazy danych.
Aby zbadać zastosowanie podstawowego Przystąp operacja łączenia danych z dwóch tabel, kontynuuj przykład z użyciem tabeli personal_info i dodaj dodatkową tabelę do miksu. Załóżmy, że masz stół o nazwie postępowanie dyscyplinarne który został utworzony z następującym oświadczeniem:
CREATE TABLE disciplinary_action (action_id int nie null, pracownik_id int nie null, komentarze char (500));
Poniższa tabela zawiera wyniki działań dyscyplinarnych wobec pracowników firmy. Nie zawiera żadnych informacji o pracowniku poza numerem pracownika.
Załóżmy, że otrzymałeś zadanie stworzenia raportu zawierającego wykaz działań dyscyplinarnych podjętych wobec wszystkich pracowników z pensją przekraczającą 40 000 USD. Użycie operacji JOIN w tym przypadku jest proste. Pobierz te informacje za pomocą następującego polecenia:
SELECT personal_info.first_name, personal_info.last_name, dyscyplinarne_action.comments
OD personal_info WEWNĘTRZNE DOŁĄCZ disciplinary_action ON personal_info.employee_id = disciplinary_action.employee_id
GDZIE personal_info.salary > 40000;
Rodzaje połączeń

Połączenia występują w kilku smakach. W instrukcji SQL pierwsza tabela (zwykle nazywana Tabela A albo Lewy stół) dołącza do drugiej tabeli (zwykle nazywanej Tabela B albo Prawy stół) w sposób uwzględniający pozycję. Tak więc, jeśli zmienisz kolejność tabel w instrukcji join, wyniki operacji będą się różnić. Główne typy sprzężenia to:
- Połączenie wewnętrzne: Dopasowuje tylko rekordy, w których na warunek pasuje do tych samych rekordów w obu tabelach.
- Połączenie zewnętrzne: Dopasowuje tylko rekordy z obu tabel, które wykluczać wyniki zidentyfikowane w na stan: schorzenie.
- Prawe Dołącz: Dopasowuje wszystkie rekordy z Tabeli B oraz rekordy z Tabeli A, które pasują do na stan: schorzenie.
- Dołącz do lewej: Dopasowuje wszystkie rekordy z Tabeli A oraz rekordy z Tabeli B, które pasują do na stan: schorzenie.
- Połączenie krzyżowe: Dopasowuje wszystkie rekordy tak, jakby tabele były identyczne. Ten proces generuje coś, co nazywa się produkt kartezjański. Często sprzężenia krzyżowe są niepożądane, ponieważ dopasowują każdy wiersz tabeli A indywidualnie do każdego wiersza tabeli B. Tak więc, jeśli tabela A oferowała pięć rekordów, a tabela B oferowała 9 rekordów, zapytanie krzyżowe oferuje 45 wynikowych wierszy.