Окончательная шпаргалка по SQL для закладки на потом [2022]
Опубликовано: 2022-06-17SQL, или язык структурированных запросов , представляет собой набор команд для управления операциями реляционной базы данных, такими как удаление, создание, обновление, чтение и т. д.
SQL является международным стандартом, используемым реляционными базами данных с 1987 года. Существует четыре типа команд SQL:
- Язык определения данных (DDL) — эти команды определяют структуру базы данных. Например, удалить, переименовать, изменить и создать. Они влияют на структуру базы данных. Например, создание базы данных или переименование таблицы.
- Язык манипулирования данными (DML) — эти команды используются для работы с данными. Например, вставить, выбрать, обновить, удалить. Они влияют не на таблицы или структуру базы данных, а на данные, присутствующие в таблицах. Например, вставка новой строки или обновление значения в строке.
- Язык управления транзакциями (TCL) — эти команды управляют обработкой транзакций в базе данных. Например, откат, сохранение, коммит. Эти команды оказывают постоянное влияние на базу данных. Например, откат всей транзакции до предыдущего состояния даже в случае сбоя одного процесса.
- Язык управления данными (DCL) — команды управления данными используются для авторизации пользователей и предоставления пользователю или группе только необходимых разрешений. Например, у одного пользователя может быть разрешение только на чтение, а у другого — чтение и запись. Управление доступом осуществляется с помощью команд предоставления, отказа и отзыва.
Ниже приведена шпаргалка по SQL, содержащая наиболее полезные команды. Шпаргалка поможет вам быстро найти необходимые команды с правильным синтаксисом и ожидаемым результатом запроса. В этой памятке мы сосредоточимся на командах DDL и DML, поскольку два других типа довольно просты в использовании.
Определение данных и запросы на манипулирование
Команда | Описание | Пример |
ДОБАВЛЯТЬ | Добавляет столбец или ограничение (как указано) в существующую таблицу. | 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); |
ИЗМЕНИТЬ ТАБЛИЦУ | Изменяет указанную таблицу, добавляя, обновляя или удаляя столбец таблицы. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee DROP COLUMN last_name; |
ИЗМЕНИТЬ КОЛОНКУ | Измените тип данных столбца. Например, чтобы изменить тип столбца joining_date таблицы сотрудников с varchar2 на datetime. | ALTER TABLE employee ALTER COLUMN joining_date datetime; |
ВСЕ | Логический оператор, используемый с SELECT, WHERE и HAVING, возвращает true, если все значения удовлетворяют условию подзапроса. | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D'); |
А ТАКЖЕ | Логический оператор, который возвращает true только тогда, когда выполняются все условия в предложении WHERE. | SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000; |
ЛЮБЫЕ | Логический оператор; возвращает true, если хотя бы одно из значений подзапроса удовлетворяет условию в предложении 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'); |
В КАЧЕСТВЕ | Создает псевдоним для таблицы или столбца до момента выполнения запроса, что полезно, когда имя используется несколько раз, особенно во время объединения таблиц. | SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston'; |
АСК | Возвращает данные в порядке окончания по возрастанию , используемому с предложением ORDER BY. ORDER BY по умолчанию сортирует результаты по возрастанию. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC; |
МЕЖДУ | Чтобы выбрать значения в диапазоне | SELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000; |
КЕЙС | Состоит из набора утверждений; возвращает значение оператора, которое является истинным, ЕСЛИ ни одно из условий не выполняется, выполняется условие в части ELSE. Если другого нет, то возвращает 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; |
СОЗДАТЬ БАЗУ ДАННЫХ | Создает новую базу данных с указанным именем | CREATE DATABASE movies_development; |
СОЗДАТЬ ТАБЛИЦУ | Создает новую таблицу с указанным именем таблицы, именами и типами столбцов. | CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)); |
ДЕФОЛТ | Задает значение по умолчанию для указанного столбца, используемое с командами CREATE или ALTER TABLE. | CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE); ALTER TABLE product ALTER is_available SET DEFAULT true; |
УДАЛИТЬ | Удаляет данные из указанной таблицы | DELETE from employee where employee_id = 345; |
DESC | Возвращает данные в конечном порядке de sc , используемом с предложением ORDER BY. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC; |
УДАЛИТЬ КОЛОНКУ | Удаляет указанный столбец из указанной таблицы. | ALTER TABLE employee DROP COLUMN employee_name; |
УДАЛИТЬ БАЗУ ДАННЫХ | Удаляет всю базу | DROP DATABASE movies_development; |
УДАЛИТЬ ПО УМОЛЧАНИЮ | Удаляет значение по умолчанию указанного столбца | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT; |
УДАЛИТЬ ТАБЛИЦУ | Удаляет указанную таблицу | DROP TABLE employee; |
СУЩЕСТВУЮТ | Проверяет, существует ли запись в подзапросе, и возвращает true, если найден один или несколько результатов. | SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR'); |
ИЗ | Указывает таблицу, из которой данные должны быть выбраны или удалены | SELECT * FROM employee; DELETE FROM employee where employee_id = 345; |
ГРУППА ПО | Группирует данные в соответствии с указанным столбцом, используемым для агрегатных функций. | Отображение количества сотрудников в каждой странеSELECT COUNT(employee_id), country from employee GROUP BY country; Показывает средние оценки сотрудников каждого отдела SELECT AVG(rating), department from employee GROUP BY department; |
В | Используется для одновременного выбора нескольких значений в предложении WHERE вместо использования нескольких условий ИЛИ. | SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia'); |
ИНДЕКС | Индекс делает запросы данных более эффективными и быстрыми. Индексы обычно создаются для столбцов, которые чаще всего ищутся. | Создать индекс:CREATE INDEX idx_employee ON employee (first_name, last_name); Создайте уникальный индекс, в котором значения не могут дублироваться: CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name); Удалить индекс: ALTER TABLE employee DROP INDEX idx_employee; |
ВСТАВИТЬ В | Добавить новую строку в таблицу | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
НУЛЕВОЙ | Проверяет нулевые значения | SELECT employee_id from employee where employee_name IS NULL; |
НЕ НУЛЬ | Проверяет значения, которые не являются нулевыми | SELECT employee_id, core_skill from employee where core_skill IS NOT NULL; |
КАК | Возвращает все значения, соответствующие заданному шаблону | SELECT employee_id, first_name, last_name where first_name LIKE '%tony'; |
НЕ КАК | Возвращает все значения, которые не соответствуют заданному шаблону | SELECT employee_id, first_name, last_name where first_name NOT LIKE '%tony'; |
ИЛИ ЖЕ | Возвращает true, если выполняется одно из условий в предложении where. | SELECT * from employee where country = 'India' OR country = 'Australia'; |
СОРТИРОВАТЬ ПО | Упорядочивает результаты в порядке возрастания (по умолчанию) или в порядке, указанном в запросе (окончание по возрастанию или по убыванию ). | SELECT employee_name, salary from employee ORDER BY salary DESC; |
ROWNUM | Возвращает указанное количество строк, упомянутых в предложении WHERE запроса. | SELECT * from employee where ROWNUM <= 5; This will return the first five rows in the resultset. |
ВЫБРАТЬ | Выбирает указанные столбцы таблицы на основе заданных условий. Если указано *, возвращаются все значения столбца. | SELECT employee_id from employee; SELECT * from employee; |
ВЫБЕРИТЕ В | Копирует данные из исходной таблицы в другую целевую таблицу. Вы можете выбрать все столбцы (*) или определенные столбцы. | SELECT * INTO new_employee_info FROM employee; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee; |
ВЫБЕРИТЕ ВЕРХ | Выбирает указанное количество записей из таблицы | SELECT TOP 5 employee_id from employee where employee_rating = 5; |
УСТАНОВЛЕН | Устанавливает значение столбца в новое указанное значение во время операции UPDATE. | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
НЕМНОГО | Возвращает true, если выполняется одно из условий подзапроса. SOME похож на команду ANY. | SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = 'HR'); |
ОБРЕЗАТЬ ТАБЛИЦУ | Удаляет данные из таблицы — помните, что таблица не будет удалена. | TRUNCATE TABLE log_info; |
СОЮЗ | Возвращает различные значения из двух или более объединенных таблиц. Чтобы также получить повторяющиеся значения, используйте UNION ALL. | SELECT city from employee UNION SELECT city from office_locations; |
УНИКАЛЬНЫЙ | Добавляет уникальное ограничение к указанному столбцу, что означает, что в столбце не может быть повторяющихся значений. Может использоваться во время команд создания или изменения таблицы. | CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id)); ALTER TABLE employee ADD UNIQUE(employee_id); |
ОБНОВИТЬ | Обновляет значение указанного столбца новым значением | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
ЦЕННОСТИ | Используется с командой INSERT для добавления новой строки значений в таблицу. | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
КУДА | Добавляет условия для фильтрации набора результатов оператора select. | SELECT * from employee WHERE salary > 20000; |
Агрегатные функции
Агрегатные функции — это команды обработки данных, которые работают с числовыми столбцами, такими как int и float. Они полезны при фильтрации и сортировке данных на самом уровне базы данных. Некоторые часто используемые агрегатные функции:

