SQL
	
		
		
								
				
																				
							
								
				
																				
							
								
				
								
				
								
				
			
	
		
			Подскажите, есть ли такое понятие чистый SQL???
Насколько я знаю, каждая СУБД вносит свои коррективы... И чистого SQL впринципе нет.... Я прав?
	
	
	При практическом использовании - да, ты прав: у каждой СУБД свой диалект SQL.
Но в основе любого из этих диалектов лежит международный стандарт - тот самый "чистый SQL".
А в основе самого SQL лежит раздел математики под названием "Реляционная алгебра".
				
									Но в основе любого из этих диалектов лежит международный стандарт - тот самый "чистый SQL".
А в основе самого SQL лежит раздел математики под названием "Реляционная алгебра".
								
									Юрий Шмелёв								
								Подскажите, пожалуйста, Вы на какой вопрос ответили да? На вопрос о том, существует ли чистый SQL или о том, что я прав?							
											Есть стандарт
				
									
								
									Юрий Шмелёв								
								Подскажите, а как работать со стандартом							
											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 сервером через механизм биндинга и не более того.
				
							Отличия в диалектах и реализация языка неизбежны. В качестве примера можно привести "чистый" и стандартный языка 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 сервером через механизм биндинга и не более того.
Еще под "на чистом sql" могут подразумевать "не использование ORM"
Так же как например "на чистом php" означает "не использовать cms и фреймворки"
				
							Так же как например "на чистом php" означает "не использовать cms и фреймворки"
его почистил, удалили все данные которые были записаны там
				
							Похожие вопросы
- SQL. Выводятся не все данные. 4 задача.
- Чем отличаются разные SQL?
- Не очень понятен синтаксис запросов SQL
- Помогите написать sql запросы
- Вопрос по SQL + Python
- Что делает кусок коды, выделенный синим? SQL
- Microsoft SQL. Процедура вывода максимального количества товаров за определенную сумму
- Вопрос по SQL. Помогите понять решение задачи
- Вопрос по SQL - уникальное поле ID для трёх таблиц (нельзя вставить значения в одну, если оно есть в другой таблице).
- Приведите примеры удачного использования драйверов БД во фреймворках, более высокоуровневых, чем SQL.
 
			 
						 
						 
						 
						