Преимущества Свобода от привязки к конкретной СУБД Вопреки существующим диалектам и нюансам синтаксиса, подавляющее большинство SQL-скриптов с DDL и DML легко адаптируются под разные системы управления базами данных. Это позволяет разработчикам чувствовать себя увереннее, зная, что их код может работать в нескольких средах. Однако важно понимать: если вы используете узкоспециализировые функции конкретной реализации, переносимость резко снижается. Опора на стандарты Существующие стандарты и тестовые комплексы для проверки соответствия реализации общепринятым нормам придают языку необходимую стабильность. Это дает разработчикам надежный фундамент, хотя стоит отметить, что сам стандарт местами выглядит излишне формализованным и громоздким. Декларативный подход Здесь кроется одна из главных прелестей SQL: вы просто описываете, какие данные вам нужны или что следует изменить. Механизмы их получения остаются за СУБД. Но не стоит расслабляться полностью! Хотя принцип универсален, полезно понимать логику разбора запроса. Чем сложнее конструкция, тем больше вариантов её написания существуют - одни будут работать быстрее других, но приведут к одинаковому результату. Недостатки Расхождение с реляционной моделью Фундаментальные критики, такие как Эдгар Кодд и Кристофер Дейт, не раз указывали на то, что SQL нельзя назвать подлинно реляционным языком. Их претензии вполне обоснованы: - Допуск повторяющихся строк
- Наличие неопределенных значений
- Принудительное указание порядка колонок слева направо
- Возможность наличия колонок без имен или дублирования названий
- Отсутствие поддержки свойства «=»
- Использование указателей (pointers)
- Высокий уровень избыточности
В знаменитом Третьем Манифесте Кристофер Дейт и Хью Дарвен Третий четко изложили принципы для СУБД будущего, предложив язык Tutorial D как истинно реляционную альтернативу. Усложнение синтаксиса Ирония судьбы в том, что язык, изначально созданный для удобной работы конечного пользователя, со временем превратился в сложный инструмент, требующий глубоких знаний программиста. Отклонения от стандартов Несмотря на наличие международного стандарта ANSI SQL-92, многие вендоры вносят собственные изменения в язык своих СУБД. Это приводит к появлению уникальных диалектов, что может создавать определенные трудности при миграции проектов. Трудности с иерархическими данными Долгое время SQL-диалекты большинства СУБД не предлагали удобных способов работы с древовидными структурами. Поставщики вынуждены были искать собственные решения. Сегодня ситуация улучшилась: в ANSI стандартизирована рекурсивная конструкция WITH (заимствованная из SQL DB2), а в MS SQL Server поддержка рекурсивных запросов появилась лишь начиная с версии MS SQL Server 2005.
|