Ultimate SQL Cheat Sheet do zakładek na później [2022]
Opublikowany: 2022-06-17SQL lub S tructured Query Language to zestaw poleceń służących do zarządzania operacjami relacyjnych baz danych, takimi jak usuwanie, tworzenie, aktualizacja, odczyt i tak dalej.
SQL jest międzynarodowym standardem używanym przez relacyjne bazy danych od 1987 roku. Istnieją cztery typy poleceń SQL:
- Język definicji danych (DDL) — te polecenia definiują strukturę bazy danych. Na przykład upuść, zmień nazwę, zmień i utwórz. Wpływają na strukturę bazy danych. Na przykład tworzenie bazy danych lub zmiana nazwy tabeli.
- Język manipulacji danymi (DML) — te polecenia służą do pracy z danymi. Na przykład wstaw, wybierz, zaktualizuj, usuń. Nie mają one wpływu na tabele ani strukturę bazy danych, ale na dane znajdujące się w tabelach. Na przykład wstawianie nowego wiersza lub aktualizowanie wartości w wierszu.
- Język kontroli transakcji (TCL) — te polecenia sterują przetwarzaniem transakcji w bazie danych. Na przykład wycofaj, zapisz, zatwierdź. Te polecenia mają trwały wpływ na bazę danych. Na przykład wycofanie całej transakcji do poprzedniego stanu, nawet jeśli jeden proces nie powiedzie się.
- Język kontroli danych (DCL) — polecenia kontroli danych służą do autoryzacji użytkowników i przyznawania tylko niezbędnych uprawnień użytkownikowi lub grupie. Na przykład jeden użytkownik może mieć uprawnienia tylko do odczytu, podczas gdy inny może mieć uprawnienia do odczytu i zapisu. Kontrola dostępu odbywa się za pomocą poleceń grant, deny i revoke.
Poniżej znajduje się ściągawka SQL zawierająca najbardziej przydatne polecenia. Ściągawka pomoże Ci szybko odnieść się do wymaganych poleceń z poprawną składnią i oczekiwanym wynikiem zapytania. W tej ściągawce skupiamy się na poleceniach DDL i DML, ponieważ pozostałe dwa typy są dość proste w użyciu.
Definicja danych i zapytania dotyczące manipulacji
Komenda | Opis | Przykład |
DODAJ | Dodaje kolumnę lub ograniczenie (określone) do istniejącej tabeli. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); |
ZMIEŃ TABELĘ | Zmienia określoną tabelę, aby dodać, zaktualizować lub usunąć kolumnę tabeli. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee DROP COLUMN last_name; |
ZMIEŃ KOLUMNĘ | Zmień typ danych kolumny. Na przykład, aby zmienić typ kolumny join_date tabeli pracowników z varchar2 na datetime. | ALTER TABLE employee ALTER COLUMN joining_date datetime; |
WSZYSTKO | Operator logiczny używany z SELECT, WHERE i HAVING i zwraca prawdę, jeśli wszystkie wartości spełniają warunek podzapytania | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D'); |
ORAZ | Operator logiczny, który zwraca prawdę tylko wtedy, gdy spełnione są wszystkie warunki w klauzuli WHERE. | SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000; |
KAŻDY | Operator logiczny; zwraca prawdę, jeśli chociaż jedna z wartości podzapytania spełnia warunek w klauzuli where | SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = 'HR' OR department = 'R&D'); |
JAK | Tworzy alias dla tabeli lub kolumny do czasu wykonania zapytania, przydatne, gdy nazwa jest używana wielokrotnie, szczególnie podczas złączeń tabel | SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston'; |
ASC | Zwraca dane w kolejności rosnącej , używanej z klauzulą ORDER BY. Samo ORDER BY domyślnie sortuje wyniki rosnąco. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC; |
POMIĘDZY | Aby wybrać wartości z zakresu | SELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000; |
WALIZKA | Składa się z zestawu oświadczeń; zwraca wartość instrukcji, która jest prawdziwa, JEŻELI żaden z warunków nie jest spełniony, warunek w części ELSE jest wykonywany. Jeśli nie ma innego, zwraca NULL. | SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "Eligible for 40% discount" WHEN order_amount between 2000 and 3000 THEN "Eligible for 25% discount" ELSE "Eligible for 5% discount" END FROM order_details; |
UTWÓRZ BAZĘ DANYCH | Tworzy nową bazę danych o określonej nazwie | CREATE DATABASE movies_development; |
UTWÓRZ TABELĘ | Tworzy nową tabelę o określonej nazwie tabeli oraz nazwach i typach kolumn | CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)); |
DOMYŚLNA | Ustawia wartość domyślną dla określonej kolumny, używaną z poleceniami CREATE lub ALTER TABLE | CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE); ALTER TABLE product ALTER is_available SET DEFAULT true; |
KASOWAĆ | Usuwa dane z określonej tabeli | DELETE from employee where employee_id = 345; |
DESC | Zwraca dane w kolejności końcowej, używanej z klauzulą ORDER BY. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC; |
UPUŚĆ KOLUMNĘ | Usuwa określoną kolumnę z określonej tabeli. | ALTER TABLE employee DROP COLUMN employee_name; |
UPUŚĆ BAZY DANYCH | Usuwa całą bazę danych | DROP DATABASE movies_development; |
UPUŚĆ DOMYŚLNIE | Usuwa domyślną wartość określonej kolumny | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT; |
UPUŚĆ TABELĘ | Usuwa określoną tabelę | DROP TABLE employee; |
ISTNIEJE | Sprawdza, czy rekord istnieje, czy nie w podzapytaniu, i zwraca prawdę, jeśli zostanie znaleziony jeden lub więcej wyników. | SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR'); |
Z | Określa tabelę, z której należy wybrać lub usunąć dane | SELECT * FROM employee; DELETE FROM employee where employee_id = 345; |
GRUPUJ WEDŁUG | Grupuje dane zgodnie z określoną kolumną, używaną do funkcji agregujących | Wyświetl liczbę pracowników w każdym krajuSELECT COUNT(employee_id), country from employee GROUP BY country; Pokazuje średnie oceny pracowników każdego działu SELECT AVG(rating), department from employee GROUP BY department; |
W | Służy do wybierania wielu wartości naraz w klauzuli WHERE zamiast używania wielu warunków OR | SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia'); |
INDEKS | Indeks sprawia, że zapytania o dane są wydajniejsze i szybsze. Indeksy są zwykle tworzone w kolumnach, które są najczęściej przeszukiwane. | Utwórz indeks:CREATE INDEX idx_employee ON employee (first_name, last_name); Utwórz unikalny indeks, w którym wartości nie mogą być duplikowane: CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name); Usuń indeks: ALTER TABLE employee DROP INDEX idx_employee; |
WŁÓŻ W | Dodaj nowy wiersz w tabeli | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
JEST NULL | Sprawdza pod kątem wartości zerowych | SELECT employee_id from employee where employee_name IS NULL; |
NIE JEST NULL | Sprawdza wartości, które nie są puste | SELECT employee_id, core_skill from employee where core_skill IS NOT NULL; |
TAK JAK | Zwraca wszystkie wartości pasujące do danego wzorca | SELECT employee_id, first_name, last_name where first_name LIKE '%tony'; |
NIE JAK | Zwraca wszystkie wartości, które nie pasują do podanego wzorca | SELECT employee_id, first_name, last_name where first_name NOT LIKE '%tony'; |
LUB | Zwraca true, jeśli spełniony jest jeden z warunków w klauzuli where | SELECT * from employee where country = 'India' OR country = 'Australia'; |
ZAMÓW PRZEZ | Uporządkowuje wyniki w kolejności rosnącej (domyślnie) lub kolejności określonej w zapytaniu ( asc ending lub descending ending) | SELECT employee_name, salary from employee ORDER BY salary DESC; |
ROWNUM | Zwraca określoną liczbę wierszy wymienionych w klauzuli WHERE zapytania | SELECT * from employee where ROWNUM <= 5; This will return the first five rows in the resultset. |
WYBIERZ | Wybiera wymienione kolumny tabeli na podstawie podanych warunków. Jeśli określono *, zwracane są wszystkie wartości kolumn. | SELECT employee_id from employee; SELECT * from employee; |
WYBIERZ DO | Kopiuje dane z tabeli źródłowej do innej tabeli docelowej. Możesz wybrać wszystkie kolumny (*) lub określone kolumny. | SELECT * INTO new_employee_info FROM employee; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee; |
WYBIERZ TOP | Wybiera określoną liczbę rekordów z tabeli | SELECT TOP 5 employee_id from employee where employee_rating = 5; |
USTAWIĆ | Ustawia wartość kolumny na nową określoną wartość podczas operacji UPDATE. | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
NIEKTÓRE | Zwraca true, jeśli spełniony jest jeden z warunków w podzapytaniu. NIEKTÓRE jest podobne do polecenia ANY. | SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = 'HR'); |
OBCIĄĆ TABELĘ | Usuwa dane z tabeli – pamiętaj, że tabela nie zostanie usunięta. | TRUNCATE TABLE log_info; |
UNIA | Zwraca różne wartości z co najmniej 2 połączonych tabel. Aby uzyskać również zduplikowane wartości, użyj UNION ALL. | SELECT city from employee UNION SELECT city from office_locations; |
UNIKALNY | Dodaje ograniczenie unikatowe do określonej kolumny, co oznacza, że kolumna nie może mieć zduplikowanych wartości. Może być używany podczas tworzenia tabeli lub zmiany poleceń. | CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id)); ALTER TABLE employee ADD UNIQUE(employee_id); |
AKTUALIZACJA | Aktualizuje wartość określonej kolumny o nową wartość | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
WARTOŚCI | Używany z poleceniem INSERT, aby dodać nowy wiersz wartości do tabeli | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
GDZIE | Dodaje warunki do filtrowania zestawu wyników instrukcji SELECT | SELECT * from employee WHERE salary > 20000; |
Funkcje agregujące
Funkcje agregujące to polecenia manipulacji danymi, które działają na kolumnach liczbowych, takich jak int i float. Są one pomocne w filtrowaniu i sortowaniu danych na poziomie samej bazy danych. Niektóre często używane funkcje agregujące to:

