Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы с 13-31 Информационные технологии.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.09 Mб
Скачать

Описание

Язык SQL представляет собой совокупность

  • операторов

  • инструкций

  • вычисляемых функций

Операторы

Согласно общепринятому стилю программирования, операторы (и другие зарезервированные слова) в SQL обычно рекомендуется писать прописными буквами.[6]

Операторы SQL делятся на:

  • операторы определения данных (Data Definition Language, DDL):

    • CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),

    • ALTER изменяет объект,

    • DROP удаляет объект;

  • операторы манипуляции данными (Data Manipulation Language, DML):

    • SELECT выбирает данные, удовлетворяющие заданным условиям,

    • INSERT добавляет новые данные,

    • UPDATE изменяет существующие данные,

    • DELETE удаляет данные;

  • операторы определения доступа к данным (Data Control Language, DCL):

    • GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,

    • REVOKE отзывает ранее выданные разрешения,

    • DENY задает запрет, имеющий приоритет над разрешением;

  • операторы управления транзакциями (Transaction Control Language, TCL):

    • COMMIT применяет транзакцию,

    • ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,

    • SAVEPOINT делит транзакцию на более мелкие участки.

Преимущества Независимость от конкретной субд

Несмотря на наличие диалектов и различий в синтаксисе, в большинстве своём тексты SQL-запросов, содержащие DDL и DML, могут быть достаточно легко перенесены из одной СУБД в другую. Существуют системы, разработчики которых изначально ориентировались на применение по меньшей мере нескольких СУБД (например: система электронного документооборота Documentum может работать как с Oracle Database, так и с Microsoft SQL Server и DB2). Естественно, что при применении некоторых специфичных для реализации возможностей такой переносимости добиться уже очень трудно.

Наличие стандартов

Наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка. Правда, стоит обратить внимание, что сам по себе стандарт местами чересчур формализован и раздут в размерах (например, базовая часть стандарта SQL:2003 состоит из более чем 1300 страниц текста).

Декларативность

С помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать. То, каким образом это сделать, решает СУБД непосредственно при обработке SQL-запроса. Однако не стоит думать, что это полностью универсальный принцип — программист описывает набор данных для выборки или модификации, однако ему при этом полезно представлять, как СУБД будет разбирать текст его запроса. Чем сложнее сконструирован запрос, тем больше он допускает вариантов написания, различных по скорости выполнения, но одинаковых по итоговому набору данных.

Недостатки Несоответствие реляционной модели данных

Создатели реляционной модели данных Эдгар КоддКристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности, они указывают на следующие дефекты SQL с точки зрения реляционной теории[7]:

  • SQL разрешает в таблицах строки-дубликаты, что в рамках реляционной модели данных невозможно и недопустимо;

  • SQL поддерживает неопределённые значения (NULL) и многозначную логику;

  • SQL использует порядок колонок и ссылки на колонки по номерам;

  • SQL разрешает колонки без имени и дублирующиеся имена колонок.

В опубликованном Кристофером Дейтом и Хью Дарвеном Третьем манифесте[8] они излагают принципы СУБД следующего поколения и предлагают язык Tutorial D, который является подлинно реляционным.