Курс по SQL. Представления / view в SQL на примеры базы данных SQLite (хранимый запрос)
Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-m…
Текстовая версия: http://zametkinapolyah.ru/zametki-o-mysql/tema-14-view-v-sql-na-primere-bazy-dannyx-sqlite-create-drop-update.html
Паблик блога в ВК: https://vk.com/zametkinapolyah
Тематическая группа в ВК: https://vk.com/zametki_bd
Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223
Прежде чем переходить к работе с VIEW (представлением, вьюхой, просмотром), давайте разберемся что же такое VIEW в SQL и наших базах данных и чего в ней такого хорошего, почему рзаработчики баз данных любят их использовать?
На мой взгляд в Вики определение VIEW не совсем корректное, поскольку VIEW – это не виртуальная таблица. Автор Вики взял эту информацию из документации MySQL (в ней в одном единственном месте написано:A view acts as a virtual table), в документациях других СУБД и в стандартах SQL слова VIEW и VIRTUAL TABLE в принципе близко не стоят (во всяком случае при беглом просмотре), кстати, многие сайты транслируют информацию о том, что представление в базе данных – это виртуальная таблица.
К тому же, в базах данных SQLite есть специальные команды для создания виртуальных таблиц, но об этом позже. Мы разобрались с тем, чем VIEW не является.
Давайте посмотрим на то, чем VIEW все-таки является. На самом деле, VIEW – это хранимый запрос в базе данных с именем. VIEW – это такой же объект базы данных, как и таблица, у представления должно быть уникальное имя во всей БД, но хранится VIEW в базе данных в виде SQL запроса.
Когда мы создали представление, мы можем работать с ним как с обычной таблицей, многие СУБД позволяют модифицировать и изменять данные VIEW, а вот SQLite дает возможность только просматривать содержимое VIEW (хотя эта проблема решается при помощи триггеров).
Но, например, в базах данных MySQL, вы не сможете использовать команды UPDATE, INSERT, DELETE, если SQL запрос создающий VIEW содержит:
1. Функции агрегации.
2. Ключевое слово LIMIT.
3. Клаузулу GROUP BY, позволяющую сделать группировку данных.
4. Клаузула HAVING, фильтрующая данные после группировки.
5. Операторы UNION и UNION ALL, объединяющие результаты двух запросов.
6. Любой подзапрос SELECT, даже подзапрос JOIN, объединяющий две таблицы.
7. Если запрос содержит пользовательские переменные.
8. Если нет базовой таблицы.
9. Поэтому рекомендую вам сперва ознакомиться с документацией той или иной СУБД, прежде чем начать создавать представления в базе данных.
Последние сообщения
127 полезных и бесплатных онлайн академий
23.04.2019
Ресурсы для objective-C программистов
21.03.2018