Как сделать значение по умолчанию в sql
С помощью атрибутов можно настроить поведение столбцов. Рассмотрим, какие атрибуты мы можем использовать.
PRIMARY KEY
Атрибут PRIMARY KEY задает первичный ключ таблицы.
Первичный ключ уникально идентифицирует строку в таблице. В качестве первичного ключа необязательно должны выступать столбцы с типом int, они могут представлять любой другой тип.
Установка первичного ключа на уровне таблицы:
Первичный ключ может быть составным. Такой ключ использовать сразу несколько столбцов, чтобы уникально идентифицировать строку в таблице. Например:
Здесь поля OrderId и ProductId вместе выступают как составной первичный ключ. То есть в таблице OrderLines не может быть двух строк, где для обоих из этих полей одновременно были бы одни и те же значения.
AUTO_INCREMENT
Атрибут AUTO_INCREMENT позволяет указать, что значение столбца будет автоматически увеличиваться при добавлении новой строки. Данный атрибут работает для столбцов, которые представляют целочисленный тип или числа с плавающей точкой.
В данном случае значение столбца Id каждой новой добавленной строки будет увеличиваться на единицу.
UNIQUE
Атрибут UNIQUE указывает, что столбец может хранить только уникальные значения.
В данном случае столбец Phone, который представляет телефон клиента, может хранить только уникальные значения. И мы не сможем добавить в таблицу две строки, у которых значения для этого столбца будет совпадать.
Также мы можем определить этот атрибут на уровне таблицы:
NULL и NOT NULL
Чтобы указать, может ли столбец принимать значение NULL , при определении столбца ему можно задать атрибут NULL или NOT NULL . Если этот атрибут явным образом не будет использован, то по умолчанию столбец будет допускать значение NULL. Исключением является тот случай, когда столбец выступает в роли первичного ключа — в этом случае по умолчанию столбец имеет значение NOT NULL.
В данном случае столбец Age по умолчанию будет иметь атрибут NULL.
DEFAULT
Атрибут DEFAULT определяет значение по умолчанию для столбца. Если при добавлении данных для столбца не будет предусмотрено значение, то для него будет использоваться значение по умолчанию.
Здесь столбец Age в качестве значения по умолчанию имеет число 18.
CHECK
Атрибут CHECK задает ограничение для диапазона значений, которые могут храниться в столбце. Для этого после CHECK указывается в скобках условие, которому должен соответствовать столбец или несколько столбцов. Например, возраст клиентов не может быть меньше 0 или больше 100:
Кроме проверки возраста здесь также проверяется, что столбцы Email и Phone не могут иметь пустую строку в качестве значения (пустая строка не эквивалентна значению NULL).
Для соединения условий используется ключевое слово AND . Условия можно задать в виде операций сравнения больше (>), меньше (<), не равно (!=).
Также CHECK можно использовать на уровне таблицы:
Оператор CONSTRAINT. Установка имени ограничений
С помощью ключевого слова CONSTRAINT можно задать имя для ограничений. Они указываются после ключевого слова CONSTRAINT перед атрибутами на уровне таблицы:
В данном случае ограничение для PRIMARY KEY называется customers_pk, для UNIQUE — customer_phone_uq, а для CHECK — customer_age_chk. Смысл установки имен ограничений заключается в том, что впоследствии через эти имена мы сможем управлять ограничениями — удалять или изменять их.
Установить имя можно для ограничений PRIMARY KEY, CHECK, UNIQUE, а также FOREIGN KEY, который рассматриватся далее.
1.2.3. Значения по умолчанию в SQL
Бывают случаи, когда необходимо упростить ввод данных со стороны пользователя или просто забивать в какое-либо поле значение, без вмешательства пользователя. Например, вы можете вести таблицу финансовых расходов (например, в программе домашней бухгалтерии). Для этого нужны поля: дата, название и сумма. Если дата не указана, то в поле для хранения даты должна записываться текущая дата. Это очень удобно и позволяет пользователю не вводить дату расходов, сделанных в тот же день, что и занесение информации в таблицу. Указание даты будет необходимо, только если расходы, планируемые на будущий период или сделанные ранее, но не занесены.
Для задания значения по умолчанию, используется ключевое слово DEFAULT, после которого идет нужно значение в том же формате, что и поле. Это значит, что если поле числовое, то значение по умолчанию должно быть числом. Если поле строковое, то значение должно быть строкой заключенной в одинарные кавычки.
Значение по умолчанию не могут быть назначены полям типа timestamp и автоматически увеличиваемым числовым полям. В качестве значения можно указывать конкретное значение, функцию SQL сервера, значения NULL или функции SQL-92 (см. таблицу 1.2). В таблице 1.2 показаны функции SQL-92, но помимо их можно указывать и функции SQL сервера, которых очень много и рассмотреть их в одной таблице или главе просто не возможно.
Таблица 1.2. Функции SQL-92
| Название функции | Возвращаемое значение |
|---|---|
| CURRENT_TIMESTAMP | Текущая дата и время |
| CURRENT_USER | Имя пользователя, добавившего строку |
| SESSION_USER | Имя пользователя, добавившего строку |
| SYSTEM_USER | Имя пользователя, добавившего строку |
| USER | Имя пользователя, добавившего строку |
Давайте создадим таблицу, содержащую три поля:
- id –целое число со значением по умолчанию = 1;
- dDate – поле типа дата со значением по умолчанию – текущая дата.
- vcName — строкового типа со значением по умолчанию ‘М’
Все это в виде сценария будет выглядеть следующим образом:
Для поля dDate в качестве значения по умолчанию указывается функция из SQL сервера getdate(). Она возвращает текущую дату. К функциям сервера мы еще вернемся чуть позже и не раз, поэтому пока не заостряйте на этом особого внимания. Если что-то непонятно, все встанет на свои места в 3-й главе.
Если в вашей программе в качестве ключа или для других целей используется глобально уникальный идентификатор GUID, то его значение пользователь уж точно не сможет создать вручную, по крайней мере, создать правильно. Поэтому, вполне логично как-нибудь генерировать его. Например, давайте создадим таблицу из двух полей: идентификатора GUID и названия:
Первое поле guid в качестве значения по умолчанию будет получать результат выполнения функции NEWID(), которая как раз и генерирует глобально уникальный идентификатор на стороне сервера. Если пользователь не указал значение или клиентская программа не сгенерировала его самостоятельно, то сервер выполнит функцию NEWID() и запишет в поле его значение.
Значения по умолчанию позволяют упростить пользователям жизнь, и не стоит пренебрегать ими. Например, у вас есть таблица жителей города, в которой хранятся ФИО, пол и дата рождения. В поле для хранения пола должно быть написано М или Ж, а так как примерно половина из жителей будет мужчинами, можно упростить пользователю ввод данных. Если пол не указан, то по умолчанию будет в таблице указываться пол М. Таким образом, пол необходимо будет указывать только для женщин.
С другой стороны, из-за значений по умолчанию могут возникнуть ошибки, которые очень сложно определить и исправить. Рассмотрим все тот же пример с полом. А что, если пользователь случайно не укажет пол для женщины? В этом случае, будет указана буква М, и найти запись с неправильным полом будет сложно. Если бы не было никакого значения, то достаточно было бы найти все записи в таблицы с нулевым значением в поле «Пол» и визуально (по имени и фамилии) определить пол и исправить.
Напоследок, необходимо отметить, что значение по умолчанию будет подставляться только при добавлении строки. Если в уже существующей строке таблицы, полю со значением по умолчанию установить нулевое значение, то поле станет равным NULL.
SQL-Ex blog

