Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 18 19 20 21 22 [23] 24 25 26 27 .. 31   вперед  Ctrl
 Re: MS SQL > Oracle = True?  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
Yo!
можно тогда на triffids@gmail.com

Отправил
20 янв 05, 22:21    [1262391]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
c127
Guest
2 andy st

с127>первая мысль после того, как кто-то услышит фразу "рекурсивный запрос" будет о том, что он выполняется с использованием рекурсиии.
и это будет правильно. все надо называть своими именами.


Как быть с тем, что рекурсия абсолютно эквивалентна циклам, и одно в другое можно перевести автоматически, без участия мозга. Какими словами теперь это все называть?

А вообще-то немного странно слышать призыв все называть своими именами от сторонника фирмы микрософт, которая постоянно использует общепринятые названия не по назначению. Кластер, например, или "SQL сервер".


2 LSV

с127> раза три уже объясняли, что эти "древесные" операторы и циклы в Вашем случае просто перемещаются на на этап заполнения/модификации таблицы.

> Именно так ! И что в этом плохого ?

Только то, что автор заявил, что "и не нужны никакие "древесные" операторы, циклы, рекурсии..." (LSV). На самом деле они нужны.

> Притормаживать при модификации конечно будет, но не думаю, что существенно. Как правило древесными таблицами явл. справочники, вставка в которые происходит раз в 1000 реже, чем чтение.
А вот рекурсия при каждом чтении может оказаться непозволительной роскошью.


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

> И разве можно сравнить "удобство" получения рез-та от некоей навороченной рекурсивной ф-ции и элементарного SELECT ?

Конечно можно, поскольку никакой рекурсивной функции там нет, есть единственный SQL оператор.
21 янв 05, 02:09    [1262520]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 899
softwarer

А кто говорит, что их не следует различать? Следует. Утверждается то, что рекурсия - понятие куда более глобальное, нежели "рекурсивное выполнение определенного алгоритма". И из этого обсуждения это имхо очевидно ;)

где очевидно? насколько бы глобальным определение рекурсии не было бы, оно сводится к "самоиспользованию" (функция использует сама себя и т.п.).
т.е. вложенные циклы ну никак нельзя называть рекурсией, даже если результат их работы дает тот же самый результат, что и рекурсия.
если это сложно осознать, то стоит воспользоваться своим же советом и подучиться ;)
21 янв 05, 06:19    [1262581]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 899
c127
Как быть с тем, что рекурсия абсолютно эквивалентна циклам, и одно в другое можно перевести автоматически, без участия мозга. Какими словами теперь это все называть?

а как реализуется алгоритм - так и называть. и не надо мешать одно с другим.
рекурсия и вложенные циклы - это способы реализации иерархического алгоритма (в данном случае). и не стоит это путать.
c127

А вообще-то немного странно слышать призыв все называть своими именами от сторонника фирмы микрософт, которая постоянно использует общепринятые названия не по назначению. Кластер, например, или "SQL сервер".

а это тут причем? каждая крупная софтверная контора на западе для своего софта создает свое терминологическое окрыжение и им начхать на другие продукты. а когда надо стыковаться с ними - начинаю вводить рекомендации iso и т.п. которые, правда, каждая контора трактует, как хочет.
например, если вы считаете, что покупая устройство с внешним портом rs-485, сможете его на 100% подключить к другому такому же устройству - вы ошибаетесь.
хотя может вам и повезет и все заработает. а если не заработает - то предъявить никому и ничто не сможете по той причине, что западные стандырты это совсем не стандарты, а больше РЕКОМЕНДАЦИИ и их реализация хоть и желательна, но НЕОБЯЗАТЕЛЬНА (частичто реализовал, и хватит, можно заявлять от соответсвии какому-нибудь ISO).
(такими заморочками страдает тот же SIEMENS - на это я нарывался)

оракул тоже долгое время считал, что ''(пустые кавычки) и null - одно и тоже, что совсем не соответствуют стандарту sql и его разработчиков это почему-то мало волновало.
как в последних версиях - не в курсе.

и вообще, об общепринятых терминах можно говорить только в точных науках - во всех смысл остальных термина зависит от контекста.
это, епрст, не советские ГОСТы, нарушение которых преследуется законом ;)
21 янв 05, 06:31    [1262584]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
andsm

Можно использовать алгоритмы (модификации алгоритма Celco) минимизирующие количество необходимых изменений и расчетов. Тем самым можно добиться времени модификации не намного уступающей времени модификации без этих полей. Хотя сложность алгоритмов при этом растет.
Про deadlock - у меня внесение изменений реализовано таким образом что deadlock получить невозможно.

