Какой смысл создавать таблицу без данных в SQL?

Я смотрю чужой код, и там около 200 строк, в которых они используют CREATE TABLE с SELECT STATEMENT, просто чтобы закончить утверждением WITH NO DATA А непосредственно под ним используются те же запросы с оператором INSERT. Итоговая таблица содержит более 400 тыс. строк. Я просто хотел знать, почему это будет видно/если это лучшая практика? И если это не лучшая практика, то какой лучший способ сделать это?

Вы имеете в виду, что они создали таблицу, используя CREATE TABLE на основе SELECT, и в их операторе было WITH NO DATA? Они взяли структуру набора результатов для таблицы, но не заполнили ее.

data_henrik 09.10.2023 14:47

Да, извини, я это имел в виду

Pop23 09.10.2023 14:49

Являются ли эти 200 строк просто 200-дюймовыми столбцами? Я создал такие таблицы: create table table1 as (select * from orig_table where 1=0);. Это создаст новую таблицу со всеми необходимыми столбцами. Строки заполняются позже по мере необходимости.

Isolated 09.10.2023 15:48
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это общий трюк — создать таблицу с шаблоном набора данных, созданного запросом. В этом случае таблица создается не только со столбцами и одинаковым типом данных для каждого столбца, но также со всеми ограничениями столбцов NOT NULL и CHECK, если таковые имеются, но без ограничений таблицы (PK, FK, unique.... ). Это позволяет избежать написания сложной команды CREATE TABLE и синхронизации структуры постоянных таблиц в базе данных с новой таблицей, созданной таким образом, которые часто представляют собой временные таблицы или таблицы «клинекс», такие как таблицы, используемые для разбивки данных... Не делайте этого. забудьте, что база данных не является фиксированной структурой, но может развиваться в любое время, особенно с помощью некоторого ALTER TABLE... (добавление столбцов или новых ограничений).

WITH NO DATA или WITH DATA не влияет на ограничения столбца или таблицы в Db2.
Charles 09.10.2023 16:04

Вы имеете в виду ограничения таблицы... Не те столбцы, которые наследуют тип данных...

SQLpro 09.10.2023 16:13

в твоем ответе говорится column constraints NOT NULL and CHECK if any

Charles 09.10.2023 17:31
Ответ принят как подходящий

Вы не включаете код, но из вашего описания у вас есть:

create table mytable as (select <...>) WITH NO DATA;
insert into mytable (select <...>);

Где select <...> точно такие же.

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

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