SQL Server'da varolan bir tabloya varsay─▒lan de─čeri olan bir s├╝tun ekleme


Al─▒nan cevaba git


SQL Server 2000 / SQL Server 2005'te mevcut bir tabloya varsay─▒lan de─čeri olan bir s├╝tun nas─▒l eklenebilir ?


2616









Cevap say─▒s─▒n─▒ say: 30






S├Âzdizimi:

 ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
 

├ľrnek:

 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.
 

Notlar:

─░ste─če Ba─čl─▒ K─▒s─▒tlama Ad─▒: D─▒┼ča
├ž─▒karsan─▒z, CONSTRAINT D_SomeTable_SomeCol SQL Server,
    ┼čunun gibi komik bir Ad olan bir Varsay─▒lan Ba─č─▒ml─▒l─▒k olu┼čturacakt─▒r : DF__SomeTa__SomeC__4FB7FEF6

Opsiyonel With-De─čerler Beyan─▒: Yaln─▒zca S├╝tun null oldu─čunda gereklidir     ve De─čer Kay─▒tlar─▒ Mevcut kullan─▒lan varsay─▒lan istiyorum. S├╝tununuz varsa , o     zaman belirtmi┼č olsan─▒z da olmasan─▒z da , t├╝m Mevcut Kay─▒tlar i├žin Varsay─▒lan De─čeri otomatik olarak kullanacakt─▒r .
WITH VALUES

NOT NULL
WITH VALUES

Nas─▒l bir Standart-K─▒s─▒tlama ile ekler ├žal─▒┼čma:
E─čer i├žine a Record eklerseniz SomeTable ve do not belirtin SomeCol '─▒n de─čerini, o zaman i├žin Standart edecektir 0 .
Bir Record eklerseniz ve belirtme SomeCol olarak '─▒n de─čerini NULL (ve s├╝tunun bo┼č de─čerlere izin verir),
    ard─▒ndan Varsay─▒lan-K─▒s─▒tlama olacak de─čil kullan─▒lacak ve NULL De─čer olarak eklenecektir.

Notlar, a┼ča─č─▒daki herkesin m├╝kemmel geribildirimine dayan─▒yordu.
├ľzel te┼čekk├╝rler:
    @Yatrix, @WalterStabosz, @YahooSerious ve Yorumlar i├žin @StackMan.


3312







 ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
 

DEFAULT'un eklenmesi s├╝tunu varolan sat─▒rlara varsay─▒lan de─čerle doldurur , b├Âylece NOT NULL k─▒s─▒tlamas─▒ ihlal edilmez.


958







Bir eklerken null s├╝tun , WITH VALUES belirli bir varsay─▒lan de─čeri mevcut sat─▒r uygulan─▒r sa─člayacakt─▒r:

 ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES
 

224







 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
 

130







 ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'
 

121







Eklemekte oldu─čunuz s├╝tunun bir NOT NULL k─▒s─▒tlamas─▒ varsa, ancak bir DEFAULT k─▒s─▒tlamas─▒ (de─čeri) olmad─▒─č─▒nda dikkat edin . ALTER TABLE Tablo i├žinde herhangi bir sat─▒r varsa deyimi bu durumda ba┼čar─▒s─▒z olacakt─▒r. ├ç├Âz├╝m, NOT NULL k─▒s─▒tlamay─▒ yeni s├╝tundan kald─▒rmak ya da bunun i├žin bir DEFAULT k─▒s─▒tlama sa─člamakt─▒r .


96







Sadece iki sat─▒rl─▒ en basit versiyon

 ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0
 

96







kullan─▒n:

 -- Add a column with a default DateTime  
-- to capture when each record is added.

ALTER TABLE myTableName  
ADD RecordAddedDate smalldatetime NULL DEFAULT(GetDate())  
GO 
 

77







Birden fazla s├╝tun eklemek istiyorsan─▒z, bunu ┼ču ┼čekilde yapabilirsiniz:

 ALTER TABLE YourTable
    ADD Column1 INT NOT NULL DEFAULT 0,
        Column2 INT NOT NULL DEFAULT 1,
        Column3 VARCHAR(50) DEFAULT 'Hello'
GO
 

73







kullan─▒n:

 ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
 

Referans: ALTER TABLE (Transact-SQL) (MSDN)


54







T-SQL ile a┼ča─č─▒daki gibi yapabilirsiniz.

  ALTER TABLE {TABLENAME}
 ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
 CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
 

E─čer kullanabilirsiniz yan─▒ s─▒ra , SQL Server Management Studio'yu masaya varsay─▒lan de─čer olu┼čturmaya, Tasar─▒m men├╝s├╝nde sa─č t─▒klayarak tablo taraf─▒ndan da.

Ayr─▒ca, ayn─▒ s├╝tunu (yoksa) veritaban─▒ndaki t├╝m tablolara eklemek istiyorsan─▒z, a┼ča─č─▒dakileri kullan─▒n:

  USE AdventureWorks;
 EXEC sp_msforeachtable
'PRINT ''ALTER TABLE ? ADD Date_Created DATETIME DEFAULT GETDATE();''' ;
 

51







Mevcut bir veritaban─▒ tablosuna varsay─▒lan de─čeri olan bir s├╝tun eklemek i├žin ┼čunlar─▒ kullanabiliriz:

 ALTER TABLE [dbo.table_name]
    ADD [Column_Name] BIT NOT NULL
Default ( 0 )
 

Varsay─▒lan bir de─čere sahip mevcut bir veritaban─▒ tablosuna bir s├╝tun eklemenin ba┼čka bir yolu.

Varsay─▒lan de─čere sahip bir s├╝tun eklemek i├žin ├žok daha kapsaml─▒ bir SQL beti─či, s├╝tunun eklenmeden ├Ânce var olup olmad─▒─č─▒n─▒ kontrol etmeyi de i├žerir, ayr─▒ca s─▒n─▒rlamay─▒ kontrol eder ve varsa bir tane b─▒rakarak b─▒rakma. Bu komut ayn─▒ zamanda k─▒s─▒tlamay─▒ da adland─▒r─▒r, b├Âylece g├╝zel bir adland─▒rma kural─▒na sahip olabiliriz (DF_'yi severim) ve SQL de─čilse, bize rasgele olu┼čturulmu┼č bir say─▒ya sahip bir adla bir k─▒s─▒tlama getirecektir; bu y├╝zden k─▒s─▒tlamay─▒ da adland─▒rabilmek g├╝zel.

 -------------------------------------------------------------------------
-- 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
 

Bunlar, varsay─▒lan bir de─čere sahip mevcut bir veritaban─▒ tablosuna bir s├╝tun eklemenin iki yoludur.


50







SQL Server 2008-R2'de tasar─▒m moduna gidiyorum - bir test veritaban─▒nda - ve tasar─▒mc─▒y─▒ kullanarak iki s├╝tunu ekleyip ayarlar─▒ GUI ile yapt─▒m ve sonra rezil Right-Click" Geneti─či De─či┼čtirme Komut Dosyas─▒ Olu┼čtur "!

Bang up, tahmin edilebilece─či gibi i┼če yaramas─▒ garantili bir de─či┼čiklik senaryosuyla k├╝├ž├╝k bir pencere a├žar. Kolay d├╝─čmeye bas.


49


2011-12-01





Alternatif olarak, k─▒s─▒tlamay─▒ a├ž─▒k├ža adland─▒rmak zorunda kalmadan bir varsay─▒lan ekleyebilirsiniz:

 ALTER TABLE [schema].[tablename] ADD  DEFAULT ((0)) FOR [columnname]
 

Bu k─▒s─▒tlamay─▒ olu┼čtururken mevcut varsay─▒lan k─▒s─▒tlamalarla ilgili bir sorununuz varsa, bunlar ┼ču ┼čekilde kald─▒r─▒labilir:

 alter table [schema].[tablename] drop constraint [constraintname]
 

48







Bu, SSMS GUI'de de yap─▒labilir. A┼ča─č─▒da varsay─▒lan bir tarih g├Âsteriyorum, ancak varsay─▒lan de─čer ne olursa olsun elbette olabilir.

  1. Tablonuzu tasar─▒m g├Âr├╝n├╝m├╝ne yerle┼čtirin (Nesne explorer-> Tasar─▒m'da tabloya sa─č t─▒klay─▒n)
  2. Tabloya bir s├╝tun ekleyin (veya zaten varsa g├╝ncellemek istedi─činiz s├╝tuna t─▒klay─▒n)
  3. S├╝tun ├Âzellikleri a┼ča─č─▒da girmek (getdate()) ya abc ya 0 ya sen istedikleri de─čeri Standart De─čer veya Cilt a┼ča─č─▒daki resimde g├Âsterilen alana:


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


40







 ALTER TABLE ADD ColumnName {Column_Type} Constraint
 

ALTER TABLE (Transact-SQL) adl─▒ MSDN makalesinde , alter tablosu s├Âz diziminin t├╝m├╝ bulunmaktad─▒r.


38







├ľrnek:

 ALTER TABLE [Employees] ADD Seniority int not null default 0 GO
 

31


2014-03-05





├ľrnek:

 ALTER TABLE tes 
ADD ssd  NUMBER   DEFAULT '0';
 

23







─░lk ├Ânce name student ile bir tablo olu┼čturun:

 CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL)
 

Buna bir s├╝tun ekleyin:

 ALTER TABLE STUDENT 
ADD STUDENT_NAME INT NOT NULL DEFAULT(0)

SELECT * 
FROM STUDENT
 

Tablo olu┼čturulur ve varolan bir tabloya varsay─▒lan de─čeri olan bir s├╝tun eklenir.


Resim 1


21







Bunu dene

 ALTER TABLE Product
ADD ProductID INT NOT NULL DEFAULT(1)
GO
 

18







SQL Server + Tablo Alter + S├╝tun Ekle + Varsay─▒lan De─čer uniqueidentifier

 ALTER TABLE Product 
ADD ReferenceID uniqueidentifier not null 
default (cast(cast(0 as binary) as uniqueidentifier))
 

18







 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
 

18







Bunun ├žok fazla cevab─▒ var, ancak bu geni┼čletilmi┼č metodu eklememe ihtiya├ž duyuyorum. Bu ├žok daha uzun g├Âr├╝n├╝yor, ancak aktif bir veritaban─▒nda milyonlarca sat─▒r bulunan bir tabloya NOT NULL alan ekliyorsan─▒z son derece kullan─▒┼čl─▒d─▒r.

 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
 

Bunun yapaca─č─▒ ┼čey, s├╝tunu bo┼č bir alan olarak ve varsay─▒lan de─čerde eklemek, t├╝m alanlar─▒ varsay─▒lan de─čere g├╝ncellemektir (veya daha anlaml─▒ de─čerler atayabilirsiniz) ve son olarak s├╝tunu NOT NULL olacak ┼čekilde de─či┼čtirecektir.

Bunun nedeni, b├╝y├╝k ├Âl├žekli bir tabloyu g├╝ncellerseniz ve bo┼č olmayan yeni bir alan eklerseniz, her bir sat─▒ra yazmas─▒ gerekir ve bu ┼čekilde t├╝m tabloyu s├╝tunu ekledik├že kilitler ve ard─▒ndan t├╝m de─čerleri yazar.

Bu y├Ântem kendi ba┼č─▒na ├žok daha h─▒zl─▒ ├žal─▒┼čan null s├╝tununu ekler, daha sonra bo┼č olmayan durumu ayarlamadan ├Ânce verileri doldurur.

Her ┼čeyi tek bir a├ž─▒klamada yapman─▒n daha aktif tablolar─▒m─▒zdan birini 4-8 dakika boyunca kilitleyece─čini ve genellikle de i┼člemi ├Âld├╝rd├╝─č├╝m├╝ g├Ârd├╝m. Bu y├Ântem, her par├ža genellikle sadece birka├ž saniye s├╝rer ve minimum kilitlemeye neden olur.

Ek olarak, milyarlarca sat─▒rl─▒k bir tablonuz varsa, g├╝ncellemenin ┼ču ┼čekilde yap─▒lmas─▒ faydal─▒ olabilir:

 WHILE 1=1
BEGIN
    UPDATE TOP (1000000) {schemaName}.{tableName}
        SET {columnName} = {DefaultValue}
        WHERE {columName} IS NULL

    IF @@ROWCOUNT < 1000000
        BREAK;
END
 

16







 --Adding Value with Default Value
ALTER TABLE TestTable
ADD ThirdCol INT NOT NULL DEFAULT(0)
GO
 

16







Bir tabloya yeni bir s├╝tun ekleyin:

 ALTER TABLE [table]
ADD Column1 Datatype
 

├ľrne─čin,

 ALTER TABLE [test]
ADD ID Int
 

Kullan─▒c─▒ bunu otomatik olarak artt─▒rmak istiyorsa:

 ALTER TABLE [test]
ADD ID Int IDENTITY(1,1) NOT NULL
 

14







Bu, a┼ča─č─▒daki kod ile yap─▒labilir.

 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
 

11







Bu SQL Server i├žindir:

 ALTER TABLE TableName
ADD ColumnName (type) -- NULL OR NOT NULL
DEFAULT (default value)
WITH VALUES
 

├ľrnek:

 ALTER TABLE Activities
ADD status int NOT NULL DEFAULT (0)
WITH VALUES
 

K─▒s─▒tlamalar eklemek istiyorsan─▒z, o zaman:

 ALTER TABLE Table_1
ADD row3 int NOT NULL
CONSTRAINT CONSTRAINT_NAME DEFAULT (0)
WITH VALUES
 

11







 ALTER TABLE tbl_table ADD int_column int NOT NULL DEFAULT(0)
 

Bu sorgudan, varsay─▒lan de─čeri 0 olan bir veri t├╝r├╝ tamsay─▒ s├╝tunu ekleyebilirsiniz.


9







Varsay─▒lan de─čer Null ise:

  1. SQL Server'da, hedeflenen tablonun a─čac─▒n─▒ a├ž─▒n
  2. "S├╝tunlar" ─▒ sa─č t─▒klay─▒n ==> New Column
  3. S├╝tun ad─▒n─▒ yaz─▒n Select Type ve Null'lara izin ver onay kutusunu i┼čaretleyin.
  4. Men├╝ ├žubu─čundan, Save

Bitti!


8







Eh, ┼čimdi ├Ânceki cevab─▒mda baz─▒ de─či┼čiklikler var. Cevaplar─▒n hi├žbirinin bahsetmedi─čini fark ettim IF NOT EXISTS . Bu y├╝zden masay─▒ de─či┼čtirirken baz─▒ problemlerle kar┼č─▒la┼čt─▒─č─▒m i├žin yeni bir ├ž├Âz├╝m sunaca─č─▒m.

 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
 

─░┼čte TaskSheet belirli tablo ad─▒ ve IsBilledToClient ekleyece─činiz yeni s├╝tun ve 1 varsay─▒lan de─čer. Bu, yeni s├╝tunda, mevcut sat─▒rlar─▒n de─čerinin ne olaca─č─▒, dolay─▒s─▒yla otomatik olarak oraya otomatik olarak ayarlanaca─č─▒ anlam─▒na gelir. Ancak, kulland─▒─č─▒m s├╝tun t├╝r├╝ne g├Âre diledi─činiz gibi de─či┼čtirebilirsiniz BIT , bu y├╝zden varsay─▒lan 1 de─čerini koydum.

Yukar─▒daki sistemi ├Âneriyorum, ├ž├╝nk├╝ bir sorunla kar┼č─▒la┼čt─▒m. Peki sorun ne? Sorun, e─čer IsBilledToClient tablo tablosunda s├╝tun mevcutsa, o zaman a┼ča─č─▒da verilen kodun sadece bir k─▒sm─▒n─▒ ├žal─▒┼čt─▒r─▒rsan─▒z, SQL server Query olu┼čturucusunda bir hata g├Âreceksiniz. Ancak mevcut de─čilse, ilk kez y├╝r├╝t├╝l├╝rken hata olmaz.

 ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]
 

