
- •Введение
- •Прочие команды
- •Структура базы данных
- •Ключи, ограничения
- •Индексы
- •Представления
- •Процедуры и функции
- •Триггеры
- •Пользователи и сессии
- •Инструментарий скачать субд
- •Инсталляция
- •Выполнение запросов
- •Использование примеров
- •Комментарий
- •Идентификаторы
- •Обзор типов данных
- •Интервал времени
- •Литералы
- •Выражения и операции
- •Строковые операции
- •Алгебраические операции
- •Операции отношения
- •Логические операции и предикаты
- •Условные выражения
- •Прочие операции
- •Обзор функций
- •Математические функции
- •Строковые функции
- •Работа с датами
- •Преобразование типов
- •Функции Oracle
- •Функции PostgreSql
- •Функции MySql
- •Создание таблицы
- •Значения полей по умолчанию
- •Ключи и ограничения
- •Настройка внешнего ключа
- •Создание по выборке
- •Дополнительные параметры таблицы
- •Изменение, удаление таблицы
- •Переименование таблицы или ее столбца
- •Добавление/удаление столбца
- •Первичный ключ
- •Уникальный ключ
- •Внешний ключ
- •Безошибочное удаление таблиц
- •Добавление записей
- •Значения по умолчанию
- •Подзапросы
- •Вставка по условию
- •Обновление записей
- •Обновление подзапросом
- •Обновление по данным другой таблицы
- •Удаление записей
- •Выборка записей
- •Выборка констант
- •Выборка по столбцам таблиц
- •Синонимы (алиасы)
- •Уникальные записи
- •Выборка по условию
- •Выборка по группам
- •Соединения
- •Агрегатные функции, группировка данных
- •Операции над выборками
- •Добавление итогов
- •Нумерация записей
- •Обеспечение уникальности первичного ключа
- •Столбцы с автоинкрементом
- •Индексы
- •Представления
- •Динамический sql (dsql)
- •Процедурные операторы блоковая структура кода
- •Присвоение
- •Условный оператор
- •Оператор выбора
- •Безусловный цикл
- •Цикл с предусловием
- •Цикл по счетчику
- •Цикл по элементам
- •Операторы выхода/продолжения итерации
- •Выборка в переменные
- •Хранимые процедуры
- •Вызов процедур
- •Исключения
- •Курсоры
- •Триггеры
- •Числа прописью
- •Транзакции, конкурирующие запросы
- •Управление аккаунтами пользователи
- •Права доступа
- •Права доступа MySql
- •Права доступа PostgreSql
- •Права доступа Oracle
- •Удаление прав доступа
- •Роли PostgreSql
- •Роли Oracle
- •Роли MySql
- •Файловый вывод/ввод
- •Информация о базе данных
Функции PostgreSql
to_char(timestamp, format) - время в строку;
to_char(interval, format) - интервал времени в строку;
to_char(number, format) - число в строку;
to_date(str, format) - строку в дату;
to_number(str, format) - строку в число;
to_timestamp(str, format) - строку во время.
Основные элементы форматирования совпадают с Oracle.
Функции MySql
date_format(date,format) - дату в строку;
time_format(time,format) - время в строку;
format(number,precision) - число в cтроку типа '#,###,###.##', где число знаков определяется вторым аргументом.
Ниже приведен список основных элементов форматирования для даты и времени:
%c - месяц числом;
%d - день месяца;
%H - часы (от 0 до 24);
%h - часы (1 до 12);
%i - минуты;
%s - секунды;
%T - время в формате "hh:mm:ss";
%Y - год, четыре цифры;
%y - год, две цифры.
< /ul>
select date_format(date '2010-02-01',
'%c месяца %d дней %Y год') as c
Создание таблицы
Для создания простой таблицы используется команда CREATE TABLE. Ниже приведен пример для Oracle, для других тип number надо заменить на integer или double.
CREATE TABLE tblname (
id number,
num number, -- число
-- фиксированная строка
fstr char(45),
-- строка с переменным размером, но не больше 45
str varchar(45),
birth date -- дата
);
Значения полей по умолчанию
После типа столбца можно задать дополнительные свойства столбца как значение по умолчанию и указать, возможно ли значение null. Для одних БД порядок принципиален (Oracle) для других нет (MySQL).
CREATE TABLE tblname (
id number,
num number DEFAULT 3.14 NOT NULL,
fstr char(45),
str varchar(45),
birth date
);
Ключи и ограничения
Обычно после перечисления столбцов в определении таблицы указывают дополнительные ограничения, например, ключи. Естественно, таблица, на которую ссылается внешний ключ должна существовать, а тип внешнего ключа должен совпадать с типом столбца на который ссылается. Например, для MySQL, если столбец внешнего ключа был определен как fk_key1 INTEGER, а первичный ключ таблицы tb как id INTEGER UNSIGNED, то таблица просто не будет создана. В некоторых базах ограничения можно задавать как свойство столбца, но на мой взгляд слишком длинно получается.
-- правильно для большинства реализаций SQL
CREATE TABLE tblname (
id integer,
fstr char(45),
str varchar(45),
-- в MySQL precision можно опустить
num double precision,
birth date,
fk_key1 integer,
-- столбец id используем в качестве первичного ключа
CONSTRAINT pk_tblname PRIMARY KEY (id),
-- уникальный ключ, т.е. значения в столбце fstr
-- будут уникальны
CONSTRAINT uk_tblname1 UNIQUE (fstr),
-- ограничение на значение
CONSTRAINT tblname_numcheck CHECK (num<100.34),
-- внешний ключ, в скобка столбец нашей таблицы
-- tb таблица, id столбец на которые ссылается
-- внешний ключ
CONSTRAINT fk_tblname FOREIGN KEY (fk_key1)
REFERENCES tb(id)
);
-- именовать ограничения не обязательно
-- в этом случае СУБД сгенерирует имена сама
CREATE TABLE tblname (
id integer,
fstr char(45),
str varchar(45),
num double,
birth date,
fk_key1 integer,
PRIMARY KEY (id),
UNIQUE (fstr),
CHECK (num<100.34),
FOREIGN KEY (fk_key1)
REFERENCES tb(id)
);