ФУНКЦИЯ | ОПИСАНИЕ | ПРИМЕР |
СРЕДНИЙ | Возвращает среднее значение указанного столбца | SELECT AVG(marks) from students where subject = 'English'; |
МИН | Возвращает наименьшее значение указанного столбца | SELECT MIN(price) from product WHERE product_category = 'shoes'; |
МАКСИМУМ | Возвращает наибольшее значение указанного столбца | SELECT MAX(quantity), product_name from inventory; |
СЧИТАТЬ | Возвращает количество строк, удовлетворяющих запросу | Показывает общее количество записей в таблице сотрудников.SELECT COUNT(*) from employee; Показать количество сотрудников, чья зарплата больше 20000 SELECT COUNT(*) from employee where salary > 20000; |
СУММА | Возвращает сумму значений указанного числового столбца | SELECT SUM(marks) from students where subject = 'English'; |
SQL-соединения
Соединения SQL очень важны, поскольку они соединяют и фильтруют данные из нескольких таблиц. Соединения немного сложны и могут дать неожиданные результаты, если они не выполняются должным образом. Приведенная ниже таблица поможет вам быстро ознакомиться с 4 типами соединений SQL:
ТИП ПРИСОЕДИНЕНИЯ | ОПИСАНИЕ | СИНТАКСИС | ПРИМЕР |
Внутреннее соединение | Возвращает совпадающие записи в объединенных таблицах; это похоже на перекресток. | ВЫБЕРИТЕ столбец1, столбец2… из таблицы1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ таблица2 в таблице1.столбецN = таблица2.столбецN; | select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id; |
Полное (внешнее) соединение | Возвращает все записи, у которых есть совпадение с любой стороны — слева или справа. Это похоже на союз. | ВЫБЕРИТЕ столбец1, столбец2… из таблицы1 ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ таблица2 в таблице1.столбецN = таблица2.столбецN; | 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; |
Левое соединение | Возвращает все записи из левой таблицы и записи, соответствующие критериям из правой таблицы. | ВЫБЕРИТЕ столбец1, столбец2… из таблицы1 LEFT JOIN table2 on table1.columnN = table2.columnN; | select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id; |
право присоединиться | Возвращает все записи из правой таблицы и записи, соответствующие критериям из левой таблицы. | ВЫБЕРИТЕ столбец1, столбец2… из таблицы1 ПРАВОЕ СОЕДИНЕНИЕ таблица2 в таблице1.столбецN = таблица2.столбецN; | select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id; |
Дополнительные ресурсы
SQL — важный инструмент для разработчиков программного обеспечения, специалистов по данным и аналитиков. Удобный справочник команд SQL в виде шпаргалки может сэкономить вам много времени и помочь вам понять ожидаемый результат каждого ключевого слова.
Для получения дополнительной информации обратитесь к следующим ресурсам:
Учебник по SQL: Памятка по SQL
Intellipaat: Памятка по командам SQL
WebsiteSetup: Памятка по SQL
ProgrammingWithMosh: шпаргалка по SQL
Памятка по PostgreSQL