Из того, что я узнал из моего предыдущего вопрос, запросы 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 уведомления, если я просто отредактирую свой старый пост и т. д.






SQL - это стандартная отраслевая спецификация для языка запросов для реляционных баз данных. Стандарт - это не программа, это просто документ.
Каждая торговая марка СУБД является реализацией спецификации SQL. Они могут писать свой код по-другому. Детали реализации не продиктованы стандартным языковым документом SQL.
У SQL есть еще один нюанс: есть уровни соответствия: Вход, средний и полный. Одна компания может внедрить части SQL начального уровня и заявить, что они его поддерживают. Они могут выбирать, какие функции они хотят реализовать, на промежуточном и полном уровнях.
Сегодня не существует такой марки базы данных SQL, которая бы реализовывала бы все функции спецификации SQL!
Кроме того, есть много функций, предлагаемых каждой маркой РСУБД, которые в спецификации обозначены как нет. У каждого поставщика, внедряющего SQL, есть идеи о том, как они хотят улучшить стандартный SQL, чтобы предложить дополнительную ценность. Есть также дополнительные функции, которые являются частью программного обеспечения СУБД, но не имеют ничего общего с языком SQL.
Правильно - стандартная спецификация 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 является стандартом, почему некоторые / все люди называют его языком программирования?
Вы называете C++ языком программирования?
Да, но вы можете писать с его помощью операторы и т. д. Насколько я понимаю, все СУБД просто должны придерживаться определенного уровня спецификации SQL, и тогда они могут сказать, что поддерживают SQL, не существует языка SQL, который имеет свой собственный синтаксис и т. д. Принимая во внимание, что C++ является языком сам по себе и придерживается своего собственного синтаксиса, отличного от других языков
SQL - это предметно-ориентированный язык для запроса данных. Сам по себе он редко используется, но был разработан для использования в других приложениях. Это не может квалифицировать его как язык программирования по вашему определению. Но у SQL есть собственный синтаксис.
Извините, все еще нечетко. Вы говорите, что, поскольку MySQL, Oracle и т. д. Все придерживаются спецификации SQL, вы называете все СУБД SQL? Потому что, когда вы говорите, что SQL - это DSL, вы все равно подразумеваете, что SQL - это язык (для домена или для общего назначения), но я подумал, прежде чем вы сказали, что это «отраслевая стандартная спецификация», документ?
Спецификация ISO SQL описывает язык. Компании, которые хотят внедрить язык SQL, читают документ и рассматривают его как инструкции по выбору языка. Когда они реализуют программное обеспечение, которое распознает синтаксис SQL в соответствии с этим документом и выполняет запросы в соответствии с тем, как документ описывает их поведение, они могут сказать, что поддерживают SQL.
Пожалуйста, пройдите экскурсию, чтобы понять, как работает сайт. Только один вопрос за раз.