
- •Введение
- •Прочие команды
- •Структура базы данных
- •Ключи, ограничения
- •Индексы
- •Представления
- •Процедуры и функции
- •Триггеры
- •Пользователи и сессии
- •Инструментарий скачать субд
- •Инсталляция
- •Выполнение запросов
- •Использование примеров
- •Комментарий
- •Идентификаторы
- •Обзор типов данных
- •Интервал времени
- •Литералы
- •Выражения и операции
- •Строковые операции
- •Алгебраические операции
- •Операции отношения
- •Логические операции и предикаты
- •Условные выражения
- •Прочие операции
- •Обзор функций
- •Математические функции
- •Строковые функции
- •Работа с датами
- •Преобразование типов
- •Функции Oracle
- •Функции PostgreSql
- •Функции MySql
- •Создание таблицы
- •Значения полей по умолчанию
- •Ключи и ограничения
- •Настройка внешнего ключа
- •Создание по выборке
- •Дополнительные параметры таблицы
- •Изменение, удаление таблицы
- •Переименование таблицы или ее столбца
- •Добавление/удаление столбца
- •Первичный ключ
- •Уникальный ключ
- •Внешний ключ
- •Безошибочное удаление таблиц
- •Добавление записей
- •Значения по умолчанию
- •Подзапросы
- •Вставка по условию
- •Обновление записей
- •Обновление подзапросом
- •Обновление по данным другой таблицы
- •Удаление записей
- •Выборка записей
- •Выборка констант
- •Выборка по столбцам таблиц
- •Синонимы (алиасы)
- •Уникальные записи
- •Выборка по условию
- •Выборка по группам
- •Соединения
- •Агрегатные функции, группировка данных
- •Операции над выборками
- •Добавление итогов
- •Нумерация записей
- •Обеспечение уникальности первичного ключа
- •Столбцы с автоинкрементом
- •Индексы
- •Представления
- •Динамический sql (dsql)
- •Процедурные операторы блоковая структура кода
- •Присвоение
- •Условный оператор
- •Оператор выбора
- •Безусловный цикл
- •Цикл с предусловием
- •Цикл по счетчику
- •Цикл по элементам
- •Операторы выхода/продолжения итерации
- •Выборка в переменные
- •Хранимые процедуры
- •Вызов процедур
- •Исключения
- •Курсоры
- •Триггеры
- •Числа прописью
- •Транзакции, конкурирующие запросы
- •Управление аккаунтами пользователи
- •Права доступа
- •Права доступа MySql
- •Права доступа PostgreSql
- •Права доступа Oracle
- •Удаление прав доступа
- •Роли PostgreSql
- •Роли Oracle
- •Роли MySql
- •Файловый вывод/ввод
- •Информация о базе данных
Литералы
Литералы служат для непосредственного представления данных, ниже приведен список стандартных литерал:
целочисленные - 0, -34, 45;
вещественные - 0.0, -3.14, 3.23e-23;
строковые - 'текст', n'текст', 'don''t!';
дата - DATE '2008-01-10';
время - TIME '15:12:56';
временная отметка - TIMESTAMP '2008-02-14 13:32:02';
логический тип - true, false;
пустое значение - null.
Двойной апостроф интерпретируется в строковой литерале как апостроф в тексте.
В MySQL для временных литерал строка должна быть заключена в скобки: DATE ('2008-01-10').
Формат даты по умолчанию обычно определяется настройкой БД. Продвинутые СУБД могут автоматически определять некоторые форматы (DATE ('2008.01.10')) или как в Oracle имеют функцию преобразования (to_date('01.02.2003','dd.mm.yyyy')). Для упрощения во многих СУБД там, где подразумевается дата, перед строкой необязательно ставить имя типа.
Выражения и операции
Для построения выражений SQL включает стандартные операции, ряд дополнительных предикатов (булевских конструкций) и функций. В MySQL для встроенных функций между именем и открывающей скобкой не должно быть пробелов, иначе будет сообщение об отсутствии подобной функции в БД. Oracle не поддерживает логические выражения в перечислении select.
Строковые операции
|| - соединение строк, в некоторых СУБД операнды автоматически преобразуются в строковый тип. В MS Access используется &.
select 'hello'||' world'
select 'hello'||' world' from dual -- для Oracle
Алгебраические операции
+ - сложение;
- - вычитание;
* - умножение;
/ - деление;
mod - остаток от деления. Oracle: mod(6,2). MySql: 6 mod 2.
Операции + и - также используются при работе со временем и интервалами. В Oracle и PostgreSQL возможна разница между датами. Результат возвращается в виде интервала в днях. Ниже приведен пример добавления к дате интервала.
-- для PostgreSQL
select date '2009-01-01'+INTERVAL '3 7:07:05'
-- для Oracle
select date '2009-01-01' +
INTERVAL '3 7:07:05' day to second
from dual;
-- для MySQL
select date '2009-01-01'+
INTERVAL '3 7:07:05' day_second
Ко времени можно прибавлять целое число, но результат зависит от конкретной СУБД.
-- для Oracle, 1 интерпретируется как день
select date '2009-01-01'+1 from dual
-- для PostgreSQL, 1 интерпретируется как день
select date '2009-01-01'+1
-- для MySQL, 1 интерпретируется как год
select date '2009-01-01'+1
Операции отношения
< - меньше;
<= - меньше либо равно;
> - больше;
>= - больше либо равно;
= - равно;
<>,!= - не равно;
Логические операции и предикаты
and - логическое и;
or - логическое или;
nor - отрицание;
between - определяет, находится ли значение в указанном диапазоне: выражение BETWEEN значение_с AND значение_по
exists - определяет есть ли в указанной выборке хотя бы одна запись EXISTS (select ...) Для скорости в подзапросе обычно выбирают константу, а не поля записей, так как в данном случае нам важны не данные, а факт существования записей;
in - определяет, входит ли указанное значение в указанное множество: выражение IN (значение1,...,значениеn) В качестве множества значений может служить корректная выборка выражение IN (select ...)
is null - является ли указанное выражение NULL значением: выражение IS NULL
like - определяет, удовлетворяет ли строка указанному шаблону: строковое_выражение LIKE шаблон [ESCAPE еск_символ] Знак % в шаблоне интерпретируется как строка любой длины, знак _ как любой символ. В конструкции ESCAPE еск_символ указывается символ ESCAPE последовательности, который отменит обычную интерпретацию символов '_' и '%'. В последних стандартах включены предикаты SIMILAR и LIKE_REGEX расширяющие возможности LIKE, используя в качестве шаблона регулярные выражения.