Есть ли разница?Да.NOT NULL
является частью определения хранилища типа столбца.Таким образом, NOT NULL
может повлиять на то, как хранится значение (требуется ли флаг NULL
?).Определение NOT NULL
также можно использовать для оптимизации во время фазы компиляции запроса.
Напротив, ограничение CHECK
проверяет, что данные соответствуют определенным характеристикам, но ономенее вероятно, что эта информация будет использоваться на этапе компиляции.
Определение NOT NULL
предшествует ограничению CHECK
и является стандартным для всех баз данных.
NULL-способность - это то, чтоЯ думаю как часть типа - потому что это объявление, встроенное в язык, которое говорит, что «этот столбец должен иметь значение».Целочисленный столбец, который может принимать значения NULL
, несколько отличается от целого числа, которое не может.
Я бы рекомендовал использовать синтаксис NOT NULL
вместо ограничения CHECK
.Это дает базе данных больше информации о столбце.