Оператор выборки данных из БД
SELECT [ALL | DISTINCT]
[<название таблицы>.]<поле>,
...
[FROM <таблица> [AS <псевдоним>][,] ]
[WHERE <условие>]
[[GROUP BY <название поля>] [HAVING <условие>]]
[ORDER BY <название поля> [COLLATE BINARY | NOCASE] [ASC | DESC][, ...]]
[LIMIT <ограничение>]
SELECT * FROM table
SELECT table1.name, table2.name
FROM table1, table2
WHERE table1.num = table2.num
ALL - в результат попадут все значения
DISTINCT - в результат попадут уникальные значения
GROUP BY - позволяет сгруппировать несколько записей, полезна при использовании function_aggregate
HAVING - фильтрует уже сгруппированные данные по условию
ORDER BY - сортировка выбранных значений
ASC - по возрастанию
DESC - по убыванию
LIMIT - огрничивает количество записей в выборке
LIMIT <количесвто записей>
LIMIT <начальная позиция>, <количесвто записей>
LIMIT <количесвто записей> OFFSET <начальная позиция>
SELECT 10=10, 5=10;
# 1 | 0
SELECT
*
FROM table1
WHERE id = ANY(
SELECT
id
FROM table2)
условное выражение
CASE выражение
WHEN выражение
THEN выражение
ELSE выражение
END
SELECT
CASE sname
WHEN 'Peel'
THEN 'Peal'
END
FROM table;
SELECT
CASE sname
WHEN 'Peel'
THEN 'Peal'
ELSE sname
END
FROM table;
-- использование предиката
SELECT
CASE
WHEN sname 'Peel'
THEN 'Peal'
ELSE sname
END
FROM table;
оператор преобразования одного типа в другой
SELECT CAST(onum AS CHAR) FROM table
принимает значения, выводится первое не NULL
COALESCE (выражение, ....)
SELECT
COALESCE(snum, cnum) num
, COALESCE("null_row", 0) amount
FROM table
-- 5, 0
Оператор указывает, выбрать только уникальные записи
SELECT DISTINCT
<столбцы>
FROM <таблица>;
Оператор устанавливает символ, которые будет экранировать символы
SELECT
<столбцы>
FROM
<таблица>
WHERE
<условие>
ESCAPE
<escape>;
SELECT
*
FROM
table
WHERE
name LIKE 'G\_00_'
-- вернет G_002, _ - экранируется
ESCAPE
'\';
Объединяет запросы по разности
SELECT
*
FROM table1
EXCEPT
SELECT
*
FROM table2
принимает подзапрос в качетсве аргумента, и выдает TRUE при наличии в подзапросе выходных данных, иначе FALSE
SELECT
*
FROM table1
WHERE EXISTS (
SELECT
*
FROM table1
WHERE id = 1)
полное внешнее соединение, записи левой и правой таблицы, в которых не было найдено совпадений, столбцы из правой и левой таблицы заполняются NULL.
SELECT
*
FROM table1
FULL OUTER JOIN table2
ON table1.table2_id = table2.id
группировка результата по колонкам
сортировка результата по какому то условию
внутреннее соединение, несовпадающие строки обеих таблиц исключаются
SELECT table2.title, table1.description
FROM table1
INNER JOIN table1
ON table2.table1_id = table1.table1_id
Объединяет запросы по общему значению, т.е. находит пересечение строк запросов
SELECT
*
FROM table1
INTERSECT
SELECT
*
FROM table2
левое внешнее соединение, записи левой таблицы, в которых не было найдено совпадений, столбцы из правой таблицы заполняются NULL.
SELECT
*
FROM
table1
LEFT OUTER JOIN table 2
ON
table1.table2_id = table2.id
принимает два аргумента, если совпдают будет NULL, иначе одно из двух значений
SELECT
NULLIF(snum, 1001)
FROM
table
Оператор упорядочивания
SELECT
<столбцы>
FROM
<таблица>
ORDER BY
<столбцы> ASC|DESC;
ASC - сортировка по убыванию
DESC - сортировка по возрастанию
SELECT
*
FROM
table
WHERE
id in (1, 2, 3);
SELECT
*
FROM
table
WHERE
id BETWEEN 1 AND 3;
SELECT
*
FROM
table
WHERE
--name заканчивается на G
name LIKE 'G%';
SELECT
*
FROM
table
WHERE
-- вернет bat, bit ..., '_' - любой 1 символ
name LIKE 'b_t';
правое внешнее соединение, записи правой таблицы, в которых не было найдено совпадений, столбцы из левой таблицы заполняются NULL.
SELECT
*
FROM table1
RIGHT OUTER JOIN table2
ON table1.table2_id = table2.id
оператор объединения запросов, выводит данные запроса последовательно, исключая дублирующиеся записи
SELECT
*
FROM table1
UNION
SELECT
*
FROM table2
Результатом соединение двух таблиц А и Б будут строки со всеми столбцами из таблицы А, дополненные столбцами из таблицы Б с NULL значениями. Затем будут выведены аналогично из таблицы Б.
SELECT
*
FROM table1
UNION
SELECT
*
FROM table2
Предикат, оператор условия, отбирает записи по каким либо условиям
=, >, <, >=, <=, <>, and, or, not, NULL
SELECT
<столбцы>
FROM
<таблица>
WHERE
<условие>;
SELECT
table1.name as name1
, table2.name as name2
FROM
table1, table2
WHERE
table1.name = table.name;
-- подзапрос
SELECT
*
FROM
table1
WHERE
id = (
SELECT
id
FROM
table2
);
DAY() |
Извлекает день месяца из даты. |
MONTH(МЕСЯЦ) |
|
YEAR(ГОД) |
|
HOUR(ЧАСЫ) |
|
SECOND(СЕКУНДЫ) |
|
WEEKDAY() |
Извлекает день недели из даты. |
ABX(x) |
|
CEIL(x) |
|
FLOOR(x) |
|
GRATEST(x,y) |
большее |
LEAST(x,y) |
меньшее |
MOD(x, y) |
остаток от определения |
POWER(x, y) |
степень |
ROUND(x,y) |
|
SING(X) |
Возвращает минус если X < 0, или плюс если X > 0. |
SQRT (X) |
Возвращает квадратный корень из X. |
LEFT(,X) |
Возвращает крайние левые(старшие) символы X из строки. |
RICHT(,X) |
Возвращает символы X младшего разряда из строки |
ASCII() |
Возвращает код ASCII которым представляется строка в памяти компьютера. |
CHR() |
Возвращает принтерные символы кода ASCII. |
VALUE() |
Возвращает математическое значение для строки. Считается что строка имеет тип CHAR или VARCHAR, но состоит из чисел. |
VALUE(‘3’) |
произведет число 3 типа INTEGER. |
UPPER() |
Преобразует все символы строки в символы верхнего регистра. |
LOWER() |
Преобразует все символы строки в символы нижнего регистра. |
INlTCAP() |
Преобразует символы строки в заглавные буквы. В некоторых реализациях может иметь название - PROPER. |
LENGTH() |
Возвращает число символов в строке. |
|| |
Объединяет две строки в выводе, так чтобы после первой немедленно следовала вторая. (значек || называется оператором сцепления). |
LPAD(,X,’*’) |
Дополняет строку слева звездочками ‘*’, или любым другим указанным символом, с колличестве, определяемом X. |
RPAD(,X, “) |
То же самое что и LPAD, за исключением того, что дополнение делается справа. |
SUBSTR(,X,Y) |
Извлекает Y символ |
ISNULL(x, y) |
x - столбец, y - значение. проверяет столбец на наличие NULL, и если NULL то вернет указанное значение |