Вставка столбца со значением по умолчанию в таблицу SQL Server
- Ограничение DEFAULT и необходимые разрешения для его создания.
- Добавление ограничения DEFAULT при создании новой таблицы.
- Добавление ограничения DEFAULT в существующую таблицу.
- Модификация и просмотр определения ограничения с помощью скриптов T-SQL и в SSMS.
Что такое ограничение DEFAULT
Ограничение DEFAULT задает значение по умолчанию для столбца.
Когда выполняется оператор INSERT, но не указывается конкретное значение для столбца с созданным ограничением DEFAULT, SQL Server вставляет значение по умолчанию, указанное в определении ограничения DEFAULT.
Чтобы создать ограничение по умолчанию, вам необходимо иметь разрешение на выполнение ALTER TABLE и CREATE TABLE.
Добавление ограничения DEFAULT при создании новой таблицы
Это будет таблица с именем SalesDetails. Когда мы вставляем данные в эту таблицу без указания значения для столбца Sale_Qty, запрос должен вставить нуль. Чтобы добиться этого, я создаю ограничение по умолчанию с именем DF_SalesDetails_SaleQty на столбце Sale_Qty.
Давайте теперь протестируем поведение ограничения, вставив несколько фиктивных записей в таблицу. Выполните следующий запрос:
Теперь посмотрим, что находится в таблице:

