
- •Введение
- •Прочие команды
- •Структура базы данных
- •Ключи, ограничения
- •Индексы
- •Представления
- •Процедуры и функции
- •Триггеры
- •Пользователи и сессии
- •Инструментарий скачать субд
- •Инсталляция
- •Выполнение запросов
- •Использование примеров
- •Комментарий
- •Идентификаторы
- •Обзор типов данных
- •Интервал времени
- •Литералы
- •Выражения и операции
- •Строковые операции
- •Алгебраические операции
- •Операции отношения
- •Логические операции и предикаты
- •Условные выражения
- •Прочие операции
- •Обзор функций
- •Математические функции
- •Строковые функции
- •Работа с датами
- •Преобразование типов
- •Функции Oracle
- •Функции PostgreSql
- •Функции MySql
- •Создание таблицы
- •Значения полей по умолчанию
- •Ключи и ограничения
- •Настройка внешнего ключа
- •Создание по выборке
- •Дополнительные параметры таблицы
- •Изменение, удаление таблицы
- •Переименование таблицы или ее столбца
- •Добавление/удаление столбца
- •Первичный ключ
- •Уникальный ключ
- •Внешний ключ
- •Безошибочное удаление таблиц
- •Добавление записей
- •Значения по умолчанию
- •Подзапросы
- •Вставка по условию
- •Обновление записей
- •Обновление подзапросом
- •Обновление по данным другой таблицы
- •Удаление записей
- •Выборка записей
- •Выборка констант
- •Выборка по столбцам таблиц
- •Синонимы (алиасы)
- •Уникальные записи
- •Выборка по условию
- •Выборка по группам
- •Соединения
- •Агрегатные функции, группировка данных
- •Операции над выборками
- •Добавление итогов
- •Нумерация записей
- •Обеспечение уникальности первичного ключа
- •Столбцы с автоинкрементом
- •Индексы
- •Представления
- •Динамический sql (dsql)
- •Процедурные операторы блоковая структура кода
- •Присвоение
- •Условный оператор
- •Оператор выбора
- •Безусловный цикл
- •Цикл с предусловием
- •Цикл по счетчику
- •Цикл по элементам
- •Операторы выхода/продолжения итерации
- •Выборка в переменные
- •Хранимые процедуры
- •Вызов процедур
- •Исключения
- •Курсоры
- •Триггеры
- •Числа прописью
- •Транзакции, конкурирующие запросы
- •Управление аккаунтами пользователи
- •Права доступа
- •Права доступа MySql
- •Права доступа PostgreSql
- •Права доступа Oracle
- •Удаление прав доступа
- •Роли PostgreSql
- •Роли Oracle
- •Роли MySql
- •Файловый вывод/ввод
- •Информация о базе данных
Удаление записей
Для удаления записей из таблицы служит команда DELETE FROM. В конструкции WHERE указывается условие, по которому отбираются удаляемые записи.
-- удалить определенные записи (четные)
DELETE FROM tblname
WHERE id%2 = 0; -- для Oracle: WHERE mod(id,2)=0;
-- удаление всех записей таблицы
DELETE FROM tblname;
Выборка записей
Выбор данных выполняется командой SELECT. Ниже приведен примерный список используемых ею конструкций и ключевых слов, полный же список зависит от реализации СУБД:
AS - определяет временный синоним источника данных или столбца;
FROM - указывает источники данных как таблицы, представления, другие выборки. По необходимости здесь можно указать соединение источников - каким образом запись одного источника сопоставляется с записью другого;
WHERE - позволяет указать условия по которым нужно производить отбор данных. Если хоть одно из перечисленных условий не выполняется, запись не попадает в выборку. Здесь также можно указать соединение источников;
ORDER BY - позволяет отсортировать выборку по указанным полям;
ASC, DESC - задают направление сортировки;
GROUP BY - позволяет разбить выборку на группы по указанному полю. Все записи, имеющие одно и то же значение в указанном поле, будут принадлежать одной группе;
HAVING - позволяет задать условие включения группы в выборку. Набор возможных условий как у WHERE плюс возможность использования агрегатных функций;
FOR UPDATE - позволяет заблокировать выбранные данные для изменения;
DISTINCT - позволяет включить в выборку только уникальные записи. Конечно это замедляет запрос, но бывает необходимо при использовании агрегатных функций.
Это наверно самая сложная команда, поэтому ее изучение лучше разбить на несколько частей. Здесь рассмотрим эту команду в общем, а соединения, группировку данных и подобное более детально чуть позже. Пусть имеется следующая таблица с указанными данными.
-- создание таблицы
create table tblname (
id integer,
num double precision,
constraint pk_tblname primary key (id)
);
-- вставка данных
insert into tblname values(1,2.0);
insert into tblname values(2,3.3);
insert into tblname values(3,6.6);
insert into tblname values(4,2.0);
insert into tblname values(5,3.3);
insert into tblname values(6,6.6);
commit;
Выборка констант
Для выбора констант может указываться любой источник. Однако, если мы хотим просто подсчитать значение какого-то выражения, то указывать источник имеющий сотню тысяч записей затратно по ресурсам. Поэтому многие СУБД позволяют выбрать константы без указания источника. Oracle не поддерживает синтаксис SELECT без FROM, а для выбора констант используется специальная системная таблица dual.
-- вычисляем три простых выражения
SELECT 2+2, 2*2 , 2/2;
SELECT 2+2, 2*2 , 2/2 FROM dual; -- для Oracle
-- в выборке будет 6 одинаковых записей
SELECT 2+2, 2*2 , 2/2 FROM tblname;
Выборка по столбцам таблиц
Если источники данных указаны, то кроме констант можно выбирать столбцы или строить выражения с их использованием. Столбец определяется как имя_источника.имя_столбца. Если источник данных один, то его имя можно опустить. Для выбора всех столбцов всех источников используется символ *. Аналогично можно выбрать все столбцы указанного источника: имя_источника.*. Ниже приведен пример выборки всех записей нашей таблицы.
-- перечисляем столбцы
SELECT tblname.id, tblname.num FROM tblname;
SELECT tblname.num FROM tblname;
SELECT tblname.num*2 FROM tblname;
-- все столбцы указанного источника
SELECT tblname.* FROM tblname;
-- все столбцы всех источников
SELECT * FROM tblname;