Size: a a a

2020 August 31

A

Artur in ctodailychat
@antonrevyako sql wtf 🔥
источник

AR

Anton Revyako in ctodailychat
Artur
@antonrevyako sql wtf 🔥
спасибо :) будет еще :)
источник

ء

ءlinjan in ctodailychat
Artur
@antonrevyako sql wtf 🔥
где?)
источник

AR

Anton Revyako in ctodailychat
ءlinjan
где?)
Telegram
Сингулярности не будет
​Пятничный SQL-WTF
Понедельничный SQL-TIL

"Хочешь разобраться в чём-то - напиши статью"

Когда я начинал работать над текущим проектом, я программировал уже около 25 лет и с базами данных работал больше 20 из них.
Казалось, что  я видел большую часть проблем, связанных с разработкой на SQL.
Но стандарт SQL и частные его реализации не перестают удивлять меня до сих пор.

Сегодня я поделюсь с вами несколькими внезапными синтаксическими конструкциями и неочевидным поведением.
По понятным причинам тестировалось это все в PostgreSQL, но большая часть будет работать и в других базах.

Скорее всего вы никогда не столкнетесь с таким синтаксисом в реальной жизни. Но зато сможете блеснуть эрудицией перед своими коллегами :)


1 wtf из 5 - пустые таблицы
Можно создать таблицу совсем без колонок. Или удалить все колонки из таблицы. И это не ошибка.
Зачем это может быть нужно я придумать не смог, но на всякий случай у нас об этом есть notice :)


2 wtf из 5 - системные колонки и зарезервированные слова
В каждой таблице в…
источник

ИМ

Илья Макеев... in ctodailychat
Кто и зачем придумал "предыдущий" и "следующий" называть "правый" и "левый" (или наоборот)?
источник

ИМ

Илья Макеев... in ctodailychat
источник

AR

Anton Revyako in ctodailychat
Илья Макеев
Кто и зачем придумал "предыдущий" и "следующий" называть "правый" и "левый" (или наоборот)?
это ты про что
источник

ИМ

Илья Макеев... in ctodailychat
а походу это просто неправильное использование терминов в коде
источник

A

Artur in ctodailychat
Anton Revyako
спасибо :) будет еще :)
я проверил на sql server, 1-4 отпадают, 5 работает. немного подумав, я сообразил, что это вполне логично, корректно и предсказуемо, но может быть неожиданно, да
источник

С

Слава in ctodailychat
5 это вообще базовая операция в реляционной алгебре, переименование
источник

A

Artur in ctodailychat
5 связано с тем, что field2 означает b.field2, и оно доступно внутри подзапроса, и его можно select from a, как и что угодно другое, например, field1 - field2 + getdate()
источник

AR

Anton Revyako in ctodailychat
Илья Макеев
а походу это просто неправильное использование терминов в коде
ты пр что? )
источник

AR

Anton Revyako in ctodailychat
Artur
я проверил на sql server, 1-4 отпадают, 5 работает. немного подумав, я сообразил, что это вполне логично, корректно и предсказуемо, но может быть неожиданно, да
table t - это sql стандарт, вроде
источник

ИМ

Илья Макеев... in ctodailychat
проехали =) ссылки на деревья там где их нет)
источник

AR

Anton Revyako in ctodailychat
Artur
я проверил на sql server, 1-4 отпадают, 5 работает. немного подумав, я сообразил, что это вполне логично, корректно и предсказуемо, но может быть неожиданно, да
да и вообще все кроме (2) должно бы работать
источник

A

Artur in ctodailychat
Anton Revyako
да и вообще все кроме (2) должно бы работать
мне очень жаль)
источник

AR

Anton Revyako in ctodailychat
(
источник

IV

Igor V in ctodailychat
Таблица без колонок может быть полезна при переезде из другой субд: https://en.wikipedia.org/wiki/DUAL_table
источник

AR

Anton Revyako in ctodailychat
это для тех баз, где нельзя select без from, видимо
источник

IV

Igor V in ctodailychat
Да, в первую очередь из-за dual: select 1 from dual
источник