Как можно увидеть, в столбец Sale_Qty был вставлен нуль.
Если при создании таблицы, мы не указываем имя ограничения DEFAULT, SQL Server создает ограничение с уникальным именем, которое генерируется системой.
Создайте таблицу с помощью следующего запроса:
Выполните следующий скрипт, чтобы увидеть имя ограничения:

SQL Server создал ограничение со сгенерированным системой именем.
Добавление ограничение DEFAULT в существующую таблицу
Чтобы добавить ограничение для существующего столбца таблицы, используется оператор ALTER TABLE ADD CONSTRAINT:
- tbl_name : задает имя таблицы, в которую вы хотите добавить ограничение по умолчанию.
- constraint_name : задает желаемое имя ограничения.
- column_name : задает имя столбца, для которого вы хотите создать ограничение по умолчанию.
- default_value : задает значение, которое вы хотите использовать при вставке.
Давайте сначала добавим столбец Product_name в SalesDetails:
Вставляем данные в таблицу без указания значения для столбца Product_name. Запрос должен вставить N/A.
Для этого я создам ограничение по умолчанию с именем DF_SalesDetails_ProductName на столбце Product_name. Следующий запрос создает это ограничение:
Теперь давайте проверим действие ограничения. Вставим запись, не указывая имя товара:
После вставки записей выполним оператор SELECT, чтобы просмотреть данные:

Как видно на рисунке, значением столбца Product_name для PROD0003 является N/A.
Изменение ограничения DEFAULT
Мы можем изменить определение ограничения по умолчанию: сначала удалить существующее ограничение, а затем создать ограничение с другим определением.
Предположим, что вместо вставки N/A мы хотим вставлять Not Applicable. Сначала мы должны удалить ограничение DF_SalesDetails_ProductName. Выполните следующий запрос:
После удаления ограничения выполните запрос для создания ограничения:
Теперь давайте вставим запись без указания имени товара:
Выполните оператор SELECT для просмотра данных в таблице SalesDetails:

Видно, что значением столбца Product_name является Not Applicable.
Просмотр ограничения DEFAULT
Мы можем увидеть список ограничений DEFAULT с помощью Server Management Studio и выполнив запрос к динамическим административным представлениям.
Откройте SSMS и разверните Databases > DemoDatabase > SalesDetails > Constraint:

Видно, что созданы два ограничения с именами DF_SalesDetails_SaleQty и DF_SalesDetails_ProductName.
Другой способ просмотра ограничений — запрос к sys.default_constraints. Следующий запрос выводит список ограничений по умолчанию и их определения:

Мы можем использовать хранимую процедуру sp_helpconstraint для просмотра списка ограничений, созданных в таблице:

В столбце constraint_keys выводится определение ограничения по умолчанию.
Удаление ограничения
- Оператор ALTER TABLE DROP CONSTRAINT.
- Оператор DROP DEFAULT.
- tbl_name: задает имя таблицы, которая содержит столбец со значением по умолчанию.
- constraint_name: задает имя ограничения, которое требуется удалить.
Проверим, что ограничение было удалено:

Рассмотрим теперь оператор DROP DEFAULT. Он имеет следующий синтаксис:
где constraint_name задает имя ограничения, которое требуется удалить.
Чтобы удалить ограничение с помощью оператора DROP DEFAULT, выполните следующий запрос:
Надеюсь, что эта информация и практические примеры поможет в вашей работе.
SQL DEFAULT
Ограничение по умолчанию используется для предоставления значения по умолчанию для столбца.
Значение по умолчанию будет добавлено ко всем новым записям, если другое значение не указано.
DEFAULT в CREATE TABLE
Следующий SQL устанавливает значение по умолчанию для столбца "City" при создании таблицы "Persons":
My SQL / SQL Server / Oracle / MS Access:
Ограничение по умолчанию также можно использовать для вставки системных значений с помощью таких функций, как GETDATE():
DEFAULT в ALTER TABLE
Чтобы создать ограничение по умолчанию для столбца "City", когда таблица уже создана, используйте следующий SQL:
Ограничение DEFAULT с DROP
Чтобы удалить ограничение по умолчанию, используйте следующий SQL:
SQL Server / Oracle / MS Access:
Мы только что запустили
SchoolsW3 видео
ВЫБОР ЦВЕТА

Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат
SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.