Когда необходимо установить NOT NULL для полей - SQL? [Дубликат]

for f, b in zip(foo, bar):
    print(f, b)

zip останавливается, когда останавливается более короткое число foo или bar.

В Python 2, zip возвращает список кортежей. Это нормально, когда foo и bar не массивны. Если они оба массивны, то формирование zip(foo,bar) является излишне массивной временной переменной и должно быть заменено на itertools.izip или itertools.izip_longest, которое возвращает итератор вместо списка.

import itertools
for f,b in itertools.izip(foo,bar):
    print(f,b)
for f,b in itertools.izip_longest(foo,bar):
    print(f,b)

izip останавливается при исчерпании foo или bar. izip_longest останавливается, когда оба foo и bar исчерпаны. Когда более короткий итератор (ы) исчерпан, izip_longest дает кортеж с None в позиции, соответствующей этому итератору. Вы также можете установить другой fillvalue, кроме None, если хотите.

В Python 3, zip возвращает итератор кортежей, например itertools.izip в Python2. Чтобы получить список кортежей, используйте list(zip(foo, bar)). И чтобы застегнуть молнию до тех пор, пока оба итератора не будут исчерпаны, вы будете использовать itertools.zip_longest .


Обратите внимание также, что zip и его zip -подобный brethen могут принять произвольное число итераций в качестве аргументов. Например,

for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'], 
                              ['red', 'blue', 'green']):
    print('{} {} {}'.format(num, color, cheese))

печатает

1 red manchego
2 blue stilton
3 green brie
2
задан PHP For Life 7 June 2012 в 15:14
поделиться

5 ответов

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

  1. Работа с нулями может быть раздражающей и противоречивой
  2. Она экономит немного места
  3. В некоторых системах баз данных нулевые значения не индексируются.
9
ответ дан Jeremy Holovacs 1 September 2018 в 03:55
поделиться

Просто, чтобы уточнить вашу точку ... Пустые строки не устанавливаются в NULL в любой базе данных, которая соответствует стандарту ANSI для SQL. NULL - это не то же самое, что и пустые строки. Столбцам с явным значением NULL или без значения присваивается значение NULL.

Вот несколько преимуществ использования NULL. Вы сохраняете пространство для бит, используемого для дифференциации значения NULL. Вы также придаете смысл выражениям, таким как «field & lt;> value» более понятным. Кроме того, некоторые базы данных не могут оптимизировать такие выражения, как «coalesce (field, '') & lt;> value", чтобы использовать индекс.

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

1
ответ дан Gordon Linoff 1 September 2018 в 03:55
поделиться

NOT NULL - это ограничение, гарантирующее наличие значения в столбце для каждой строки. Это правильная практика при правильном применении, потому что при выполнении операций, подобных объединениям, необходимо соблюдать осторожность при использовании нулевых значений, поскольку ни один ни один не равен никому другому [

http: //en.wikipedia. орг / вики / Null_ (SQL )

0
ответ дан NKamrath 1 September 2018 в 03:55
поделиться

Если для поля установлено значение NOT NULL, оно не может быть пустым. Это означает, что вам нужно указать значение для этого поля при вставке записи.

3
ответ дан Superman 1 September 2018 в 03:55
поделиться

NOT NULL обязано указывать конкретное значение для поля.

используйте NULL, когда вам нужно сохранить пустые значения для поля.

используйте NOT NULL, если вы хотите запретить пустые значения для поля. Дополнительная цель, что большинство БД медленно работают с NULL -значениями. Поэтому, если вы сомневаетесь в использовании NOT NULL.

0
ответ дан triclosan 1 September 2018 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: