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





Обратите внимание на разницу в способе обработки пустой строки.
INSERT INTO atable (a_varchar_column) VALUES ('');
такой же как
INSERT INTO atable (a_varchar_column) VALUES (NULL);
У меня нет опыта работы с sqlserver, но я понимаю, что он различает эти два
Основное отличие, которое я заметил при переходе с SQL Server на Oracle, заключалось в том, что в Oracle вам нужно использовать курсоры в операторах SELECT. Кроме того, временные таблицы используются иначе. В SQL Server вы можете создать ее в процедуре, а затем удалить ее в конце, но в Oracle у вас уже должна быть временная таблица, созданная до выполнения процедуры.
Я бы тоже посмотрел на типы данных, потому что они совершенно разные.
При необходимости вы можете создавать и удалять временные таблицы в процедурах с помощью команды Выполнить немедленно.
@hamishmcn
Как правило, это плохая идея. Временные таблицы в oracle следует просто создавать и оставлять (если только они не отключены или используются очень редко). Содержимое временной таблицы является локальным для каждого сеанса и обрезается при закрытии сеанса. Нет смысла оплачивать стоимость создания / удаления временной таблицы, это может даже привести к конфликтам, если два процесса попытаются создать таблицу одновременно и неожиданно завершат выполнение DDL.
@hamishcmcn
Ваше утверждение, что '' == Null, просто неверно. В реляционном мире Null следует понимать только как «я не знаю». Единственный результат, который вы получите от Oracle (и большинства других достойных баз данных), когда вы сравните значение с Null, - это «False».
На первый взгляд, основные различия между SQL Server и Oracle заключаются в следующем:
Все остальные, пожалуйста, помогите мне и добавьте еще.
То, что вы здесь задали, является огромной темой, тем более, что вы на самом деле не сказали, для чего вы используете базу данных (например, собираетесь ли вы переходить с TSQL -> PL / SQL или просто изменяете внутреннюю базу данных вашего java-приложения подключен к?)
Если вы серьезно относитесь к использованию выбранной вами базы данных в полной мере, то я предлагаю вам копнуть немного глубже и прочитать что-нибудь вроде Экспертная архитектура базы данных Oracle: методы и решения программирования 9i и 10g Тома Кайта.
Конкатенация строк:
Оракул: || или 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)
до andy47 я не имел в виду, что вы можете использовать пустую строку в сравнении, но oracle рассматривает ее как null, если вы используете ее во вставке. Перечитайте мою запись, затем попробуйте следующий SQL:
CREATE TABLE atable (acol VARCHAR(10));
INsERT INTO atable VALUES( '' );
SELECT * FROM atable WHERE acol IS NULL;
И чтобы избежать ситуации «да, это так, нет, это не так», вот внешняя ссылка
Эта ссылка предоставляет полезный обзор многих основных отличий: Различия между Oracle и MS SQL Server