Перейти к содержанию

SQL шпаргалка

Шпаргалка по SQL

Запрос данных из таблицы

Запрос данных в столбцах c1, c2 из таблицы

SELECT c1, c2 FROM t;

Запросить все строки и столбцы из таблицы

SELECT * FROM t;

Запрашивать данные и фильтровать строки с условием

SELECT c1, c2 FROM t
WHERE condition;

Запросить отдельные строки из таблицы

SELECT DISTINCT c1 FROM t
WHERE condition;

Сортировать набор результатов в порядке возрастания или убывания

SELECT c1, c2 FROM t
ORDER BY c1 ASC [DESC];

Пропустить смещение строк и вернуть следующие n строк

SELECT c1, c2 FROM t
ORDER BY c1
LIMIT n OFFSET offset;

Группировать строки, используя статистическую функцию

SELECT c1, aggregate(c2)
FROM t
GROUP BY c1;

Фильтровать группы с помощью предложения HAVING

SELECT c1, aggregate(c2)
FROM t
GROUP BY c1
HAVING condition;

Запрос из нескольких таблиц

Внутреннее соединение t1 и t2

SELECT c1, c2
FROM t1
INNER JOIN t2 ON condition;

Левое соединение т1 и т1

SELECT c1, c2
FROM t1
LEFT JOIN t2 ON condition;

Правое соединение t1 и t2

SELECT c1, c2
FROM t1
RIGHT JOIN t2 ON condition;

Выполнить полное внешнее соединение

SELECT c1, c2
FROM t1
FULL OUTER JOIN t2 ON condition;

Произведите декартово произведение строк в таблицах

SELECT c1, c2
FROM t1
CROSS JOIN t2;

Еще один способ выполнить кросс-соединение

SELECT c1, c2
FROM t1, t2;

Присоедините t1 к себе, используя предложение INNER JOIN

SELECT c1, c2
FROM t1 A
INNER JOIN t2 B ON condition;

Использование операторов SQL

Объединить строки из двух запросов

SELECT c1, c2 FROM t1
UNION [ALL]
SELECT c1, c2 FROM t2;

Вернуть пересечение двух запросов

SELECT c1, c2 FROM t1
INTERSECT
SELECT c1, c2 FROM t2;

Вычесть набор результатов из другого набора результатов

SELECT c1, c2 FROM t1
MINUS
SELECT c1, c2 FROM t2;

Запросить строки, используя сопоставление с образцом%, _

SELECT c1, c2 FROM t1
WHERE c1 [NOT] LIKE pattern;

Строки запроса в списке

SELECT c1, c2 FROM t
WHERE c1 [NOT] IN value_list;

Строки запроса между двумя значениями

SELECT c1, c2 FROM t
WHERE  c1 BETWEEN low AND high;

Проверьте, являются ли значения в таблице NULL или нет

SELECT c1, c2 FROM t
WHERE  c1 IS [NOT] NULL;

Управляющие таблицы

Создать новую таблицу с тремя столбцами

CREATE TABLE t (
     id INT PRIMARY KEY,
     name VARCHAR NOT NULL,
     price INT DEFAULT 0
);

Удалить таблицу из базы данных

DROP TABLE t ;

Добавить новый столбец в таблицу

ALTER TABLE t ADD column;

Удалить столбец c из таблицы

ALTER TABLE t DROP COLUMN c ;

Добавить ограничение

ALTER TABLE t ADD constraint;

Отбрось ограничение

ALTER TABLE t DROP constraint;

Переименовать таблицу с t1 на t2

ALTER TABLE t1 RENAME TO t2;

Переименуйте столбец c1 в c2

ALTER TABLE t1 RENAME c1 TO c2 ;

Удалить все данные в таблице

TRUNCATE TABLE t;

Использование ограничений SQL

Установите c1 и c2 в качестве первичного ключа

CREATE TABLE t(
    c1 INT, c2 INT, c3 VARCHAR,
    PRIMARY KEY (c1,c2)
);

Установить столбец c2 в качестве внешнего ключа

CREATE TABLE t1(
    c1 INT PRIMARY KEY,
    c2 INT,
    FOREIGN KEY (c2) REFERENCES t2(c2)
);

Сделайте значения в c1 и c2 уникальными

CREATE TABLE t(
    c1 INT, c1 INT,
    UNIQUE(c2,c3)
);

Убедитесь, что c1> 0 и значения в c1> = c2

CREATE TABLE t(
  c1 INT, c2 INT,
  CHECK(c1> 0 AND c1 >= c2)
);

Установить значения в столбце c2 не NULL

CREATE TABLE t(
     c1 INT PRIMARY KEY,
     c2 VARCHAR NOT NULL
);

Изменение данных

Вставьте одну строку в таблицу

INSERT INTO t(column_list)
VALUES(value_list);

Вставить несколько строк в таблицу

INSERT INTO t(column_list)
VALUES (value_list),
       (value_list), ;

Вставьте строки из t2 в t1

INSERT INTO t1(column_list)
SELECT column_list
FROM t2;

Обновить новое значение в столбце c1 для всех строк

UPDATE t
SET c1 = new_value;

Обновите значения в столбце c1, c2, которые соответствуют условию

UPDATE t
SET c1 = new_value,
        c2 = new_value
WHERE condition;

Удалить все данные в таблице

DELETE FROM t;

Удалить подмножество строк в таблице

DELETE FROM t
WHERE condition;

Управление представлениями

Создайте новый вид, который состоит из c1 и c2

CREATE VIEW v(c1,c2)
AS
SELECT c1, c2
FROM t;

Создать новый вид с опцией проверки

CREATE VIEW v(c1,c2)
AS
SELECT c1, c2
FROM t;
WITH [CASCADED | LOCAL] CHECK OPTION;

Создать рекурсивное представление

CREATE RECURSIVE VIEW v
AS
select-statement -- anchor part
UNION [ALL]
select-statement; -- recursive part

Создать временный вид

CREATE TEMPORARY VIEW v
AS
SELECT c1, c2
FROM t;

Удалить вид

DROP VIEW view_name;

Управление индексами

Создайте индекс на c1 и c2 таблицы t

CREATE INDEX idx_name
ON t(c1,c2);

Создайте уникальный индекс на c3, c4 таблицы t

CREATE UNIQUE INDEX idx_name
ON t(c3,c4)

Удалить индекс

DROP INDEX idx_name;

Управление триггерами

Создать или изменить триггер

CREATE OR MODIFY TRIGGER trigger_name
WHEN EVENT
ON table_name TRIGGER_TYPE
EXECUTE stored_procedure;

WHEN

BEFORE - вызывать до наступления события AFTER - вызывать после наступления события

EVENT

INSERT - вызывать для INSERT

UPDATE - вызвать для ОБНОВЛЕНИЯ

DELETE - вызывать для DELETE

TRIGGER_TYPE

FOR EACH ROW - ДЛЯ КАЖДОГО РЯДА

FOR EACH STATEMENT - ЗА КАЖДУЮ ЗАЯВЛЕНИЕ

Создать триггер

CREATE TRIGGER before_insert_person
BEFORE INSERT
ON person FOR EACH ROW
EXECUTE stored_procedure;

Удалить определенный триггер

DROP TRIGGER trigger_name;

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

AVG - вычисляет среднее арифметическое набора значений
COUNT - подсчитывает количество записей
SUM - возвращает сумму набора значений
MAX - возвращающая максимальное значение
MIN - возвращающая минимальное значение