Polecenia SQL w skrócie
Polecenia SQL dzielą się na kilka grup według tego, co robią. Tabela zawiera te, których będziesz używać najczęściej, a każda sekcja poniżej uruchamia jedno z nich.
| Polecenie | Grupa | Co robi |
|---|---|---|
CREATE TABLE | DDL | Definiuje nową tabelę i jej kolumny |
ALTER TABLE | DDL | Dodaje kolumnę lub zmienia jej nazwę albo zmienia nazwę tabeli |
DROP TABLE | DDL | Usuwa tabelę razem ze wszystkimi wierszami |
INSERT | DML | Dodaje nowe wiersze |
UPDATE | DML | Zmienia wartości w istniejących wierszach |
DELETE | DML | Usuwa wiersze |
SELECT | DQL | Czyta wiersze, filtrowane przez WHERE i sortowane przez ORDER BY |
BEGIN, COMMIT, ROLLBACK | TCL | Grupuje zmiany, by udały się lub nie udały razem |
DDL to język definicji danych (data definition language), DML to język manipulacji danymi (data manipulation language), DQL to język zapytań (data query language), a TCL to język sterowania transakcjami (transaction control language). Nazwy są mniej ważne niż sam podział: DDL zmienia kształt bazy, a DML to, co jest w środku.
CREATE TABLE: definicja tabeli
CREATE TABLE nadaje tabeli nazwę i wymienia jej kolumny z typami i regułami. Każde inne polecenie na tej stronie potrzebuje tabeli, na której może działać.
Strona o CREATE TABLE omawia reguły takie jak NOT NULL, UNIQUE i DEFAULT.
INSERT: dodawanie wierszy
INSERT INTO dodaje jeden wiersz lub kilka. Wypisz kolumny, a potem wartości w tej samej kolejności.
Kolumna id wypełniła się sama: INTEGER PRIMARY KEY dostaje kolejny numer, gdy go pominiesz. Więcej na ten temat w INSERT.
SELECT: odczyt wierszy
SELECT to polecenie, które będziesz pisać najczęściej. Wybierz kolumny, filtruj wiersze przez WHERE i sortuj je przez ORDER BY.
Wracają tylko wiersze, które przechodzą test WHERE, od najwyższej oceny. Szczegóły znajdziesz w podstawach SELECT i WHERE.
UPDATE: zmiana wierszy
UPDATE ustawia nowe wartości w wierszach, które już istnieją. Klauzula WHERE decyduje, które to wiersze. Jeśli ją pominiesz, zmieni się każdy wiersz.
Gdy nie masz pewności, do czego pasuje klauzula WHERE, najpierw uruchom ją jako SELECT. Strona UPDATE pokazuje więcej wzorców.
DELETE: usuwanie wierszy
DELETE FROM usuwa wiersze pasujące do klauzuli WHERE. Podobnie jak UPDATE dotyczy każdego wiersza, jeśli tej klauzuli brakuje.
Wiersza Chena już nie ma, a pozostałe są nietknięte. Zobacz DELETE.
ALTER TABLE i DROP TABLE: zmiana lub usunięcie tabeli
ALTER TABLE zmienia istniejącą tabelę bez utraty jej wierszy. DROP TABLE usuwa tabelę całkowicie.
Nowa kolumna ma w istniejących wierszach wartość NULL, dopóki jej nie wypełnisz. Strona ALTER i DROP TABLE wymienia, na co pozwala SQLite.
JOIN: łączenie tabel
JOIN czyta wiersze z dwóch tabel naraz, dopasowane po wspólnej kolumnie.
Boris nie jest zapisany na żaden kurs, więc INNER JOIN go pomija. LEFT JOIN zachowałby go z pustym kursem.
GROUP BY: podsumowanie wierszy
GROUP BY łączy wiersze o tej samej wartości w jeden wiersz, a funkcja agregująca, taka jak COUNT lub AVG, podsumowuje każdą grupę.
Funkcje agregujące oraz GROUP BY i HAVING idą dalej.
BEGIN, COMMIT i ROLLBACK: grupowanie zmian
Transakcja sprawia, że kilka zmian liczy się jako jedna. COMMIT zachowuje je wszystkie, a ROLLBACK wszystkie cofa.
Przelew został zatwierdzony, a druga zmiana wycofana, więc Ada kończy z 70, a Boris z 80. Transakcje wyjaśniają, kiedy ich używać.
Czym różni się SQLite
Polecenia na tej stronie to standardowy SQL, a to, czego się tu nauczysz, przyda się także w MySQL i PostgreSQL. Przykłady do uruchomienia są jednak napisane dla SQLite, a w większych bazach zmieniają się trzy szczegóły:
- Lista tabel. Przykłady czytają
sqlite_master, własną tabelę schematu SQLite. MySQL używaSHOW TABLES, a PostgreSQL widokuinformation_schema.tables(albo\dtwpsql). - Automatyczne identyfikatory. Kolumna zadeklarowana jako
INTEGER PRIMARY KEYsama numeruje nowe wiersze w SQLite, dlatego przykłady zINSERTpomijająid. MySQL wymagaAUTO_INCREMENTprzy kolumnie, a PostgreSQL kolumny tożsamości (GENERATED BY DEFAULT AS IDENTITY) lubSERIAL. - Uprawnienia i zmiany schematu. SQLite nie ma
GRANTaniREVOKE, bo baza SQLite to pojedynczy plik bez kont użytkowników, a jegoALTER TABLEnie potrafi zmienić typu kolumny.
Najczęściej zadawane pytania
Jakie są podstawowe polecenia SQL?
Pięć poleceń wystarcza do większości codziennej pracy: CREATE TABLE definiuje tabelę, INSERT dodaje wiersze, SELECT je odczytuje, UPDATE zmienia, a DELETE usuwa. Dalej są ALTER TABLE, DROP TABLE, JOIN, GROUP BY i polecenia transakcji BEGIN, COMMIT i ROLLBACK.
Czym różni się DDL od DML?
DDL (data definition language, język definicji danych) zmienia strukturę bazy: CREATE, ALTER i DROP. DML (data manipulation language, język manipulacji danymi) zmienia wiersze w tabelach: INSERT, UPDATE i DELETE. SELECT tylko czyta, dlatego często wymienia się go osobno jako DQL.
Czy w poleceniach SQL liczy się wielkość liter?
Nie. SELECT, select i Select działają tak samo. Pisanie słów kluczowych wielkimi literami to konwencja, która odróżnia je od nazw tabel i kolumn. Tekst w cudzysłowach jest jednak porównywany dokładnie, więc 'Ada' i 'ada' to w SQLite różne teksty, chyba że poprosisz o porównanie bez rozróżniania wielkości liter.
Czy te polecenia działają tak samo w MySQL i PostgreSQL?
To standardowy SQL i we wszystkich trzech bazach znaczy to samo, więc to, czego się tu nauczysz, przyda się także gdzie indziej. Przykłady do uruchomienia są jednak napisane dla SQLite: lista tabel pochodzi tu z sqlite_master, automatyczne identyfikatory wymagają AUTO_INCREMENT w MySQL lub kolumny tożsamości w PostgreSQL, a SQLite nie ma GRANT ani REVOKE.