Какое отношение имеет SQL к другим СУБД?

Из того, что я узнал из моего предыдущего вопрос, запросы SQL ограничены используемой СУБД. Например, запрос SQL с использованием full outer join будет невозможен, если СУБД - это MySQL. Отсюда у меня есть еще несколько вопросов, которые меня смущают.

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

Почему SQL не подходит для таких веб-сайтов, как sqlfiddle.com, вы можете использовать только определенную СУБД, такую ​​как MySQL или SQLite?Является ли синтаксис SQL допустимым для всех этих параметров, но у некоторых из этих параметров также есть собственный уникальный синтаксис?

Когда я изучал SQL, я нашел такие веб-сайты, как w3schools, очень полезными, например, я считаю, что это хорошая отправная точка для изучения метода полное внешнее соединение. Как указывалось ранее, это недопустимо для базы данных, созданной с использованием MySQL, поэтому какая версия / СУБД действительно преподают столько веб-сайтов, которые рекламируют обучение SQL?

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

Термин SQL-инъекция не совсем точен, скажем, например, веб-сайт, уязвимый для определенного синтаксиса СУБД, которую они использовали?

Должны ли люди писать SQL в своем резюме или всегда писать специфические особенности, такие как MySQL, Oracle и т. д.?

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

Отказ от ответственности: это скорее продолжение моего предыдущего вопрос, но мне нужно было еще немного спросить, и я не знаю, выдает ли StackOverflow уведомления, если я просто отредактирую свой старый пост и т. д.

Пожалуйста, пройдите экскурсию, чтобы понять, как работает сайт. Только один вопрос за раз.

juergen d 10.07.2018 06:14
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
1
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

SQL - это стандартная отраслевая спецификация для языка запросов для реляционных баз данных. Стандарт - это не программа, это просто документ.

Каждая торговая марка СУБД является реализацией спецификации SQL. Они могут писать свой код по-другому. Детали реализации не продиктованы стандартным языковым документом SQL.

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

Сегодня не существует такой марки базы данных SQL, которая бы реализовывала бы все функции спецификации SQL!

Кроме того, есть много функций, предлагаемых каждой маркой РСУБД, которые в спецификации обозначены как нет. У каждого поставщика, внедряющего SQL, есть идеи о том, как они хотят улучшить стандартный SQL, чтобы предложить дополнительную ценность. Есть также дополнительные функции, которые являются частью программного обеспечения СУБД, но не имеют ничего общего с языком SQL.

  • Форматы хранения
  • Шифрование
  • Сжатие
  • Инструменты DBA
  • Консоли администрирования с графическим интерфейсом пользователя и построители запросов
  • Клиентские драйверы для JDBC, ODBC, Ruby, Python, PHP, Perl, Go и др.
  • логирование
  • Мониторинг
  • Отладка
  • Индексы

Правильно - стандартная спецификация SQL ничего не говорит об индексах, хотя все марки СУБД поддерживают какой-то синтаксис индексации. Но в спецификации индексы оставлены на усмотрение разработчика.

Вы можете сравнить это с таким языком, как C++. Язык C++ также описан в стандарте ISO, но у каждого компилятора C++ есть множество дополнительных функций, которые не описаны в стандарте. Графическая среда IDE, отладчик, оптимизация компилятора, инструменты сборки, встроенная документация и так далее.

Is the term SQL injection not fully accurate?

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

Should people be writing SQL on there CV, or always write the specifics such as MySQL, Oracle etc..?

Да, конечно. Люди, использующие СУБД, должны четко указывать, с какой из них у них есть опыт, когда они перечисляют их в своем резюме или C. Так же, как автомеханик должен четко понимать, какие марки автомобилей он ремонтирует. Несомненно, их навыки можно передать другим людям, и это позволяет им быстро освоить новый бренд, если потребуется.

what version/DBMS do so many websites that advertise to teach SQL actually teach?

Это зависит от сайта. Вы можете найти сайты, на которых есть учебники по любому из основных брендов РСУБД. Вам придется их спросить. Я думаю, что наиболее распространенными из них являются Oracle, Microsoft SQL Server и MySQL. Учебные сайты, естественно, хотят привлечь наибольшую группу потенциальных клиентов, а это самые популярные продукты РСУБД.

еще один случайный вопрос. Если SQL является стандартом, почему некоторые / все люди называют его языком программирования?

J.Doe 11.07.2018 08:34

Вы называете C++ языком программирования?

Bill Karwin 11.07.2018 17:17

Да, но вы можете писать с его помощью операторы и т. д. Насколько я понимаю, все СУБД просто должны придерживаться определенного уровня спецификации SQL, и тогда они могут сказать, что поддерживают SQL, не существует языка SQL, который имеет свой собственный синтаксис и т. д. Принимая во внимание, что C++ является языком сам по себе и придерживается своего собственного синтаксиса, отличного от других языков

J.Doe 12.07.2018 07:15

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

Bill Karwin 12.07.2018 07:40

Извините, все еще нечетко. Вы говорите, что, поскольку MySQL, Oracle и т. д. Все придерживаются спецификации SQL, вы называете все СУБД SQL? Потому что, когда вы говорите, что SQL - это DSL, вы все равно подразумеваете, что SQL - это язык (для домена или для общего назначения), но я подумал, прежде чем вы сказали, что это «отраслевая стандартная спецификация», документ?

J.Doe 12.07.2018 08:33

Спецификация ISO SQL описывает язык. Компании, которые хотят внедрить язык SQL, читают документ и рассматривают его как инструкции по выбору языка. Когда они реализуют программное обеспечение, которое распознает синтаксис SQL в соответствии с этим документом и выполняет запросы в соответствии с тем, как документ описывает их поведение, они могут сказать, что поддерживают SQL.

Bill Karwin 12.07.2018 14:46

Другие вопросы по теме