Вопросы о MySQL “NULL”

У меня есть таблица с несколькими столбцами.

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

Мои вопросы:

  1. Было бы умно установить их в NULL в phpmyadmin?

  2. Что на самом деле делает свойство "NULL"?

  3. Я получил бы что-нибудь вообще путем установки их в NULL?

  4. Действительно ли возможно использовать поле NULL тот же путь даже при том, что это устанавливается в NULL?

9
задан Daniel Vassallo 7 September 2010 в 22:27
поделиться

6 ответов

1- Было бы разумно установить для них значение NULL в phpmyadmin?

Все поля по умолчанию равны NULL, если вы не укажете для них значение по умолчанию или не вставите для них какое-либо значение. Нет необходимости делать это ...

2 -Что на самом деле делает свойство "NULL" ?

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

3- Получу ли я вообще что-нибудь, если установил для них значение NULL?

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

4- Можно ли использовать поле NULL таким же образом, даже если для него установлено значение null?

Что вы получите от поля, имеющего значение NULL? В этом тоже нет необходимости.

3
ответ дан 4 December 2019 в 08:33
поделиться

Концепция значения NULL является обычным источником путаницы для новичков в SQL, которые часто думают, что NULL - это то же самое, что и пустая строка »или нулевое значение.

Это не так. Концептуально NULL означает «отсутствующее неизвестное значение» и обрабатывается несколько иначе, чем другие значения. Например, для проверки на NULL нельзя использовать операторы арифметического сравнения, такие как =, <или <>.

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

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

14
ответ дан 4 December 2019 в 08:33
поделиться

Я рекомендую вам прочитать Проблемы с нулевыми значениями .

4
ответ дан 4 December 2019 в 08:33
поделиться

Вы ищете Фитинг кривой . Все простые алгоритмы для этой задачи, которые я знаю, попытаются вписать точки данных в какой-то полином, но я подозреваю, что есть те, которые смогут различать полиномы и неполиномы тоже.

-121--3044080-

Семантически существует небольшая разница между вектором и точкой; они оба представляют смещение от начала координат в некоторой декартовой системе координат. Преимущество векторов в том, что они имеют большую структуру (масштабирование, сложение и т. д.), чем точки.

Например, может потребоваться найти смещение одного объекта от другого: это просто разность векторов между соответствующими векторами положения. Они также более универсальны в представлении других величин, таких как скорость. Например, можно вычислить позицию объекта с позицией r и скоростью v через интервал времени t ; используя векторы, это можно было бы вычислить просто по r + t * v .

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

-121--3518776-

Краткие ответы на ваши вопросы:

  1. Да, NULL означает, что поле вообще ничего не содержит. Если это истинное положение вещей, это то, что должны сказать данные. Примером может служить shipped_date для заказа, который еще не отгружен. В этом случае NULL будет точно представлять значение до тех пор, пока заказ не отгрузится, так как пока он не будет иметь действительное время, в которое он сделал (и в этом случае проверка на значение NULL может быть весьма ценным инструментом при определении того, какие заказы все еще нужно отгрузить).

  2. NULL означает, что поле не содержит ничего. «Nothing» отличается от, скажем, значения 0 или последовательности «», так как это значения. NULL означает примерно то же самое, что «Нет/Нет» или «Я отказываюсь отвечать». Что именно это означает - контекст зависит от столбца. Конечно, некоторые столбцы никогда не должны быть NULL, и вы можете применить это с вашей конструкцией таблицы.

  3. Если большинство полей в столбце имеют значение NULL, следует пересмотреть способ использования этого столбца. Вообще говоря, большое количество значений NULL указывает на то, что вы могли бы составить свои таблицы лучше. Что касается использования по умолчанию, всегда можно установить значение NULL для значения по умолчанию.

  4. Так же, как и что? NULL является уникальным значением. Это не эквивалентно 0, или «», или что-то еще в этом роде. В запросе необходимо проверить наличие IS NULL или IS NOT NULL, а если значение NULL передается в набор данных, необходимо проверить и его наличие. Запрос, равен ли столбец, набор NULL, 0, или «», или то, что у вас есть, возвращает значение false.

1
ответ дан 4 December 2019 в 08:33
поделиться

Иногда некоторые из этих полей столбцов могут быть пустыми (т. Е. Я не буду их использовать в некоторых случаях).

  1. Было бы разумно установить для них значение NULL в phpmyadmin?

Да, это то, для чего это нужно.

  1. Что на самом деле делает свойство «NULL»?

Оно позволяет базе данных разрешать NULL в качестве значения, хранящегося в столбце. «NOT NULL» означает, что столбец должен иметь значение, отличное от NULL.

  1. Получу ли я вообще что-нибудь, установив для них значение NULL?

Нет. Если ваша логика требует, чтобы столбец никогда не содержал NULL в качестве значения, лучше установить для него значение «NOT NULL». Думайте об этом как об утверждении: можно с уверенностью предположить, что значение столбца никогда не будет NULL, поэтому вам не нужно его проверять. Эта база данных заботится об этом утверждении.

  1. Можно ли использовать поле NULL таким же образом, даже если для него установлено значение NULL?

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

А NULL - странное значение. val = NULL равно никогда не истинно, даже если val равно NULL. Для этого вам нужно проверить с помощью « IsNull () », « IS NULL » или « IS NOT NULL ». См. Справочное руководство: Функции сравнения и операторы .

0
ответ дан 4 December 2019 в 08:33
поделиться

Есть ли причина, по которой при определении того, пуст массив или нет, вместо пустого следует использовать счетчик?

Есть ли, когда нужно что-то делать на непустом массиве, зная, что он имеет размер:

if( 0 < ( $cnt = count($array) ) )
{
 echo "Your array size is: $cnt";
}
else
 echo "Too bad, your array is empty :(";

Но я бы не рекомендовал использовать счетчик, если вы не уверены на 100%, что то, что вы считаете массивом. В последнее время я выполняю отладку кода, где функция ошибки возвращала FALSE вместо пустого массива, и что я обнаружил:

var_dump(count(FALSE));

output:

int 1

Поэтому с тех пор я использую пустой или if (array () = = $ array) , чтобы быть уверенным, что у меня массив пуст.

-121--768749-

Понятие значения NULL является общим источником путаницы для новичков SQL, которые часто думают, что NULL совпадает с пустой последовательностью "или значением нуля.

Это не так. Концептуально NULL означает «отсутствующее неизвестное значение» и обрабатывается несколько иначе, чем другие значения. Например, чтобы проверить значение NULL, нельзя использовать операторы арифметического сравнения, такие как =, < или < >.

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

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

-121--3250465-

Собираетесь попытаться ответить на ваши вопросы все сразу здесь.

Значение NULL соответствует строкам «Unknown »/« No value» или «Not applicable». Так что да, если есть столбцы, которые не используются в определенных обстоятельствах, было бы уместно установить для них значение NULL, если они не используются (так как никакое другое значение не подходит).

Столбец можно ограничить значением NOT NULL, что означает, что столбец должен иметь значение для каждой строки. Примером может служить столбец «name» записи «person». Для имени не имеет смысла иметь значение NULL, так как у каждого есть имя.

Вы можете «использовать» столбец NULL, просто помните, что вы должны быть осторожны при сравнении. Поле NULL никогда не равно другому полю. Проверьте наличие «IS NULL» или «IS NOT NULL».

3
ответ дан 4 December 2019 в 08:33
поделиться
Другие вопросы по тегам:

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