Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите, есть ли такое понятие чистый SQL???

S.T.A.L.K.E.R. Ученик (22), закрыт 1 год назад
Насколько я знаю, каждая СУБД вносит свои коррективы... И чистого SQL впринципе нет.... Я прав?
Лучший ответ
Андрей Высший разум (483799) 8 лет назад
При практическом использовании - да, ты прав: у каждой СУБД свой диалект SQL.

Но в основе любого из этих диалектов лежит международный стандарт - тот самый "чистый SQL".

А в основе самого SQL лежит раздел математики под названием "Реляционная алгебра".
S.T.A.L.K.E.R.Ученик (22) 8 лет назад
Подскажите, пожалуйста, Вы на какой вопрос ответили да? На вопрос о том, существует ли чистый SQL или о том, что я прав?
Андрей Высший разум (483799) Отредактировал свой ответ.
Остальные ответы
Капитан Гугл Искусственный Интеллект (146261) 8 лет назад
S.T.A.L.K.E.R.Ученик (22) 8 лет назад
Подскажите, а как работать со стандартом
Капитан Гугл Искусственный Интеллект (146261) Прочитать в стандарте, очевидно.
Sagittarius Искусственный Интеллект (138388) 8 лет назад
C понятием чистый SQL не все так чисто, как кажется.

Отличия в диалектах и реализация языка неизбежны. В качестве примера можно привести "чистый" и стандартный языка C. Что такое int в этом языке? Понятное дело, что целое число, но какой разрядности и какой диапазон допустимых значений у этого числа? И главное, как писать программу, которая бы не сломалась при любых допустимых значениях переменной int. Если следить за чистотой, то приходится шаманить с макросами MAX_INT и т. д. Таким образом, четкого и внятного интерфейса для работы с переменными этого типа по большому счету нет.

Теперь, что такое чистый SQL? Во-первых сам по себе SQL - это какой-то "туманный" язык, который понимает какой-то там сервер. А серверы бывают разными и полноценное общение с ними возможно только консоль сервера. Дальше возникает простой вопрос. Я пишу программу на многократно проклятом Бейсике. Как мне проще всего спросить у умного SQL сервере и разумеется сказать ему что-то передав в качестве параметров.

Нарисовать запрос можно путем создания строки с текстом запроса. И Бейсик и другие уважаемые языки программирования поддерживают конкатенацию строк, поэтому подготовить запрос проблем нет. А как программа клиент поймет ответ, который вернул SQL?

Для этого предусмотрена система биндинга (binding). Другими словами есть правила для связи переменных (входных и выходных), которые обеспечивают однозначное соответствие между значением переменных нашего условного бейсика и сервера SQL. Именно в этом и состоит "чистый" SQL. Например, в языке PL/SQL (процедурный язык программирования похожий на язык Ada) эти правила просты и понятны. Например, вы можете написать SELECT ...INTO ...указав INTO локальные или глобальные переменные. Можно сказать, что это один из самых простых биндингов.

С другой стороны есть задачи взаимодействия, которые так просто не решишь. Если нужно работать с полями типа BLOB, LOB, CLOB нет простого интерфейса. Обычно в таком случае нужно готовить данные в виде внешних файлов. А этим рушится чистота интерфейса. Если запрос не сработал, то в чем причина: 1) забыли файл записать 2) диск переполнен 3) или отвалился доступ к сетевому диску в момент сетевого запроса?

Вот поэтому, чистый SQL - это взаимодействие с SQL сервером через механизм биндинга и не более того.
Дима Ш Мастер (1964) 8 лет назад
Еще под "на чистом sql" могут подразумевать "не использование ORM"
Так же как например "на чистом php" означает "не использовать cms и фреймворки"
Ф2.И2.О2 Ученик (226) 8 лет назад
его почистил, удалили все данные которые были записаны там
Похожие вопросы