Окончательная шпаргалка по SQL для закладки на потом [2022]

Опубликовано: 2022-06-17

SQL, или язык структурированных запросов , представляет собой набор команд для управления операциями реляционной базы данных, такими как удаление, создание, обновление, чтение и т. д.

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;
Памятка по командам SQL для быстрого ознакомления

Агрегатные функции

Агрегатные функции — это команды обработки данных, которые работают с числовыми столбцами, такими как 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