Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2 locky Давай сюды твой запрос)).. хочеца заняцца творчеством...)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 13:21 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2gardenman Код: plaintext 1. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 13:49 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Хе хе. Ну если СУБД поддерживает глобальные переменные, то MSSQL победим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Script Copyright ASA9 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 16:47 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2ASCRUS Догадливые, блин... думал, задачка дольше продержится :-) Хотя, если подходить формально, то результат - неправильный :-) У меня в @@microsoftversion судя по всему лежит какая-та внутренняя версия. В BOL описания нету :-( А ваще-та, всегда не любил Sybase за то, что там есть то, что мне иногда надо, а в MS SQL этого нету :-( В частности глобальные переменные и процедуры на коннект. ну, еще одна фича, насчет которой не уверен, но говорили, что есть (как бы так выразится): возможность выделение каждой сессии таких как бы глобальных временных таблиц, но видимых только изнутри одной сессии, с автоматическим созданием их при коннекте и убивании при дисконнекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 16:56 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Из МСДН if convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 8 if convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 17:10 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
lockyВ частности глобальные переменные и процедуры на коннект. ну, еще одна фича, насчет которой не уверен, но говорили, что есть (как бы так выразится): возможность выделение каждой сессии таких как бы глобальных временных таблиц, но видимых только изнутри одной сессии, с автоматическим созданием их при коннекте и убивании при дисконнекте. Есть, есть :) Называется глобальные временные таблицы. Достаточно один раз создать, описание хранится в БД, а каждая подключаемая сессия ее видит как собственную, с своими данными и никаких проблем с разделением по сессиям и блокировками. Можно ее еще сделать как NOT TRANSACTIONAL в целях ускорения операций так сказать :) Еще в ASA можно делать вычисляемые поля на UDF, а по ним строить индексы, или в триггерах BEFORE изменять значения полей, TRUNCATE на таблицы с FOREIGN KEY и триггерами. А еще ...... она и на швейной машинке работать умеет :) P.S.Будем надеятся, что все таки новый MSSQL оправдает надежды и пусть не все, но многое дополнит к своей функциональности. Иногда такие мелочи довольно таки приятны при проектировке БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 17:26 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Я родился 14 сентября 1966 г. Вопрос - сколько дней я прожил? Решите задачу на T-SQL ответ я проверю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 17:56 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2 gardenman Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 18:06 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. или я че не понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 18:06 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Oracle :) Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 18:09 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
ASA Код: plaintext ответ: 13649 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 18:12 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
это видно был тест - на что я правда не понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 18:17 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Это как я понял конкурс на "слабо" :) А вот такое слабо красивым кодом написать на других СУБД: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Данный пример возвращает набор данных c указанной таблицы (Man), в который включаются поля только с указанным типом (VARCHAR). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 18:33 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Oracle :) Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 19:02 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 19:28 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
лучше конечно Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 19:37 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2ASCRUS И нетранзакционность есть? Класс... еще больше ненавижу... Если при этом еще и индексы поддерживаются на таких таблицах... В Informix, по моим сведениям, тоже можно сделать нетранзакционные таблицы, но там несколько ограничений (вроде как нельзя на таких таблицах делать индексы). А фича полезная.... Я как-то с горя пожаловался в форуме на то, что в MS SQL нельзя отключить transaction log, так чуть не съели, сказали что это неправильно... что всё должно логгироваться и всё такое... А truncate и в MS SQL можно организовать, токо там приходится править системную таблицу для этого... так что это так - выверт :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 20:01 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
locky "Нетранзакционность" на глобальные временные таблицы есть. И индексы есть, в том числе можно и кластерный сделать. А заодно для полного счастья можно полноценна триггера BEFORE и AFTER повесить, хотя это выглядит забавно для временной сессионной таблицы. All Кстати очень полезная разминка, заодно можно посмотреть, чего и как в SQL у различных СУБД есть. Предлагаю продолжить тему для познавательных и просветительных целей, чтобы лучше представлять себе возможности конкурирующих БД. Ну CTE (Common Table Expression) приводить в пример не буду, вроде WITH ... SELECT и поддержка иеархических запросов почти у всех есть или скоро будет (это к Якону). Меня лично порадовали следующие расширения SQL в ASA. Интересно у кого есть аналоги: KEY JOIN - связь таблиц по FOREIGN KEY: Код: plaintext 1. 2. 3-е вкусности в KEY JOIN: 1. не надо в запросах вспоминать, по каким полям связывать таблицы 2. если поменять имена полей связи в структуре БД или даже сам FOREIGN KEY, то все запросы с KEY JOIN продолжают работать, так как связь тут уже не физическая, а логическая. 3. подстегивает начинающих получше продумывать связи таблиц Расширенный INSERT Код: plaintext 1. 2. 3. В данном примере в INSERT не надо указывать имена полей, по опции WITH AUTO NAME будут браться поля, имена которых совпадают с именами полей запроса. Опция ON EXISTING UPDATE в данном случае еще интереснее - фактически в TABLE1 будут добавлены все новые записи из TABLE2 и обновлены существующие (естественно для этого требуется наличие PRIMARY KEY, плюс чтобы оно не было AUTOINCREMENT). В обычном ANSISQL этот оператор как минимум придеться разбить на 2 части: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Ну в догонку: в принципе я так думаю никого не удивишь атомарными блоками и exception: Код: plaintext 1. 2. 3. 4. 5. 6. (для не знающих - любые операции в атомарном блоке или выполняются или откатываются, фактически это просто более простая запись SAVEPOINT транзакций). Полезной фичей так же оказались виртуальные индексы. Смысл их прост - создаем виртуальный индекс, физически он не строиться, в БД не присутствует, соответственно времени на построение не занимает, никого не блокирует и на реальное выполнения запросов не влияет. Виден только на время действия сессии, если раньше не прибить командой DROP INDEX. Зато прекрасно виден в планах запросов, если их получать с опцией VIRTUAL. Это дает прекрасную возможность ничего не блокируя, не строя и не изменяя поиграться с индексами на таблицу, посмотреть, как все это выглядит в плане запроса и прикинуть, а стоит ли делать индекс и как его лучше сделать. Интересно было бы узнать, у кого в других СУБД есть интересные расширения SQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2004, 22:50 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
gardenman> Я родился 14 сентября 1966 г. Вопрос - сколько дней я прожил? Решите задачу на T-SQL ответ я проверю... А вот кто решит такую задачку на DB2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 03:06 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 10:17 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Oracle 9.2 select * from Table1 key left join Table2 KEY JOIN не нашел, зато есть NATURAL JOIN: тоже неявное указание полей, только по совпадению имен. http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_103a.htm#2080379 Мое личное мнение - от лукавого эти скрытые соответствия:) Теоретически между двух таблиц может существовать несколько ссылочных ограничений, а с другой стороны - имена полей в них необязательно совпадают. insert into table1 on existing update with auto name select field1, field2 from Table2 WITH AUTO NAME вроде нет. Можно, конечно поля не указывать, но тогда присвоение будет позиционное, ИМХО как и везде. Функцию ON EXISTING UPDATE выполняет оператор MERGE http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_915a.htm#2080942 Атомарные блоки для меня были всегда. "Для меня" - означает с версии Oracle 7.3, хотя скорее всего были и раньше. Дополнительно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Т.е. прошло полных 37 лет и 4 месяца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 10:43 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
2 gardenman Да, посчитало правильно. Цитирую по памяти документацию по DB2 ver.7.x: При вычислении разницы дат полагается, что год содердит 365 дней, месяц содержит 30 дней. Не поверил своим глазам, проверил на линуховой версии, отработало в полном соответствии с документацией, в феврале 2001 года оказалось 30 дней. Никто с таким эффектом сталкивался? В остальном DB2 произвел очень хорошее впечатление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 11:30 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
авторМое личное мнение - от лукавого эти скрытые соответствия:) Теоретически между двух таблиц может существовать несколько ссылочных ограничений, а с другой стороны - имена полей в них необязательно совпадают. Угу, в ASA тоже есть NATURAL JOIN, только я не стал их приводить как раз по той причине, что это от лукавого. KEY JOIN в отличие от NATURAL JOIN как раз однозначно определяет связь таблиц по существующему FOREIGN KEY (если его нет, то естественно будет возбуждена ошибка). Еще навскидку парочка расширений SQL: Расширенный UPDATE: Код: plaintext 1. 2. Организация цикла FOR по курсору: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Данная конструкция организует именованный цикл LoopName, создает FORWARD ONLY курсор CursorName, внутри цикла обьявляет переменные @Field1 и @Field2 и соотвествующе последовательно перебирает весь курсор, ассоциируя переменные с значением полей текущей записи курсора. Откат изменений из триггера: Код: plaintext Оператор откатит изменения, сделанные на таблицу или внутри триггера, а не всю транзакцию. Если в операторе указывается ошибка, то оператор также откатит атомарный блок, если изменения таблицы шли внутри него. С учетом возможности обработки ошибок в begin ... exception ... end, я думаю этот оператор красиво вписывается в общую концепцию работы с транзакциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 11:41 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
Oracle 9.2 Неявные курсоры есть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Про UPDATE надо посмотреть конструкцию UPDATE (SELECT ...) SET ..., ИМХО нечто похожее. В триггере (и не только) можно испоьзовать автномную транзакцию. Похоже, разработчики решают одни и те же практические задачи и вводят расширения синтаксисов T-SQL. PL/SQL и т.п. Обидно другое: все это нестандартизованно, и если сейчас еще можно, глядя на чужой запрос, как-то догадаться о его предназначении, то в дальнейшем сложность восприятия, перевода из одного диалекта в другой, одинаковой реализации для нескольких диалектов будет только возрастать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 12:41 |
|
||
|
Сравнительный анализ MS Sql и другие...
|
|||
|---|---|---|---|
|
#18+
А в sybase такого нету: select * from tt1 where (tt1.id1,tt1.id2) in (select tt2.id1,tt2.id2 from tt2) (подзапрос по нескольким полям сразу) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2004, 12:50 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=32389633&tid=1554197]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 402ms |

| 0 / 0 |
