Veri Tabanı : Sql Komutlarından Create, Drop, Alter

Transkript

Veri Tabanı : Sql Komutlarından Create, Drop, Alter
Sql Komutlarından Create, Drop, Alter Add, Alter Drop, Alter Change, Alter After Komutlarının Tabloya Yada
Veritabanına Uygulanması
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ı
)
www.dijitalders.com
Kod 2- En yalın bicimde create tablo ifadesi
Sql Komutlarından Create, Drop, Alter
Add, Alter Drop, Alter Change, Alter
After Komutlarının Tabloya Yada
Veritabanına Uygulanması
1
Sql Komutlarından Create, Drop, Alter Add, Alter Drop, Alter Change, Alter After Komutlarının Tabloya Yada
Veritabanına Uygulanması
Ö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ı
www.dijitalders.com
Sql Komutlarından Create, Drop, Alter
Add, Alter Drop, Alter Change, Alter
After Komutlarının Tabloya Yada
Veritabanına Uygulanması
2
Sql Komutlarından Create, Drop, Alter Add, Alter Drop, Alter Change, Alter After Komutlarının Tabloya Yada
Veritabanına Uygulanması
2_ EXEC SP_RENAME ’Tablo_Adı’, ’Yeni_Tablo_Adı’ ;
ALTER TABLE Personel TO Yeni_Personel
EXEC SP_RENAME ’Personel’, ’Yeni_Personle’
// Standart SQL
// SQL Server T-SQL
Tabloya alan ekleme ve silme:
ALTER TABLE Tablo_Adı ADD
Alan_Adı
ALTER TABLE Tablo_Adı DROP COLUMN
Veri_Tip
Alan_Adı
Yeni alan ekleme.
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
ALTER TABLE Tablo_Adı DROP CONSTRAINT Kısıtlamanını_Adı
Yeni kısıtlama ekleme.
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ı
EXEC SP_RENAME ’Tablo_Adı.Alan_Adı’, ’Yeni_Alan_Adı’, ’Nesne_Tipi’
Standart SQL ’ de
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
EXEC SP_RENAME ’Sicil.PersonelSicilNo’, ’SicilNo’, ’Column’
//Standart sql
// t-sql
EXEC SP_RENAME ’myView’, ’MaasBordrosu’,’Object’
EXEC SP_RENAME ’FK_PersonelMal_Personel’, ’FK_PM_P’,’Object’
// View İsmi değiştirme
// 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.
www.dijitalders.com
Sql Komutlarından Create, Drop, Alter
Add, Alter Drop, Alter Change, Alter
After Komutlarının Tabloya Yada
Veritabanına Uygulanması
3
Sql Komutlarından Create, Drop, Alter Add, Alter Drop, Alter Change, Alter After Komutlarının Tabloya Yada
Veritabanına Uygulanması
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
www.dijitalders.com
Sql Komutlarından Create, Drop, Alter
Add, Alter Drop, Alter Change, Alter
After Komutlarının Tabloya Yada
Veritabanına Uygulanması
4

Benzer belgeler