8



─░lgili yay─▒nlar


SQL Server'daki bir tablodan s├╝tun isimlerini nas─▒l alabilirim?

SQL Server'da bir tablo nas─▒l yeniden adland─▒r─▒l─▒r?

Mevcut bir s├╝tun i├žin varsay─▒lan de─čer nas─▒l ayarlan─▒r?

Rails ge├ži┼činde varolan bir tabloya s├╝tun ekleme

JavaScript'teki varolan bir diziye yeni de─čer ekleyin [duplicate]

SQL Server veritaban─▒ndaki t├╝m tetikleyicileri tablo ad─▒ ve tablo ┼čemas─▒ ile listelemeniz gerekir

PostgreSQL'de mevcut bir tablo i├žin ÔÇťtablo olu┼čturmaÔÇŁ sql deyimi nas─▒l olu┼čturulur?

PostgreSQL'de mevcut bir tabloya otomatik artan bir birincil anahtar nas─▒l eklenir?

SQL Server'da e┼čde─čeri yoksa, TABLO OLU┼×TUR [├žo─čalt]

SQL Server'da tablodan Xml de─čerleri ve ├Âznitelikleri sorgulamak nas─▒l?

Etiketle ilgili di─čer sorular [sql]


Bir s├Âzl├╝─č├╝ de─čerine g├Âre nas─▒l s─▒ralar─▒m?

@Staticmethod ve @classmethod aras─▒ndaki fark nedir?

Eclipse Android eklentilerinde ÔÇťHata ay─▒klama sertifikas─▒n─▒n s├╝resi dolduÔÇŁ hatas─▒

Ge├žerli Git ┼čubesini ana dal yap

Dal belirtilmeden varsay─▒lan "git push" davran─▒┼č─▒

Python'da yazmay─▒ denetlemenin kurall─▒ yolu nedir?

NP, NP-Complete ve NP-Hard aras─▒ndaki farklar nelerdir?

Nas─▒l stderr boru ve stdout de─čil?

Intents kullanarak bir Android Etkinli─činden di─čerine bir nesne nas─▒l g├Ânderilir?

(Bo┼č olmayan) kendi kendine kapanan etiketler HTML5'te ge├žerli midir?