
- •Sql на практике введение
- •1. История развития языка sql
- •Sql в коммерческих реализациях
- •Стандартизация sql
- •Международный стандарт 1989 г.
- •Международный стандарт 1992 г. (sql2)
- •Стандарт sql:1999 (sql3)
- •Стандарт sql:2003
- •2. Sql в примерах
- •I. Простые запросы на языке sql
- •Примеры
- •II. Использование функций
- •1. Агрегатные функции
- •2. Строковые функции
- •III. Запросы, использующие соединения
- •IV. Группирование
- •V. Построение внешнего соединения и представления
- •VI. Подзапросы
- •Некоррелированные подзапросы
- •Коррелированный подзапросы
- •VIII. Обьеденение
- •IX. Оператора манипулирования данными. Удаление данных
- •X. Оператора манипулирования данными. Вставка данных
- •XI. Операторы манипулирования данными. Обновление данных
- •3. Практические советы
- •1. Хорошо знайте свои данные и бизнес-приложение
- •2. Тестируйте свои запросы на реалистических данных
- •3. Внимательно относитесь к использованию индексов на таблицах
- •4. Для фильтрации записей используйте where, а не having.
- •5. Минимизируйте число просмотров таблиц
- •6. Избыточность полезна
- •7. Где возможно, избегайте использования соединений
- •8. Если это неизбежно, соединяйте таблицы в правильном порядке
- •9. Старайтесь писать как можно более простые и «тупые» операторы sql
Sql на практике введение
Большинство современных СУБД построено на реляционной модели данных. Для получения информации из отношений (таблиц) базы данных в качестве языка манипулирования данными в теоретическом плане используются абстрактных язык реляционной алгебры.
В качестве практического языка работы с данными в середине 70-х годов фирмой IBM разработан язык структурных запросов SQL, ставший впоследствии стандартом de-facto при работе с базами данных. Не смотря на то, SQL часто подвергается суровой критике за недостаточное соответствие реляционным принципам, его изучение является актуальным как в практическом плане, так и чисто в теоретическом.
1. История развития языка sql
Работа над созданием языка была начата сразу после появления статью Э.Кодда в 1970г. в лабораториях компании IBM для проверки возможностей реляционной модели.
СУБД System R - экспериментальная исследовательская система с языком SEQUEL (позже SQL), созданная IBM:
Полный реляционный язык БД
Операторы манипулирования БД
Средства определения и манипулирования схемой БД
Определение ограничений целостности
Определение представлений
Определение индексов
Авторизация доступа к отношениям и их полям
Точки сохранения транзакций и откаты
Sql в коммерческих реализациях
1979 - Oracle (Relation Software Inc.- Oracle corp.;
1981-1982 - DB2 (IBM), Ingres - CA-OpenIngres (Relation Technology Inc. - Computer Associates)
1984 - Informix (Informix Sofrware);
1986 - Sybase (Sybase Corp.)
Реализован во всех коммерческих реляционных СУБД
Все фирмы провозглашают соответствие стандарту SQL
Реализованные диалекты очень близки
Путь "сверху вниз" - уточнение и упрощение SQL System R
Путь "снизу вверх" - от диалектов реализации различных фирм (наращивание возможностей, обычное отсутствие полного описания языка)
Стандартизация sql
Все фирмы провозглашают соответствие стандарту SQL
Реализованные диалекты очень близки
Деятельность началась одновременно с появлением первых коммерческих реализаций
В качестве стандарта нельзя было использовать SQL System R(не было технической проработки, слишком сложно реализовать)
Нельзя было принять за стандарт коммерческий диалект (слишком различались)
Международный стандарт 1989 г.
Во многих частях имеет чрезвычайно общий характер и допускает очень широкое толкование
Отсутствуют важные разделы (манипулирование схемой БД, динамический SQL, многое определяется в реализации)
Наибольшие достижения (стандартизация синтаксиса и семантики операторов выборки и манипулирования данными, фиксация средств ограничений целостности БД: определение первичного и внешнего ключей отношений, проверочные ограничения целостности)
Международный стандарт 1992 г. (sql2)
Расширено манипулирование таблицами (Alter table, Drop table)
Манипулирование схемой БД (Users, Tables, Views, Columns, Domains, Table_priveleges, Table_constraints, , , )
Возможность управления доменами (Create domain имя char(25) . . .и при определении имен столбцов эти имена определяются через имена доменов)
Новые типы данных (Date, Time, Datetime, . . .) и новые функции
Управление транзакциями и сессиями (сессия - последовательность транзакций, в пределах которой сохраняются временные отношения)
Подключение к БД
Развитие динамического SQL
В 1995 г. стандарт был дополнен спецификацией интерфейса уровня вызова (Call-Level Interface - SQL/CLI). SQL/CLI представляет собой набор спецификаций интерфейсов процедур, вызовы которых позволяют выполнять динамически задаваемые операторы SQL. По сути дела, SQL/CLI представляет собой альтернативу динамическому SQL и послужил основой для создания повсеместно распространенных сегодня интерфейсов ODBC (Open Database Connectivity) и JDBC (Java Database Connectivity).
В 1996 г. к стандарту SQL/92 был добавлен еще один компонент - SQL/PSM (Persistent Stored Modules). Основная цель этой спецификации состоит в том, чтобы стандартизировать способы определения и использования хранимых процедур, т. е. специальным образом оформленных программ, включающих операторы SQL, которые сохраняются в базе данных, могут вызываться приложениями и выполняются внутри СУБД.