Sql Komutlarından Create, Drop, Alter Add, Alter Drop, Alter Change, Alter After Komutlarının Tabloya Yada Veritabanına Uygulanması

Create Database : Veritabanı oluşturmak için kullanılır.

FileName   : Oluşturulacak veritabanı dosyasının kaydedileceği yer ve yolu. 
Size         : Veritabanı dosyasının boyutu.                
MaxSize    : Dosyanın maksimum alacağı değer.                
FileGrowth : Dosyasnın artma boyutu .

CREATE DATABASE Veritabanı_Adi
[ ON 
    <FILENAME> ,
    <SIZE>,                
    <MAXSIZE>,                    
    <FILEGROWTH>]
[ LOG  
    <FILENAME>,
    <SIZE>,                
    <MAXSIZE>,                    
    <FILEGROWTH > ]

Örnek: Yeni bir veritabanı ve onun log dosyasının yaratılması.

CREATE DATABASE cSharpNedir

ON (

NAME = cSharpNedir_dat,

FILENAME = �f:program filesmicrosoft sql servermssqldatacSharpNedirdat.mdf�,   

SIZE = 10MB,            

MAXSIZE = 50MB,      

FILEGROWTH = 5MB ) 

      LOG ON (

NAME = �cSharpNedir_log�,

FILENAME = �f:program filesmicrosoft sql servermssqldatacSharpNedirLog.ldf�, 

SIZE = 5MB, MAXSIZE = 25MB,

FILEGROWTH = 5MB )

Kod 1- Create database

Create Table : Veritabanı üzerinde tablo oluşturma  ve tablo ile ilgili özelliklerinin tanımlanması için kullanılır.  

CREATE TABLE  Tablo_Adi (

        Alan_Isimleri    Veri_Tipleri  [Default ifade]    [Alan Kısıtlaması]

       [Tablo_Kısıtlamalar ]

)    

Alan Ismi : Oluşturulacak kolona verilecek isim .

Veri_Tipler  : Oluşturduğumuz alanın veri tipi char, varchar, nvarchar, integer, decimal, double, datetime, text , vb. Bazı veri tipleri veritabanından veritabanına değişmektedir. Eğer veri karakter ise   char , varchar(karakter uzunluğu) vb,  çok uzun karakterler için text , sayı ise int , küsuratlı sayı ise decimal yada  double , tarih alanı için datetime gibi tipler kullanabilirsiniz.

Alan Kısıtlaması : İlgili alanın boş geçilip geçilemeyeceği durumu. NULL boş geçilebilir, NOT NULL boş geçilemez ilgili alana kayıt girmek zorundasınız.

Tablo_Kısıtlamaları : Tabloda yapacağımız kısıtlamalardır.  Primary Key, Foreing Key, Check lerdir.

Örnek : Departman isimli bir tablonun oluşturulması.

Bu örnekte dikkat edilecek kısımlar : Bir alanın otomatik olarak artmasını istiyorsak ilgili alan tanımlanırken alan kısıtlamasına IDENTITY (Başlangıç değeri , Kaçar kaçar artacağı)  ifadesinin eklenmesi gerek. Diğer bir husus alana ilk değer verme; DEFAULT () ifadesi ile alana ilk değer verilir.Eğer ilgli alan boş geçilirse yani değer atanmazsa ilk değeri atanacaktır. 

CREATE TABLE Departman

