Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
264.7 Кб
Скачать

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

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

  • Повторяющиеся строки

  • Неопределённые значения (nulls)

  • Явное указание порядка колонок слева направо

  • Колонки без имени и дублирующиеся имена колонок

  • Отсутствие поддержки свойства «=»

  • Использование указателей

  • Высокая избыточность

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

Сложность

Хотя SQL и задумывался как средство работы конечного пользователя, в конце концов он стал настолько сложным, что превратился в инструмент программиста.

Отступления от стандартов

Несмотря на наличие международного стандарта ANSI SQL-92, многие компании, занимающиеся разработкой СУБД (например, Oracle, Sybase, Microsoft, MySQL AB), вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом, появляются специфичные для каждой конкретной СУБД диалекты языка SQL.

Сложность работы с иерархическими структурами

Ранее диалекты SQL большинства СУБД не предлагали способа манипуляции древовидными структурами. Некоторые поставщики СУБД предлагали свои решения. Например, Oracle использует выражение CONNECT BY. В настоящее время в ANSI стандартизована рекурсивная конструкция WITH из диалекта SQL DB2. В MS SQL Server рекурсивные запросы появились лишь в версии MS SQL Server 2008.[источник не указан 16 дней]

Расширения

Процедурные расширения

Поскольку SQL не является языком программирования (то есть не предоставляет средств для автоматизации операций с данными), вводимые разными производителями расширения касались в первую очередь процедурных расширений. Это хранимые процедуры (англ. stored procedures) и процедурные языки-«надстройки». Практически в каждой СУБД применяется свой процедурный язык. Стандарт для процедурных расширений представлен спецификацией SQL/PSM). Перечень процедурных расширений для самых популярных СУБД приведён в следующей таблице.

СУБД

Краткое название

Расшифровка

InterBase/Firebird

PSQL

Procedural SQL

IBM DB2

SQL PL (англ.)

SQL Procedural Language (расширяет SQL/PSM); также в DB2 хранимые процедуры могут писаться на обычных языках программирования: Си, Java и т.д.

MS SQL Server/ Sybase ASE

Transact-SQL

Transact-SQL

MySQL

SQL/PSM

SQL/Persistent Stored Module (соответствует стандарту SQL:2003[источник не указан 254 дня])

Oracle

PL/SQL

Procedural Language/SQL (основан на языке Ada)

PostgreSQL

PL/pgSQL

Procedural Language/PostgreSQL Structured Query Language (очень похож на Oracle PL/SQL)

Примечания

  1. Andy Oppel. Databases Demystified. — San Francisco, CA: McGraw-Hill Osborne Media. — С. 90—91. — ISBN 0-07-225364-9 — «„SEQUEL“ был торговой маркой британской авиастроительной группы компаний Hawker Siddeley»

  2. http://archives.postgresql.org/pgsql-hackers/2008-09/msg00071.php

  3. O’Reilly Network An Interview with Chris Date

  4. The Third Manifesto

См. также

  • QBE

  • SQL-дескриптор

  • SQL injection

  • Хранимая процедура

  • SQLCA

Ссылки

  • Текст стандарта SQL-92(англ.)

  • Форум по СУБД и SQL(рус.)

  • Упражнения по SQL. Самоучитель по SQL DML(рус.)(англ.)

  • SQL. Введение и руководство

  • Краткий курс SQL

  • Интерактивный учебник по SQL с примерами и задачами

  • Наиболее интересные новшества в стандарте SQL:2003

Литература

  • Бен Форта. Освой самостоятельно язык запросов SQL / Пер. с англ. — 3-е изд. — М.: Диалектика, 2005. — 288 с.

  • Пол Уилтон, Джон Колби. Язык запросов SQL для начинающих / Пер. с англ. — М.: Диалектика, 2005. — 496 с.

  • К. Дж. Дейт. Введение в системы баз данных / Пер. с англ. — 8-е изд. — М.: Вильямс, 2005. — 1328 с.

  • Кевин Клайн. SQL. Справочник. — М.: КУДИЦ-ОБРАЗ, 2006. — 832 с.

[показать]

Базы данных

Концепции

Модель данныхРеляционные базы данныхРеляционная модель данныхРеляционная алгебраНормальная формаСсылочная целостностьРеляционная СУБДРаспределённые СУБДACID

Ключи

Первичный ключВнешний ключСуррогатный ключСуперключВозможный ключ

Объекты

ТриггерПредставлениеТаблицаКурсорЖурнализация измененийТранзакцияИндексХранимая процедураСекционирование

SQL

SELECTINSERTUPDATEMERGEDELETEJOINUNIONCREATEALTERDROPCOMMITROLLBACK

Типы реализаций

ИерархическаяСетеваяРеляционнаяОбъектно-ориентированная

Реализации СУБД

DB2FirebirdPostgreSQLMS SQL ServerMySQLOracleSQLite

Компоненты

Язык запросовОптимизатор запросовПлан выполнения запросаODBCJDBC

[скрыть]

п·о·р

Основные языки программирования (список • сравнение • IDE • история • хронология)

Используемые в разработке

АдаАПЛАссемблерActionScriptABAP/4AutoItAWKBASICCКоболC++C#ColdFusionCommon LispDdBaseDelphiEiffelErlangF#ForthФортранGambasGroovyHaskellIconJavaJavaScriptLimboLuaMATLABObject PascalObjective-COCamlOzОберонParserПаскальPerlPHPPowerBASICPureBasicPythonПЛ/1ПрологRubyScalaSchemeSmalltalkSQLPL/SQLTclValaVisual BasicVB.NET

Академические

CleanCurryЛогоMLМодула-3РефалСимула

IEC61131-3

Instruction ListSTFBDLadder DiagramSFC

Прочие

АлголАлгол 68Модула-2MirandaHope

Эзотерические

HQ9+/HQ9++ • INTERCALBrainfuckBefungeMalbolgePietSpoonUnlambdaWhitespaceFALSE

Источник — «http://ru.wikipedia.org/wiki/SQL»

Категории: SQL | Стандарты ISO

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]