Menu

Polecenia SQL: lista podstawowych komend SQL z przykładami

Polecenia SQL, których używasz na co dzień, pogrupowane według zadań (DDL, DML, DQL i TCL), każde z przykładem do uruchomienia w SQLite.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

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.

PolecenieGrupaCo robi
CREATE TABLEDDLDefiniuje nową tabelę i jej kolumny
ALTER TABLEDDLDodaje kolumnę lub zmienia jej nazwę albo zmienia nazwę tabeli
DROP TABLEDDLUsuwa tabelę razem ze wszystkimi wierszami
INSERTDMLDodaje nowe wiersze
UPDATEDMLZmienia wartości w istniejących wierszach
DELETEDMLUsuwa wiersze
SELECTDQLCzyta wiersze, filtrowane przez WHERE i sortowane przez ORDER BY
BEGIN, COMMIT, ROLLBACKTCLGrupuje 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żywa SHOW TABLES, a PostgreSQL widoku information_schema.tables (albo \dt w psql).
  • Automatyczne identyfikatory. Kolumna zadeklarowana jako INTEGER PRIMARY KEY sama numeruje nowe wiersze w SQLite, dlatego przykłady z INSERT pomijają id. MySQL wymaga AUTO_INCREMENT przy kolumnie, a PostgreSQL kolumny tożsamości (GENERATED BY DEFAULT AS IDENTITY) lub SERIAL.
  • Uprawnienia i zmiany schematu. SQLite nie ma GRANT ani REVOKE, bo baza SQLite to pojedynczy plik bez kont użytkowników, a jego ALTER TABLE nie 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.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