Хотелось бы увидеть эти алгоритмы, раз уж написали. Не потехи ради, а пользы!
Если у Вас не возникает deadlock'ов - значит Вы хороший специалист. К сожалению не все такие
21 янв 05, 08:42    [1262738]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
andy st
оракул тоже долгое время считал, что ''(пустые кавычки) и null - одно и тоже, что совсем не соответствуют стандарту sql и его разработчиков это почему-то мало волновало.
как в последних версиях - не в курсе.

В каких версиях Вы это встречали? Я начал работать с восьмерки, не слышал о такой дури...
21 янв 05, 08:45    [1262749]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
andy st
Member

Откуда:
Сообщений: 899
alex-ls

В каких версиях Вы это встречали? Я начал работать с восьмерки, не слышал о такой дури...

в 7 и 8 точно, далее - не в курсе, но вроде как обещали исправить
21 янв 05, 08:56    [1262766]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
www.fun4me.narod.ru
Member

Откуда: Moscow
Сообщений: 2406
>> В каких версиях Вы это встречали? Я начал работать с восьмерки, не слышал о такой дури...

8.1.7.4
21 янв 05, 09:22    [1262835]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Zaxx
Guest
alex-ls
В каких версиях Вы это встречали? Я начал работать с восьмерки, не слышал о такой дури...


Я начал работать с семёрки и во всех версиях Oracle было так, и я никогда не слышал, что кто-то обещал это исправить.
Равенство '' и null очень удобно, невзирая не на какие стандарты.

--
select 'YES !!!' from dual where '' is null
21 янв 05, 09:26    [1262851]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
Не понял? Просвятите, плиз.
Т.е. если в поле text, например, типа varchar2(1) поместить "", то по условию
where text=null, оно выбирается что ли? Или здесь про что-то другое говорят?
21 янв 05, 09:40    [1262893]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Zaxx
Guest
alex-ls
Не понял? Просвятите, плиз.
Т.е. если в поле text, например, типа varchar2(1) поместить "", то по условию
where text=null, оно выбирается что ли? Или здесь про что-то другое говорят?


1. Если вы работали с Oracle да ещё и с восьмёрки, но вы не просто не можете не знать что : Сравнения с NULL делаются с помощью is null или is NOT null (а не как
вы написали text=null).

2. Да, при записанном "" в поле txt, where text is null выберет запись. Об этом сдесь и говорят.
21 янв 05, 09:56    [1262974]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL> create table test_null
  2  (t varchar2(5))
  3  ;

Table created.

