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 - возвращающая минимальное значение