FUNKCJONOWAĆ | OPIS | PRZYKŁAD |
AVG | Zwraca średnią wartość określonej kolumny | SELECT AVG(marks) from students where subject = 'English'; |
MIN | Zwraca najmniejszą wartość z określonej kolumny | SELECT MIN(price) from product WHERE product_category = 'shoes'; |
MAX | Zwraca największą wartość z określonej kolumny | SELECT MAX(quantity), product_name from inventory; |
LICZYĆ | Zwraca liczbę wierszy spełniających zapytanie | Pokazuje całkowitą liczbę rekordów w tabeli pracowników.SELECT COUNT(*) from employee; Pokaż liczbę pracowników, których wynagrodzenie jest większe niż 20000 SELECT COUNT(*) from employee where salary > 20000; |
SUMA | Zwraca sumę wartości określonej kolumny liczbowej | SELECT SUM(marks) from students where subject = 'English'; |
Połączenia SQL
Sprzężenia SQL są bardzo ważne, ponieważ łączą i filtrują dane z wielu tabel. Połączenia są nieco skomplikowane i mogą dać nieoczekiwane wyniki, jeśli nie zostaną wykonane poprawnie. Poniższa tabela pomoże Ci szybko zapoznać się z 4 typami złączeń SQL:
TYP DOŁĄCZENIA | OPIS | SKŁADNIA | PRZYKŁAD |
Połączenie wewnętrzne | Zwraca rekordy pasujące w połączonych tabelach; jest podobny do skrzyżowania. | SELECT kolumna1, kolumna2… z tabeli1 INNER JOIN tabela2 na tabela1.kolumnaN = tabela2.kolumnaN; | select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id; |
Pełne (zewnętrzne) połączenie | Zwraca wszystkie rekordy, które pasują po obu stronach — lewej lub prawej. Jest podobny do związku. | SELECT kolumna1, kolumna2… z tabela1 FULL OUTER JOIN tabela2 na tabela1.kolumnaN = tabela2.kolumnaN; | select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id; |
Dołącz do lewej | Zwraca wszystkie rekordy z lewej tabeli i rekordy spełniające kryteria z prawej tabeli | SELECT kolumna1, kolumna2… z tabeli1 LEFT JOIN tabela2 na tabela1.kolumnaN = tabela2.kolumnaN; | select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id; |
Prawe dołączenie | Zwraca wszystkie rekordy z prawej tabeli i rekordy spełniające kryteria z lewej tabeli | SELECT kolumna1, kolumna2… z tabeli1 RIGHT JOIN tabela2 na tabela1.kolumnaN = tabela2.kolumnaN; | select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id; |
Dodatkowe zasoby
SQL jest ważnym narzędziem zarówno dla programistów, analityków danych, jak i analityków. Poręczne odniesienie do poleceń SQL w formie ściągawki może zaoszczędzić dużo czasu i pomóc w zrozumieniu oczekiwanego wyniku każdego słowa kluczowego.
Aby uzyskać dodatkowe informacje, zapoznaj się z następującymi zasobami:
Samouczek SQL: Ściągawka SQL
Intellipaat: Ściągawka z komendami SQL
Konfiguracja strony internetowej: Ściągawka SQL
ProgrammingWithMosh: Ściągawka SQL
Ściągawka PostgreSQL