( DepartmanID int IDENTITY (1, 1) NOT NULL ,    //DepartmanId birden başlayıp birer birer otomatik olarak artacaktır.

DAdi nvarchar (20) DEFAULT(') ,                       //DAdi alanına değer atanmaması durumunda NULL değeri yerine ' (boşluk) atanması

KurulusTarihi smalldatetime NULL ,                   //smalldatetime t-sql özgu bir veri titpidir.Standarı DateTime 

CONSTRAINT PK_Departman PRIMARY KEY CLUSTERED ( DepartmanID )  //İlgili primary key tanımı

)

Kod 2- En yalın bicimde create tablo ifadesi

Örnek: Tabloda çeşitli kısıtlamalar (Constrains) oluştururulması.  Ve iki tablo arasında ikincil anahtarlar(foreing key) tanımlaması.

Bu örnekte dikkat edilecek kısımlar : Tekrarlanması istenmeyen alanların tekil (unique) tanımlanması. Bir alana belli değerler dışında değer girilmesi istenmiyorsa kısıtlama  CHECK (Alan=�Deger1� , Alan=�Deger2�, ...,Alana=2Deger2�)  olarak tanımlanmalıdır.

CREATE TABLE Personel (

PersonelId int NOT NULL ,

TCKimlikNo char (11) NOT NULL ,

Adi varchar (30) NOT NULL ,

Soyadi varchar (50) NOT NULL ,

Maas decimal(18, 2) NOT NULL DEFAULT (0), // Bu alana değer atanmaması durumunda ilk değer verme ile 0 değerini atanmış oldu

PDepartmanId int NOT NULL ,

Cinsiyet char (1) NULL ,  

CONSTRAINT PK_Personel PRIMARY KEY CLUSTERED(PersonelId), //Primary Key tanımı

CONSTRAINT IX_Personel UNIQUE CLUSTERED ( TCKimlikNo ) , //TC Kimlik numarasını istemiyoruz.

CONSTRAINT FK_Personel_Departman FOREIGN KEY (PDepartmanId) REFERENCES Departman (DepartmanID), //Başka bir tablodaki bir alanı referans vererek ikincil anahtar (foreing key) tanımlama

CONSTRAINT CK_Personel CHECK (Cinsiyet = �K� or Cinsiyet = �E�)  //Cinsiyet alanına �E� ve �K� değerleri dışında değer atanmaması

 )

Kod 3- Tabloda kısıtlamaların tanımlanması ve iki tablo arasında ilişki kurulması

Örnek : Personel tablosundaki bir personele ait mal bilgilerinin tutulacağı bir tablo oluşturalım. 

Bu örnekte dikkat edilecek kısımlar : Personel tablosunda bir personelin silinmesi durumunda PersonelMal tablosunda o personele ait bilgilerin silinmesi için uygun ikincil anahtar (foreing key) tanımlayalım. Bunlar

ON DELETE CASCADE : Referans edilen tablodaki kayıt yada kayıtların silinmesi durumunda referans alan tabloda ilişkili kayıtların da silinmesi .
ON UPDATE CASCADE : Referans edilen tablodaki kayıt yada kayıtların guncellenmesi durumunda referans alan tabloda ilişkili kayıtların da güncellenmesi.

Create View(Görünüm) :Fiziksel olarak olmayan fakat çeşitli sorgular sonucunda elde edilen verilerin sanal bir tablo olarak gösterilmesini sağlayan yapılar. Bu yapıların avantajı; veriye erişimi daha rahat kılmak ve kullanıcının asıl tablolarda değişiklik yapmasını engellemek. 

CREATE VIEW View_Adi AS Sorgu Cümlesi [View_Kısıtlaması]

View_Adı : View yapısına vereceğimiz isim

Sorgu_Cümlesi : View oluştururken kullanacağımız sorgu cümlesi

View_Kısıtlaması :View işleminde hata oluşması durumundaki davranış şekilleri .Bunlar [WITH CHECK OPTION CONSTRAINT] view yapısında hata olmasını engeller bir diğeri [WITH READ ONLY] View yapısınde sadece okuma yapılabileceğini belirtir. Bunun dışındaki durumlarda hata vermesini sağlar.

Örnek: Belli bir departmanda maaşı 1200 den küçük olan personelin maaşını 25 ile toplayıp yeni bir maaş hesaplayan bir view oluşturma. Burda kullanmış  olduğumuz select ve  inner join terimlerini daha sonra ayrıntılı olarak inceleyeceğiz.

CREATE VIEW YeniMaas  AS

SELECT TCKimlikNo, Adi, Soyadi, (Maas + 25) as Y_Maas  //as Yardımcı terimi ile (Maas+ 25) de oluşacak sonuca yeni isim veriyoruz

FROM Personel

INNER JOIN Departman ON DepartmanId = PDepartmanId  // Departman ve Personel tabloları arasındaki birleştirme işlemi

WHERE Maas < 1200 AND PDepartmanId= 1

WITH CHECK OPTION CONSTRAINT ck_YeniMaas  //  View de hata olmasını engelleyen ilgili kısıtlama

Kod 5- Create View

Create Index : Tabloda bulunan belirli sutunlardaki değerlere hızlı erişim için kullanılan sıralama tekniği .Ayrıca indexin tekil (unique) özelliği verilerek sutundaki verinin tekrarlanmasını önler.  Örneğin birincil anahtarlar (primary key) da aslında bir indextirler. Tanımlama işlemi yapılırken otomatik olarak indexlenirler.

CREATE INDEX Index_Adi ON Tablo_Adi(Alanlar)

Tablo_Adi : Indexi tanımlayacağımız tablo adı.

Alanlar : İlgili tablodaki indexleyeceğimiz alan isimleri

CREATE INDEX Ix_Personel_AdSoyad ON Personle(Adi, Soyadi); // Indek oluştururur. Erişimde kolaylık sağlar.

CREATE INDEX Ix_Personel_TCKimlik ON PERSONLE (TCKimlikNo ) UNIQUE // Unique .İlgili alanın tekrarlanmasını önler


ALTER KOMUTU : Veritabanında var olan nesneler üzerinde yapılacak değişiklikler için kullanılan komuttur.Yeni tasarlanan bir veritabanında değişiklik yapmak çok güç değildir. Çünkü içindeki veriler az yada test amaçlıdır. Ama yaşayan bir veritabanında değişklik yapmak ciddi sorumluluklar ister. Verilin yok olmaması için çok dikkatli olmak gerekir. Bu konuda Alter ifadesi oldukça kolaylık sağlar.

Alter Table : Tablonun yapısı ile ilgili bilgilerin değiştirilmesi. Bazı durumlarda var olan tabloya yeni alan ekleyebilir, alan silebilir, alan adı değiştirebilir yada ilgili kısıtlamaları silebiliriz.

Tablo adı değiştirme : Birinci şekil standart SQL deki gösterimidir. Fakat T-SQL de bu işlem biraz daha farklıdır. Bunun için master tablosunda tanımlanmış olan SP_RENAME saklı yordamından (stored procedur) faydalanmak zorundasınız . Buda ikinci şekildeki gibidir

1 _ ALTER TABLE Tablo_Adı TO Yeni_Tablo_Adı    

2_ EXEC SP_RENAME ’Tablo_Adı’, ’Yeni_Tablo_Adı’ ;

ALTER  TABLE   Personel  TO  Yeni_Personel                   // Standart SQL

EXEC  SP_RENAME  ’Personel’,  ’Yeni_Personle’             // SQL Server T-SQL

Tabloya alan ekleme ve silme:

ALTER TABLE Tablo_Adı   ADD     Alan_Adı    Veri_Tip    Yeni alan ekleme.

ALTER TABLE Tablo_Adı   DROP COLUMN    Alan_Adı      Var olan alanı silme.       

ALTER TABLE   Personel ADD CocukSayisi  int;     

ALTER TABLE   Personel DROP COLUMN   CocukSayisi    

Tablodaki alan veri tipi değiştirme: Kolon veri tipi değiştirilirken veri kaybı olmaması ve hata alınmaması için mantıklı tür dönüşümleri yapılmalı. Alanın veri tipi int iken varchar yapılırsa tür dönüşümü yapılır ve veri kaybı olmaz. Ayrıca varchar ise ve içerisinde  sadece sayı karakterleri tutulmuş ise sayı tür dönüşümü ile dönüştürülür ama sayı dışında da karakterler varsa hata ile karşılaşırsınız.

ALTER TABLE Tablo_Adi ALTER COLUMN Alan_Adi Yeni_Veri_Tipi 

ALTER TABLE Personle ALTER COLUMN    CocukSayisi    char(10)    

Tabloya kısıtlama ekleme ve silme : Özellikle iki tablo arasındaki ikincil anahtarları (foreing key) silerken dikkat edilecek en önemli nokta ilişkinin hangi tablodan hangi tabloya referans verildiğidir.

ALTER TABLE Tablo_Adı   ADD CONSTRAINT  Kısıtlama_Adı   Kısıtlamanın_Ozellikleri    Yeni kısıtlama ekleme.

ALTER TABLE Tablo_Adı   DROP CONSTRAINT Kısıtlamanını_Adı                               Var olan kısıtlamayı silme

ALTER   TABLE PersonelMal    ADD    CONSTRAINT    FK_PersonelMal_Personel_N    FOREIGN KEY (PPersonelId) REFERENCES Personel (PersonelId) ON DELETE CASCADE                                                                            // PersonelMal Tablosununa foreing key ekleme

ALTER   TABLE   PersonelMal   DROP CONSTRAINT   FK_PersonelMal_Personel_N    // Kısıtlamayı silme

Alan İsmi değiştirme: İsim değiştirme işlemleri standart SQL ’ de RENAME parametresi ile yapılır. Ama T-SQL’de tablo ismi değiştirmede olduğu gibi SP_RENAME  saklı yordamı ile yapılır.

ALTER TABLE Tablo_Adı  RENAME  Alan_Adı TO Yeni_Alan_Adı               Standart SQL ’ de 

EXEC SP_RENAME ’Tablo_Adı.Alan_Adı’,  ’Yeni_Alan_Adı’, ’Nesne_Tipi’      T-SQL ’ de

Nesne_Tipi  : SP_RENAME saklı yordamı(stored procedur) değiştirilecek nesnenin tipini belirtir. Bunlar DATABASE, TABLO, VIEW, COLUMN, OBJECT(CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY) , vb dir. Alan isimleri tablolara özel nesnelerdir. Her tabloda Adi diye bir alan tanımlayabilirsiniz. Ama tablo isimleri, constrainler , stored procedurler, trigerlar yani SQL Serverda sysobjects sistem tablosuna kaydedilen nesnelerin ismi tekildir. Bunların ismi değiştirilirken Nesne_Tipi parametresine ’object’ yazılması gerek.

ALTER TABLE Sicil RENAME PersonelSicilNo TO SicilNo                            //Standart sql

EXEC SP_RENAME ’Sicil.PersonelSicilNo’,  ’SicilNo’, ’Column’                   // t-sql

EXEC SP_RENAME ’myView’, ’MaasBordrosu’,’Object’                            // View İsmi değiştirme

EXEC SP_RENAME ’FK_PersonelMal_Personel’, ’FK_PM_P’,’Object’        // Foreing key ismi değiştirme

Alter View : Görünüm değiştirme. Görünüm değiştirme de tanımlama da olan standartlar geçerlidir. Bu tür yapılar üzerlerinde veri tutmadıkları ve sadece çalıştıkları zaman oluştuğu için değişiklik yapmak daha rahattır.

CREATE VIEW    V_Maas     AS

      SELECT PersonelId, (Adi + ’ ’ + Soyadi) as AdSoyad, Maas FROM Personle ;                                   // View oluşturduk

ALTER VIEW    V_Maas     AS

     SELECT PersonelId, (Adi + ’ ’ + Soyadi) as AdSoyad, Maas FROM Personle  WHERE Adi like(’A%’);   // View değiştirdik.Burda yaptığımız değişiklik sadece sorgumuza koşul ekledik. Adı A ile başlayan personellerinkini getirsin.

DROP KOMUTU: Databasede buluna nesnelerin silinmesi için kullanılan komuttur.

DROP DATABASE Veritabanı_Adı     Database silme

DROP TABLE Tablo_Adı                Tablo silme

DROP VIEW View_Adı                  View silme

DROP INDEX Index_Adı                Index silme

DROP DATABASE cSharpNedir

DROP TABLE Personle

DROP VIEW myView

DROP INDEX Ix_Personel

 

Yorumunuzu Ekleyin
Sql Komutlarından Create, Drop, Alter Add, Alter Drop, Alter Change, Alter After Komutlarının Tabloya Yada Veritabanına Uygulanması Yorumları +1 Yorum
  • dangerq
    1
    dangerq
    anlamayanlar olabilir ama çok faydalı bir bilqi saoLun Arkdşlar
    05 Nisan 2010 08:21:52, Pazartesi


Yükleniyor...
Yükleniyor...