SQL

Итак, мы создали модель данных. Что делать дальше? Взаимодействовать с этими данным. Для этого взаимодействия существует инструмент под названием SQL (Structured Query Language) - язык программирования, применяемый для создания, модификации и управления данными в РБД.

В 1970 - 1980-х годах компании и личности разрабатывали различные версии языков для управления РБД, которые к тому времени были уже сильно популярны. В связи с этим было принято решение разработать стандарт языка, чтобы унифицировать работу с СУБД. В 1986 году была принята первая версия стандарта языка ANSI SQL. Одной из самых значительных версий является версия SQL-92. Самая свежая версия стандарта - SQL:2008. Большинство СУБД в большей либо меньшей степени поддерживают данный стандарт.

Заметки на полях

В некоторой литературе встречается информация о том, что стандартизация позволяет добиться переносимости данных с одной СУБД на другую. Это не совсем верно (скорее даже "совсем не верно"). Это связано с тем, что каждая СУБД в итоге имеет свои особенности, перенос которых проходит через боль и страдание. Да и если вас посещает мысль о смене СУБД - это тревожный сигнал. Поэтому лучше уделить больше времени выбору инструментария на этапе проектирования.


Важной концептуальной особенностью языка SQL является его декларативность - мы не говорим, как делать (как обрабатывать, как перебирать; не указываем на то, где эти данные хранятся - какие файлы открывать и как их считывать), а говорим, какие данные нам нужны. Например:

SELECT title, author, issued_at FROM books WHERE issued_at > 2000;
--- дай мне заголовки, авторов и год издания всех книг,
--- изданных в XXI веке.

В этом свойстве скрывается огромная мощь, которая, кстати, активно проникает в другие сферы разработки: начиная от написания кода (функциональное программирование), заканчивая описанием серверов (управление конфигурациями). То есть мы абстрагируемся от реализации и поднимаемся на уровень выше.

Операторы языка SQL условно можно поделить на следующие составляющие:

DDL (Data Definition Language) - язык описания данных (схемы).

  • CREATE - создание.
  • ALTER - изменение.
  • DROP - удаление.

DML (Data Manipulation Language) - язык манипулирования данными.

  • INSERT - добавление данных.
  • UPDATE - изменение существующих данных.
  • DELETE - удаление данных.

DQL (Data Query Language) – язык запросов.

  • SELECT - выборка данных.

DCL (Data Control Language) - язык определения доступа к данным.

  • GRANT - предоставления пользователю/группе пользователей прав доступа на определенные операции с объектом.
  • REVOKE - отзыв ранее предоставленных прав.
  • DENY - запрет права доступа; имеет приоритет над предоставленным правом с помощью GRANT

TCL (Transaction Control Language) - язык управления транзакциями.

  • COMMIT - совершение, фиксирование, применение транзакции.
  • ROLLBACK - откатывание изменений, совершенных в текущей транзакции.
  • SAVE POINT - разделение транзакции на более мелкие участки.

Вопросы

  1. Поразмышляйте о том, что происходит в СУБД, когда она решает, как получить данные.

TODO

  • DDL. Переносим модель в реальную БД.
  • DML

Links

results matching ""

    No results matching ""