Разница между 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 рекомендуют:
- Сначала попытайтесь решить вашу проблему с простым SQL
- Если вы не можете сделать это с помощью SQL, попробуйте PL/SQL
- Используйте другие языки, такие как Java, только из вашей базы данных, если вы не можете сделать это внутренне.
Но, конечно, вы можете рассматривать свою базу данных как хранилище данных и выполнять всю бизнес-логику внешне на отдельном уровне.
Если потребность действительно в SQL, тогда я сначала попытаюсь реализовать ее на SQL. Могут быть некоторые конкретные обстоятельства, когда процедурный вызов PL/SQL с, возможно, разумным использованием массовых привязок и массовых выборок, может быть быстрее / вызывать меньше разногласий в отношении ресурсов / и т. Д., Чем чистое решение SQL, но в моем случае это случается редко.
Я пытаюсь провести различие между "логикой базы данных" и "логикой приложения", и хотя я признаю, что иногда это может быть нечетким, я очень стараюсь избегать написания логики приложения на PL/SQL. Причина в том, что он гораздо менее выразителен, чем Java, и имеет гораздо более слабые API-интерфейсы практически для всего, кроме взаимодействия с SQL.
Я лично не использую SQLJ, поэтому не могу вам помочь, извините.