Вопрос

Мы запускаем новый проект, и если раньше вся наша работа была над SQL Server, то в новом продукте используется серверная часть Oracle.

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

Это было полезно?

Решение

@hamishcmcn

Ваше утверждение, что '' == Null, просто неверно.В реляционном мире Null следует читать только как означающее «я не знаю».Единственный результат, который вы получите от Oracle (и большинства других достойных баз данных) при сравнении значения с Null, — это «False».

На мой взгляд, основные различия между SQL Server и Oracle заключаются в следующем:

  • Научитесь любить транзакции, они ваши друзья, а автоматическое подтверждение — нет.
  • Согласованность чтения и отсутствие блокировки чтения
  • База данных SQL Server == Схема Oracle
  • PL/SQL гораздо более функционален, чем T-SQL.
  • Узнайте разницу между экземпляром и базой данных в Oracle
  • На сервере может быть более одного экземпляра Oracle.
  • Никаких заостренных волшебников (если они вам действительно не нужны)

Всем остальным, пожалуйста, помогите мне и добавьте больше.

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

Основное отличие, которое я заметил при переходе с SQL Server на Oracle, заключалось в том, что в Oracle вам нужно использовать курсоры в операторах SELECT.Кроме того, временные таблицы используются по-разному.В SQL Server вы можете создать ее в процедуре, а затем УДАЛИТЬ ее в конце, но в Oracle предполагается, что временная таблица уже создана до выполнения процедуры.

Я бы тоже посмотрел на типы данных, поскольку они совершенно разные.

Конкатенация строк:
Оракул:|| или concat ()
SQL-сервер:+

Эти ссылки могут быть интересны:
http://www.dba-oracle.com/oracle_news/2005_12_16_sql_syntax_differences.htm
http://www.mssqlcity.com/Articles/Compare/sql_server_vs_oracle.htm (Старый:Ora9 против Sql 2000)

@hamishmcn

В общем это плохая идея..Временные таблицы в oracle следует просто создавать и оставлять (если только они не отключены или не используются очень редко).Содержимое временной таблицы является локальным для каждого сеанса и усекается при закрытии сеанса.Нет смысла платить за создание/удаление временной таблицы, это может даже привести к конфликтам, если два процесса попытаются создать таблицу одновременно и к непредвиденной фиксации при выполнении DDL.

То, что вы здесь спросили, - это огромная тема, особенно потому, что вы на самом деле не сказали, для чего вы используете базу данных (например, собираетесь ли вы перейти от TSQL -> PL/SQL или просто изменить внутреннюю базу данных своего Java-приложения). связано?)

Если вы серьезно относитесь к использованию вашего выбора базы данных в полной мере, я предлагаю вам копнуть немного глубже и прочитать что-то вроде Экспертная архитектура базы данных Oracle:Методы и решения программирования 9i и 10g Том Кайт.

Обратите внимание на разницу в способе обработки пустой строки.
INSERT INTO atable (a_varchar_column) VALUES ('');

такой же как

INSERT INTO atable (a_varchar_column) VALUES (NULL);

У меня нет sqlserver опыт, но я понимаю, что это различие между двумя

При необходимости вы можете создавать и удалять временные таблицы в процедурах, используя команду Выполнить немедленно команда.

to andy47, я не имел в виду, что вы можете использовать пустую строку при сравнении, но Oracle обрабатывает ее как нулевую, если вы используете ее во вставке.Перечитайте мою запись, затем попробуйте следующий SQL:

CREATE TABLE atable (acol VARCHAR(10));
INsERT INTO atable VALUES( '' );
SELECT * FROM atable WHERE acol IS NULL;

И чтобы избежать ситуации «да, это так, нет, это не так», вот внешняя ссылка

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top