Какие базы данных, используемые с PHP, имеют одинаковый (или большую часть) синтаксис SQL? - PullRequest
1 голос
/ 26 февраля 2009

Я читал, что хотя SQL предназначен для стандартизации, он реализован по-разному и т.д. с разными базами данных. Я только когда-либо использовал MySQL для баз данных.

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

Мне было бы интересно узнать, какие «безопасные» базы данных будут обрабатывать большинство (если не все) моих общих запросов MySQL. В основном SELECT, INSERT, UPDATE, DROP, DELETE.

Спасибо

Ответы [ 3 ]

3 голосов
/ 26 февраля 2009

Существует несколько ревизий, называемых ANSI SQL.

Все основные движки баз данных (то есть Oracle, MS SQL, PostgreSQL и MySQL) должны (должны) теоретически поддерживать SQL-92.

Это включает в себя все, что вы упомянули: SELECT, INSERT, UPDATE, DROP, DELETE, если вы не используете сложные предложения с ними.

На практике:

  1. Не все базы данных поддерживают полный набор SQL-92.

    Написание кроссплатформенного SQL даже в SQL-92 требует большого количества испытаний.

  2. Независимость платформы в SQL заканчивается, когда вы вставляете строку 1001st и вам необходимо оптимизировать ваши запросы.

    Если вы посмотрите чуть более StackOverflow вопросов с тегом SQL, вы увидите, что большинство из них говорят: «, помогите мне оптимизировать этот запрос », а большинство ответов говорят: « use этот зависимый от платформы хак"

1 голос
/ 26 февраля 2009

Вы обнаружите, что некоторые базы данных хранят типы данных по-разному, например, MySQL хранит логические значения как 1 и 0, а postgres сохраняет их как 't' и 'f'.

Пока ваши классы баз данных осознают необходимость преобразования данных, у вас все должно быть в порядке, вероятно, 96,3482% каждодневного CRUD будут работать очень хорошо по всем направлениям.

Даже если вы создаете классы базы данных, которые напрямую вызывают PDO, вы можете позже добавить некоторую логику для преобразования данных или изменения запроса.

Вы можете использовать слой абстракции базы данных ADOdb . (есть то, чего жаждут растения)

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

0 голосов
/ 26 февраля 2009

Стандартизированная SQL92 практически одинакова во всех СУБД. Различия заключаются в части, которую стандарт не определяет, как, например, LIMIT или функции обработки даты и времени и, конечно, процедурные языки. Что касается популярных в PHP БД, то сделать SQL переносимым между MySQL, SQLite и PostgreSQL не сложно. С Oracle, Sybase и DB / 2 будет не так просто.

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