Как я могу добавить столбец со значением по умолчанию в существующую таблицу в SQL Server 2000 / SQL Server 2005?


ALTER TABLE ADD ColumnName {Column_Type} Constraint
Статья MSDN ИЗМЕНИТЬ ТАБЛИЦУ (Transact-SQL) содержит весь синтаксис таблицы изменений.
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
Включение ДЕФОЛТ заполняет столбец в строках существующий значением по умолчанию, поэтому ограничение NOT NULL не нарушается.
Проблема с этим ответом в том, что значение по умолчанию действительно только для новых записей. Существующие записи по-прежнему будут иметь значение NULL.
Вы обнаружите, что это не так. В противном случае ограничение будет нарушено.
Столбцы в существующих строках заполняются значением по умолчанию. Это докажет небольшой эмпирический тест.
Просто чтобы уточнить - если в команде опущено "NOT NULL", значение для существующих строк НЕ будет обновлено и останется NULL. Если в команду включено "NOT NULL", значение существующих строк БУДЕТ обновлено, чтобы соответствовать значениям по умолчанию.
Для нескольких столбцов ALTER TABLE table_1 ADD col_1 int NOT NULL DEFAULT (1), col_2 int NULL
--Чтобы сделать ADD повторно запускаемым (например, если столбец уже существует) ... ЕСЛИ НЕ СУЩЕСТВУЕТ (SELECT * FROM sys.columns WHERE [name] = N '<InsertFieldName>' AND [object_id] = OBJECT_ID (N ' <InsertTableName> ')) BEGIN ALTER TABLE <InsertTableName> ADD <InsertFieldName> ... END
Присвоение имени вашему ограничению вместо автоматического присвоения имени SQL сделает вашу схему более удобной в обслуживании. Некоторые примеры ниже ОГРАНИЧЕНИЕ Имя_ограничения ПО УМОЛЧАНИЮ 0 СО ЗНАЧЕНИЯМИ
Имейте в виду, что если вы используете этот метод, у вас будет DEFAULT, прикрепленный к вашей таблице, так что будущие инструкции Insert, которые пропускают ваш новый столбец, будут иметь значение по умолчанию, а не сбой. Если ваша цель состоит в том, чтобы продвигаться вперед, вы ДОЛЖНЫ указать значение, и вы не хотите использовать значение по умолчанию, убедитесь, что вы отказались от значения по умолчанию, которое вы создали после успешного добавления столбца.
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
Необязательное имя ограничения:
Если вы не укажете CONSTRAINT D_SomeTable_SomeCol, SQL Server автоматически сгенерирует
.
Контракт по умолчанию с забавным именем вроде: DF__SomeTa__SomeC__4FB7FEF6
Необязательное заявление со значениями:WITH VALUES необходим только тогда, когда ваш столбец имеет значение Nullable
, и вы хотите, чтобы значение по умолчанию использовалось для существующих записей.
Если ваш столбец NOT NULL, он автоматически будет использовать значение по умолчанию
.
для всех существующих записей, независимо от того, указываете вы WITH VALUES или нет.
Как вставки работают с ограничением по умолчанию:
Если вы вставляете запись в SomeTable и выполняете нет Specify SomeCol's value, то по умолчанию будет 0.
.
Если вы вставляете запись и Укажите значение SomeCol как NULL (и ваш столбец допускает нули),
, тогда будет использоваться ограничение по умолчанию нет, а NULL будет вставлен в качестве значения.
Примечания были основаны на замечательных отзывах всех, представленных ниже.
Особая благодарность:
@Yatrix, @WalterStabosz, @YahooSerious и @StackMan за их комментарии.
Имейте в виду, что если столбец допускает значение NULL, то значение NULL будет использоваться для существующих строк.
@RichardCollette, что является столбцом, допускающим значение NULL. Если мой тип данных - int или varchar, он всегда принимает значение ноль для существующих строк, даже если я указываю значение по умолчанию. Означает ли это, что значение по умолчанию распространяется только на новые записи?
@Thecrocodilehunter Столбец, допускающий значение NULL, означает, что вы можете вставить значение Null в качестве значения столбца. Если это не столбец, допускающий значение NULL, вам необходимо вставить какое-то значение этого типа данных. Таким образом, для существующих записей в них будет вставлен Null, а в новые записи будет вставлено ваше значение по умолчанию, если не указано иное. Есть смысл?
Мне этот ответ нравится немного больше, чем ответ dbugger, потому что он явно называет ограничение по умолчанию. Ограничение по умолчанию по-прежнему создается с использованием синтаксиса dbugger, за исключением того, что его имя генерируется автоматически. Знать точное имя удобно при написании скриптов DROP-CREATE.
Это не так. Если вы укажете значение по умолчанию с помощью ограничения DEFAULT, оно будет использоваться как значение для существующих строк, по крайней мере, в SQL Server 2008.
@Vertigo Это верно ТОЛЬКО для столбца NOT NULL. Попробуйте следующее: create table blah(a int not null primary key clustered); insert blah values (1), (2); alter table blah add b int null constraint df_blah_b default (0); select * from blah;. Вы увидите 2 значения NULL для столбца b.
Измените столбец на NOT NULL со значением DEFAULT. Затем с помощью второго запроса сделайте столбец допускающим значение NULL. Задача решена. 1-й запрос добавляет значения по умолчанию. 2-й позволяет разрешить нули в будущем.
Используйте WITH VALUES для обновления существующих строк, допускающих значение NULL. См. MSDN: «Если добавленный столбец допускает нулевые значения и указан WITH VALUES, значение по умолчанию сохраняется в новом столбце и добавляется к существующим строкам».
Имейте в виду, что вам придется перекомпилировать все представления и сохраненные процедуры, которые содержат SELECT {TABLENAME}. *, {ANOTHER TABLE} .Field1 FROM {TABLENAME} JOIN {ANOTHER TABLE} ON ...
Не забывайте, что если у вас есть процедура хранения, которая вставляет данные в эту таблицу, она завершится ошибкой, если вы не укажете значение по умолчанию для нового столбца. Потому что новый столбец не будет представлен в операторе вставки.
ALTER TABLE <table name>
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name>
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO
Это не сработает, если в таблице уже есть содержимое, потому что новый столбец «не допускающий значения NULL» создается до ограничения значения по умолчанию.
Будьте осторожны, когда добавляемый столбец имеет ограничение NOT NULL, но не имеет ограничения (значения) DEFAULT. Оператор ALTER TABLE завершится ошибкой в том случае, если в таблице есть какие-либо строки. Решение состоит в том, чтобы либо удалить ограничение NOT NULL из нового столбца, либо предоставить для него ограничение DEFAULT.
какой-нибудь Образец SQL об этом?
Использовать:
-- Add a column with a default DateTime
-- to capture when each record is added.
ALTER TABLE myTableName
ADD RecordAddedDate SMALLDATETIME NULL DEFAULT (GETDATE())
GO
При добавлении столбец, допускающий значение NULLWITH VALUES гарантирует, что конкретное значение DEFAULT применяется к существующим строкам:
ALTER TABLE table
ADD column BIT -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES
Это ключевой момент. Легко предположить, что столбец с ограничением DEFAULT всегда будет иметь значение, то есть не иметь значение NULL, даже если NOT NULL не указан.
@tkocmathla эээ, я не говорил о типе данных BIT, я говорил об этом конкретном BITстолбец. Посмотрите ответ, столбец объявлен как NOT NULL.
Вы можете сделать это с помощью T-SQL следующим образом.
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
Вы также можете использовать SQL Server Management Studio, щелкнув правой кнопкой мыши таблицу в меню «Дизайн», установив значение по умолчанию для таблицы.
И, кроме того, если вы хотите добавить один и тот же столбец (если он не существует) во все таблицы в базе данных, используйте:
USE AdventureWorks;
EXEC sp_msforeachtable
'PRINT ''ALTER TABLE ? ADD Date_Created DATETIME DEFAULT GETDATE();''' ;
В SQL Server 2008-R2 я перехожу в режим разработки - в тестовую базу данных - и добавляю два столбца с помощью конструктора и выполняю настройки с помощью графического интерфейса, а затем печально известный Right-Click дает параметр «Создать сценарий изменения»!
Вы догадались, что на экране появится небольшое окошко с правильно отформатированным сценарием гарантированно работающего изменения. Нажмите простую кнопку.
Использовать:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
Ссылка: ИЗМЕНИТЬ ТАБЛИЦУ (Transact-SQL) (MSDN)
Самая простая версия с двумя строками
ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0
В качестве альтернативы вы можете добавить значение по умолчанию без явного указания ограничения:
ALTER TABLE [schema].[tablename] ADD DEFAULT ((0)) FOR [columnname]
Если при создании этого ограничения у вас возникла проблема с существующими ограничениями по умолчанию, их можно удалить:
alter table [schema].[tablename] drop constraint [constraintname]
К вашему сведению, явное указание ограничения с использованием стандартной схемы именования (например, «DF_Table_Column») для простоты обслуживания. В противном случае для поиска ограничения потребуется больше работы.
ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'
это add null! должно быть не null перед
@baaroz, это работает с NOT NULL: ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR (200) NOT NULL DEFAULT 'SNUGGLES'
Пример:
ALTER TABLE [Employees] ADD Seniority int not null default 0 GO
Чтобы добавить столбец в существующую таблицу базы данных со значением по умолчанию, мы можем использовать:
ALTER TABLE [dbo.table_name]
ADD [Column_Name] BIT NOT NULL
Default ( 0 )
Вот еще один способ добавить столбец в существующую таблицу базы данных со значением по умолчанию.
Ниже приведен гораздо более подробный сценарий SQL для добавления столбца со значением по умолчанию, включая проверку наличия столбца перед его добавлением, а также проверку ограничения и его удаление, если оно есть. Этот сценарий также называет ограничение, чтобы у нас было хорошее соглашение об именах (мне нравится DF_), и если нет, SQL предоставит нам ограничение с именем, которое имеет случайно сгенерированное число; так что приятно иметь возможность назвать ограничение тоже.
-------------------------------------------------------------------------
-- Drop COLUMN
-- Name of Column: Column_EmployeeName
-- Name of Table: table_Emplyee
--------------------------------------------------------------------------
IF EXISTS (
SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table_Emplyee'
AND COLUMN_NAME = 'Column_EmployeeName'
)
BEGIN
IF EXISTS ( SELECT 1
FROM sys.default_constraints
WHERE object_id = OBJECT_ID('[dbo].[DF_table_Emplyee_Column_EmployeeName]')
AND parent_object_id = OBJECT_ID('[dbo].[table_Emplyee]')
)
BEGIN
------ DROP Contraint
ALTER TABLE [dbo].[table_Emplyee] DROP CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]
PRINT '[DF_table_Emplyee_Column_EmployeeName] was dropped'
END
-- ----- DROP Column -----------------------------------------------------------------
ALTER TABLE [dbo].table_Emplyee
DROP COLUMN Column_EmployeeName
PRINT 'Column Column_EmployeeName in images table was dropped'
END
--------------------------------------------------------------------------
-- ADD COLUMN Column_EmployeeName IN table_Emplyee table
--------------------------------------------------------------------------
IF NOT EXISTS (
SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table_Emplyee'
AND COLUMN_NAME = 'Column_EmployeeName'
)
BEGIN
----- ADD Column & Contraint
ALTER TABLE dbo.table_Emplyee
ADD Column_EmployeeName BIT NOT NULL
CONSTRAINT [DF_table_Emplyee_Column_EmployeeName] DEFAULT (0)
PRINT 'Column [DF_table_Emplyee_Column_EmployeeName] in table_Emplyee table was Added'
PRINT 'Contraint [DF_table_Emplyee_Column_EmployeeName] was Added'
END
GO
Это два способа добавить столбец в существующую таблицу базы данных со значением по умолчанию.
Попробуй это
ALTER TABLE Product
ADD ProductID INT NOT NULL DEFAULT(1)
GO
Если вы хотите добавить несколько столбцов, вы можете сделать это, например:
ALTER TABLE YourTable
ADD Column1 INT NOT NULL DEFAULT 0,
Column2 INT NOT NULL DEFAULT 1,
Column3 VARCHAR(50) DEFAULT 'Hello'
GO
Пример:
ALTER TABLE tes
ADD ssd NUMBER DEFAULT '0';
SQL Server + Изменить таблицу + Добавить столбец + Уникальный идентификатор значения по умолчанию
ALTER TABLE Product
ADD ReferenceID uniqueidentifier not null
default (cast(cast(0 as binary) as uniqueidentifier))
SQL Server + Изменить таблицу + Добавить столбец + Уникальный идентификатор значения по умолчанию ...
ALTER TABLE [TABLENAME] ADD MyNewColumn INT not null default 0 GO
Это также можно сделать в графическом интерфейсе SSMS. Я показываю дату по умолчанию ниже, но значение по умолчанию, конечно, может быть любым.
(getdate()), 'abc' или 0 или любое другое значение в поле Значение по умолчанию или привязка, как показано ниже:Добавьте в таблицу новый столбец:
ALTER TABLE [table]
ADD Column1 Datatype
Например,
ALTER TABLE [test]
ADD ID Int
Если пользователь хочет, чтобы он увеличивался автоматически, тогда:
ALTER TABLE [test]
ADD ID Int IDENTITY(1,1) NOT NULL
IF NOT EXISTS (
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME ='TABLENAME' AND COLUMN_NAME = 'COLUMNNAME'
)
BEGIN
ALTER TABLE TABLENAME ADD COLUMNNAME Nvarchar(MAX) Not Null default
END
Мне нравится проверка NOT EXISTS, прежде чем пытаться изменить таблицу. Очень хорошее решение. Некоторые дополнительные комментарии о том, как это работает, сделали бы его еще более полезным.
Если значение по умолчанию Null, то:
New Column.Select Type и установите флажок Разрешить пустые значения.Save.Выполнено!
ALTER TABLE tbl_table ADD int_column int NOT NULL DEFAULT(0)
Из этого запроса вы можете добавить столбец целочисленного типа данных со значением по умолчанию 0.
Это можно сделать с помощью приведенного ниже кода.
CREATE TABLE TestTable
(FirstCol INT NOT NULL)
GO
------------------------------
-- Option 1
------------------------------
-- Adding New Column
ALTER TABLE TestTable
ADD SecondCol INT
GO
-- Updating it with Default
UPDATE TestTable
SET SecondCol = 0
GO
-- Alter
ALTER TABLE TestTable
ALTER COLUMN SecondCol INT NOT NULL
GO
Что ж, теперь у меня есть некоторые изменения в моем предыдущем ответе. Я заметил, что ни в одном из ответов не упоминается IF NOT EXISTS. Итак, я собираюсь предложить новое решение, так как я столкнулся с некоторыми проблемами при изменении таблицы.
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.columns WHERE table_name = 'TaskSheet' AND column_name = 'IsBilledToClient')
BEGIN
ALTER TABLE dbo.TaskSheet ADD
IsBilledToClient bit NOT NULL DEFAULT ((1))
END
GO
Здесь TaskSheet - это конкретное имя таблицы, IsBilledToClient - новый столбец, который вы собираетесь вставить, а 1 - значение по умолчанию. Это означает, что в новом столбце будет значение существующих строк, поэтому оно будет установлено автоматически. Однако вы можете изменить тип столбца по своему усмотрению, как я использовал BIT, поэтому я установил значение по умолчанию 1.
Я предлагаю описанную выше систему, потому что столкнулся с проблемой. Так в чем проблема? Проблема в том, что если столбец IsBilledToClient существует в таблице таблицы, то, если вы выполните только часть кода, приведенного ниже, вы увидите ошибку в построителе запросов SQL-сервера. Но если его нет, то в первый раз при выполнении не будет ошибки.
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]
Вы можете использовать этот запрос:
ALTER TABLE tableName ADD ColumnName datatype DEFAULT DefaultValue;
Здесь много ответов, но я чувствую необходимость добавить этот расширенный метод. Кажется, что это намного больше, но это чрезвычайно полезно, если вы добавляете поле NOT NULL в таблицу с миллионами строк в активной базе данных.
ALTER TABLE {schemaName}.{tableName}
ADD {columnName} {datatype} NULL
CONSTRAINT {constraintName} DEFAULT {DefaultValue}
UPDATE {schemaName}.{tableName}
SET {columnName} = {DefaultValue}
WHERE {columName} IS NULL
ALTER TABLE {schemaName}.{tableName}
ALTER COLUMN {columnName} {datatype} NOT NULL
Что это будет делать, так это добавить столбец как поле, допускающее значение NULL, и со значением по умолчанию, обновить все поля до значения по умолчанию (или вы можете назначить более значимые значения), и, наконец, он изменит столбец на NOT NULL.
Причина этого в том, что если вы обновляете крупномасштабную таблицу и добавляете новое ненулевое поле, которое оно должно записывать в каждую отдельную строку, и тем самым блокирует всю таблицу, поскольку она добавляет столбец, а затем записывает все значения.
Этот метод добавит столбец, допускающий значение NULL, который работает намного быстрее сам по себе, а затем заполнит данные перед установкой состояния not NULL.
Я обнаружил, что выполнение всего этого в одном операторе блокирует одну из наших наиболее активных таблиц на 4-8 минут, и довольно часто я убивал процесс. Этот метод для каждой части обычно занимает всего несколько секунд и вызывает минимальную блокировку.
Кроме того, если у вас есть таблица, состоящая из миллиардов строк, возможно, стоит выполнить пакетное обновление следующим образом:
WHILE 1=1
BEGIN
UPDATE TOP (1000000) {schemaName}.{tableName}
SET {columnName} = {DefaultValue}
WHERE {columName} IS NULL
IF @@ROWCOUNT < 1000000
BREAK;
END
Щелкните правой кнопкой мыши имя таблицы и нажмите Дизайн, щелкните под последним именем столбца и введите Имя столбца, Тип данных, Разрешить пустые значения.
Затем внизу страницы установите значение по умолчанию или привязка: что-то вроде '1' для строки или 1 для int.
шаг 1. СНАЧАЛА ВЫ ДОЛЖНЫ ИЗМЕНИТЬ ТАБЛИЦУ, ДОБАВИТЬ ПОЛЕ
alter table table_name add field field_name data_type
шаг 2 СОЗДАТЬ ПО УМОЛЧАНИЮ
USE data_base_name;
GO
CREATE DEFAULT default_name AS 'default_value';
step-3 ТОГДА ВЫ ДОЛЖНЫ ВЫПОЛНИТЬ ДАННУЮ ПРОЦЕДУРУ
exec sp_bindefault 'default_name' , 'schema_name.table_name.field_name'
пример -
USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';
Это для SQL Server:
ALTER TABLE TableName
ADD ColumnName (type) -- NULL OR NOT NULL
DEFAULT (default value)
WITH VALUES
Пример:
ALTER TABLE Activities
ADD status int NOT NULL DEFAULT (0)
WITH VALUES
Если вы хотите добавить ограничения, то:
ALTER TABLE Table_1
ADD row3 int NOT NULL
CONSTRAINT CONSTRAINT_NAME DEFAULT (0)
WITH VALUES
Это не добавляет ценности по сравнению с уже существующими ответами много лет назад.
--Adding Value with Default Value
ALTER TABLE TestTable
ADD ThirdCol INT NOT NULL DEFAULT(0)
GO
Может быть, заменить изображение реальным кодом? Трудно скопировать и вставить как есть.
Это не добавляет ценности по сравнению с уже существующими ответами много лет назад.
ALTER TABLE Table1 ADD Col3 INT NOT NULL DEFAULT(0)
Это не добавляет ценности по сравнению с уже существующими ответами много лет назад.
--Adding New Column with Default Value
ALTER TABLE TABLENAME
ADD COLUMNNAME DATATYPE NULL|NOT NULL DEFAULT (DEFAULT_VALUE)
ИЛИ ЖЕ
--Adding CONSTRAINT And Set Default Value on Column
ALTER TABLE TABLENAME ADD CONSTRAINT [CONSTRAINT_Name] DEFAULT
(DEFAULT_VALUE) FOR [COLUMNNAME]
Это не добавляет ценности по сравнению с уже существующими ответами.
Попробуйте выполнить следующий запрос:
ALTER TABLE MyTable
ADD MyNewColumn DataType DEFAULT DefaultValue
Это добавит новый столбец в таблицу.
этот ответ, данный другим пользователем на этот вопрос
В SQL Server вы можете использовать следующий шаблон:
ALTER TABLE {tablename}
ADD
{columnname} {datatype} DEFAULT {default_value}
Например, чтобы добавить новый столбец [Column1] типа данных int со значением по умолчанию = 1 в существующую таблицу [Table1], вы можете использовать следующий запрос:
ALTER TABLE [Table1]
ADD
[Column1] INT DEFAULT 1
ALTER table dataset.tablename ДОБАВИТЬ column_current_ind целое число ПО УМОЛЧАНИЮ 0
OFFLINE и ONLINE относятся к тому, как ALTER table выполняется в таблицах кластера NDB.
Кластер NDB поддерживает оперативные операции ALTER TABLE с использованием синтаксиса ALGORITHM = INPLACE в MySQL NDB Cluster 7.3 и более поздних версиях. NDB Cluster также поддерживает более старый синтаксис, специфичный для NDB, в котором используются ключевые слова ONLINE и OFFLINE. Эти ключевые слова считаются устаревшими, начиная с MySQL NDB Cluster 7.3; они по-прежнему поддерживаются в MySQL NDB Cluster 7.4, но подлежат удалению в будущей версии NDB Cluster.
IGNORE относится к тому, как оператор ALTER будет обрабатывать повторяющееся значение в столбце, в который добавлено новое ограничение UNIQUE. Если IGNORE не указан, ALTER завершится ошибкой и не будет применен. Если указано IGNORE, первая строка из всех повторяющихся строк сохраняется, сброс удаляется и применяется ALTER.
ALTER_SPECIFICATION - это то, что вы меняете. какой столбец или индекс вы добавляете, удаляете или изменяете, или какие ограничения вы применяете к столбцу.
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
...
ADD [COLUMN] (col_name column_definition,...)
...
Eg: ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;
ALTER TABLE <YOUR_TABLENAME>
ADD <YOUR_COLUMNNAME> <DATATYPE> <NULL|NOT NULL>
ADD CONSTRAINT <CONSTRAINT_NAME> ----OPTIONAL
DEFAULT <DEFAULT_VALUE>
Если вы не указываете имя ограничения, тогда сервер sql использует для этого имя по умолчанию.
Пример:-
ALTER TABLE TEMP_TABLENAME
ADD COLUMN1 NUMERIC(10,0) NOT NULL
ADD CONSTRAINT ABCDE ----OPTIONAL
DEFAULT (0)
и этот тоже w3schools.com/sql/sql_alter.asp