Почему Microsoft создала свое собственное расширение SQL (T-SQL)? - PullRequest
5 голосов
/ 14 июля 2009

Каковы причины того, что Microsoft внедрила свое собственное расширение SQL как Transact SQL (T-SQL)? Каковы его преимущества перед обычным SQL?

Ответы [ 6 ]

5 голосов
/ 14 июля 2009

Все расширяют SQL.

SQL не процедурный, он декларативный. Вы описываете, что вы хотите, и он выясняет, как получить его, используя любые доступные индексы, хэши или еще много чего.

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

4 голосов
/ 14 июля 2009

Каковы причины того, что Microsoft внедрила свое собственное расширение SQL как Transact SQL (T-SQL)?

Чтобы сделать вашу жизнь проще.

Каковы его преимущества перед обычными SQL?

Нет такой вещи, как "нормальная SQL"

Transact-SQL одновременно увеличивает основанные на множестве способности SQL и добавляет процедурные способности.

Другие системы (например, Oracle и PostgreSQL) четко различают SQL и процедурные языки (PL/SQL и pl/PgSQL).

Microsoft не проводит такого строгого различия.

Transact-SQL был разработан Sybase примерно в середине 80's, когда вообще не было стандарта (первый был предложен в 1986).

К тому времени у каждого поставщика уже было бремя поддержки устаревших приложений, и переписывание их баз данных в соответствии со стандартом нарушило бы совместимость.

Существует более или менее общепринятый стандарт, SQL:92, но он все еще очень сильно скучает, чтобы быть действительно полезным.

Вот почему почти каждая задача, кроме простого SELECT с JOIN, нуждается в некоторой фирменной поддержке для эффективной реализации.

4 голосов
/ 14 июля 2009

Transact-SQL (T-SQL) - это собственное расширение Microsoft и Sybase для SQL. Реализация Microsoft поставляется в продукте Microsoft SQL Server. Sybase использует язык в своем Adaptive Server Enterprise, преемнике Sybase SQL Server. Transact-SQL расширяет возможности SQL с помощью следующих дополнительных функций:

  • Язык управления потоком
  • Локальные переменные
  • Различные функции поддержки для обработки строк, обработки дат, математики и т. Д.
  • Улучшения [необходима цитата] для операторов DELETE и UPDATE

http://en.wikipedia.org/wiki/Transact-SQL

Вики соединяет вас с гораздо более обширной информацией и подробностями.

2 голосов
/ 14 июля 2009

Следует отметить, что хотя большинство поставщиков РСУБД проводят четкое различие между своими расширениями для SQL и языками программирования, используемыми для написания хранимых процедур и триггеров, и так далее, Microsoft и Sybase делают совершенно противоположное, они смешивают эти две концепции в один, а именно, T-SQL. Вы используете T-SQL при написании обычных запросов, но вы также можете (и обычно делаете) использовать T-SQL при написании хранимых процедур и триггеров.

Это спорное преимущество поощрения (или, по крайней мере, сделать очень легко) создание сочетание процедурного и SQL кода [*].

В настоящее время Microsoft проводит различие между хранимыми процедурами T-SQL и процедурами, написанными для CLR (то есть .NET), но это относительно новая разработка (начиная с SQL Server 2005 и далее).

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

1 голос
/ 14 июля 2009

Применимый стандарт SQL для управления потоком, локальными переменными и т. Д. (Т. Е. Процедурный код) известен как SQL / PSM (постоянные хранимые модули).

Согласно Википедии она была принята в 1996 году, но я подозреваю, что это обычная проблема: поставщики уже посвятили себя собственным расширениям, и поэтому внедрение стандартов откладывается на длительные периоды времени

... но не обязательно до бесконечности, есть надежда. Например, общие табличные выражения (CTE) и функции OLAP в SQL Server 2005 и временные типы данных в SQL Server 2008 указывают, что расширения TSQL будут близки к стандартам публикации.

0 голосов
/ 14 июля 2009

Еще одна очень важная причина, по которой производители создают свои собственные разновидности SQL, - это настройка производительности. Существует много способов написания более производительных запросов с использованием кода, разработанного поставщиком, который использует преимущества этого механизма работы базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...