Разница между sql, pl/sql и sqlj

Я хочу знать

  • как эти 3 сравниваются друг с другом?
  • какой использовать когда?
  • которые можно использовать как замену другим?

3 ответа

  • SQL - общее имя для языка, который используется для запроса реляционных баз данных. Это регулируется различными стандартами ANSI, хотя я не знаю ни одного фактического RDBS, который бы полностью реализовывал последний стандарт. Некоторые реализуют большую часть ANSI SQL - 92, который можно рассматривать как самый низкий общий знаменатель для реализаций SQL.
  • PL / SQL - специфичное для Oracle расширение SQL, которое используется для написания "ХРАНЕННЫХ ПРОЦЕДУР" и "ТРИГГЕРОВ", эффективно создавая языки сценариев, которые могут изначально использовать Oracle Oracles. В SQLServer TSQL предоставляет аналогичную функциональность.
  • SQLJ - часть стандарта Java, функция (редко используемая), которая позволяет кодировать SQL в соответствии с кодом Java и проверять синтаксис SQL во время компиляции. Сравните с JDBC, который является стандартным Java API, который позволяет Java-программе вызывать SQL во время выполнения.

Таким образом, SQL позволяет выполнять базовые запросы и обновление таблиц, как в "SELEC * FROM MY.TABNAME", PL/SQL позволяет запускать более интеллектуальные сценарии для базы данных, например, " IF DAY = 01 THEN ( INSERT (TOTALS) VALUES" (%). VAL) INTO TOTTAB) Иначе (ОБНОВЛЕНИЕ TOTTAB SET TOTALS = TOTALS + %VAL")

Относительно вашего вопроса "какой использовать, когда". Некоторые гуру Oracle рекомендуют:

  1. Сначала попытайтесь решить вашу проблему с простым SQL
  2. Если вы не можете сделать это с помощью SQL, попробуйте PL/SQL
  3. Используйте другие языки, такие как Java, только из вашей базы данных, если вы не можете сделать это внутренне.

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

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

Я пытаюсь провести различие между "логикой базы данных" и "логикой приложения", и хотя я признаю, что иногда это может быть нечетким, я очень стараюсь избегать написания логики приложения на PL/SQL. Причина в том, что он гораздо менее выразителен, чем Java, и имеет гораздо более слабые API-интерфейсы практически для всего, кроме взаимодействия с SQL.

Я лично не использую SQLJ, поэтому не могу вам помочь, извините.

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