SQL> insert into test_null values ('''');

1 row created.

SQL> insert into test_null values (null);

1 row created.

SQL> insert into test_null values (' ');

1 row created.

SQL> insert into test_null values ('''''');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test_null
  2  where t is null;

T
-----


SQL>  select * from test_null
  2   where t = '''''';

T
-----
''

...

SQL> select * from test_null;

T
-----
'


''
""


Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   TABLE ACCESS (FULL) OF 'TEST_NULL'




Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          8  consistent gets
          0  physical reads
          0  redo size
        396  bytes sent via SQL*Net to client
        422  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          5  rows processed

SQL> select * from test_null
  2  where t is null;

T
-----



Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   TABLE ACCESS (FULL) OF 'TEST_NULL'




Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          8  consistent gets
          0  physical reads
          0  redo size
        286  bytes sent via SQL*Net to client
        422  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed
21 янв 05, 10:13    [1263047]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
Zaxx

Сравнения с NULL делаются с помощью is null или is NOT null (а не как
вы написали text=null).

Смешно! Это я Вас спрашиваю, потому как is null, не выведет записи с ''. Код я привел.

Zaxx

Я начал работать с семёрки и во всех версиях Oracle было так, и я никогда не слышал, что кто-то обещал это исправить.

Приведите пример.
select 'YES !!!' from dual where '' is null
Здесь null сравнивают с константой, и пользы (как впрочем и вреда) я от этого не вижу...
21 янв 05, 10:19    [1263092]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 7000
Говорить надо нормально, а то своими "пустыми кавычками" всем голову задурили ;-) В Оракле пустая строка принимается равной NULLу. Так было и так, судя по всему, будет.
21 янв 05, 10:22    [1263104]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Zaxx
Guest
Zaxx
select 'YES !!!' from dual where '' is null
Здесь null сравнивают с константой, и пользы (как впрочем и вреда) я от этого не вижу...


create table test (text varchar2(100));
insert into test values ('');
select count(*) from test where text is null

---
count(*)
1

---
Не понял, что это у вас за примеры с записью '''''' в поле ? Речь идёт о пустой строке а не записи кавычек в поле.
21 янв 05, 10:35    [1263164]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
Гм, все таки пустая строка - это известное значение (установленное), а NULL - это не известное значение (не заполненное). IMHO приравнивать пустую строку к NULL не правильно. Помниться, в Sybase ASE такая же фича реализованна, как и в Oracle, хотя могу и ошибаться.
21 янв 05, 10:41    [1263187]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
Zaxx
Не понял, что это у вас за примеры с записью '''''' в поле ?

Цитирую:

andy st
...оракул тоже долгое время считал, что ''(пустые кавычки) и null - одно и тоже...


Zaxx
...Равенство '' и null очень удобно, невзирая не на какие стандарты...


Zaxx
...Да, при записанном "" в поле txt, where text is null выберет запись...


Ну Вы, в натуре, наставили кавычек, а на самом деле имели в виду пустоту...
В моем понимании пустота и null тоже одно и тоже, что вполне логично.

dimitr

Спасибо за поддержку!
21 янв 05, 10:50    [1263233]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Zaxx
Guest
21 янв 05, 11:03    [1263305]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 7000
ASCRUS
Гм, все таки пустая строка - это известное значение (установленное), а NULL - это не известное значение (не заполненное). IMHO приравнивать пустую строку к NULL не правильно.


Если подходить теоретически, вы правы. И это явное нарушение SQL-стандарта. Но сугубо практически то, что есть в Оракле, довольно удобно. Достаточно представить GUI с текстовым полем ввода.
21 янв 05, 11:04    [1263315]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Zaxx
Guest
Тем не менее я и "https://www.sql.ru/forum/memberinfo.aspx?mid=17755" прекрасно понял что имел ввиду "andy st"... никому кроме вас не пришло в голову сравнивать null с кавычками ;)))

>В моем понимании пустота и null тоже одно и тоже, что вполне логично.
В моём тоже, но это от общения с Oracle. Адепты других сект могут заявить, что это не только не правильно и не логично но и не соответствует SQL-стандарту.

--
Я после Oracle, столкнулся с этой проблемой в FB, и долго плевался что not null констрейнт не срабатывает при записи пустой строки в поле... до сих пор непонимаю зачем различать null и пустую строку.
21 янв 05, 11:12    [1263360]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Можно ссылку на то место в стандарте где сказано, что null и пустая строка НЕ ОДНО И ТО ЖЕ ???
21 янв 05, 11:16    [1263376]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 7078
ASCRUS
... все таки пустая строка - это известное значение (установленное), а NULL - это не известное значение (не заполненное)...

insert into test values (null)
Это что тогда выходит? Вставка не известного (не заполненного) значения?
Сравнивать может и неправильно, но определния пустой строки и NULL, ИМХО - другие.

Zaxx
Тем не менее я и "https://www.sql.ru/forum/memberinfo.aspx?mid=17755" прекрасно понял что имел ввиду "andy st"... никому кроме вас не пришло в голову сравнивать null с кавычками ;)))

' и " тоже для Вас одно и тоже?

Zaxx
...Равенство '' и null очень удобно, невзирая не на какие стандарты...


Zaxx
...Да, при записанном "" в поле txt, where text is null выберет запись...

Хотя сейчас самому смешно, что перепутал. Как-то не подумал, что пустое значение могут писать в кавычках или апострофах...
21 янв 05, 11:21    [1263414]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
автор
insert into test values (null)
Это что тогда выходит? Вставка не известного (не заполненного) значения?
Сравнивать может и неправильно, но определния пустой строки и NULL, ИМХО - другие.

Ну тогда почему бы не сделать равенство для NULL=0, NULL='0000.00.00' и т.д. ? С чего это спрашивается пустой стринг приравнивается к NULL, а вот нулевое число не приравнивается ?
21 янв 05, 11:27    [1263449]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
alex-ls
В каких версиях Вы это встречали? Я начал работать с восьмерки, не слышал о такой дури...

Вы меня удивляете. http://softwarer.ru/Oracle/oracle_facts.html#Null

SQL> set null '<NULL>';
SQL> select '' empty from dual;

EMPTY
--------------------
<NULL>

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
PL/SQL Release 9.2.0.4.0 - Production
CORE    9.2.0.3.0       Production
TNS for Solaris: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
21 янв 05, 11:48    [1263605]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL > Oracle = True?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Zaxx
Я начал работать с семёрки и во всех версиях Oracle было так, и я никогда не слышал, что кто-то обещал это исправить.

Осталось выяснить, что Вы слушали, что никогда не слышали. Начиная с Oracle 8, в документации написано примерно следующее: не надо этим пользоваться, потому что весьма вероятно, в следующей версии мы это изменим.

Zaxx
Равенство '' и null очень удобно, невзирая не на какие стандарты.

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

SQL> create table data as select 1 id, cast ('' as varchar2(20)) value from dual;

Table created.

SQL> select * from data where value = '';

no rows selected
21 янв 05, 11:53    [1263638]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 18 19 20 21 22 [23] 24 25 26 27 .. 31   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить