SUNGURLU MESLEK YÜKSEKOKULU BİL

advertisement
SUNGURLU MESLEK YÜKSEKOKULU
BİLGİSAYAR TEKNOLOJİLERİ/BİLGİSAYAR PROGRAMCILIĞI
2017-2018 GÜZ DÖNEMİ
VERİ TABANI YÖNETİM SİSTEMLERİ-II
5. T-SQL
Öğr. Gör. Saliha Kevser KAVUNCU
1. TRANSACT SQL KAVRAMI
Microsoft'un
veri tabanı sorgulama
dilidir. Transact-SQL, SQL Server ve
istemci(client) arasında iletişimi sağlayan
SQL sorgulama dilinin gelişmiş bir
versiyonudur.
Transact
Structured Query Language
kelimelerinin kısaltmasıdır.
Sungurlu Meslek Yüksekokulu
Sql Üç Alt Grupta İncelenir:
1. DDL (Data Definition Language):
Veri tabanı üzerinde nesne tanımlama amaçlı
kullanılır.
CREATE nesne_adi
ALTER nesne_adi
DROP nesne_adi
Sql Üç Alt Grupta İncelenir:
2. DML (Data Manipulation Language)
Veri tabanı içindeki verileri sorgulamak ve
üzerlerinde işlem yapabilmek amacıyla
kullanılır.
SELECT
INSERT
UPDATE
DELETE
Sql Üç Alt Grupta İncelenir:
2. DML (Data Manipulation Language)
Veri tabanı içindeki verileri sorgulamak ve
üzerlerinde işlem yapabilmek amacıyla
kullanılır.
SELECT
INSERT
UPDATE
DELETE
Sql Üç Alt Grupta İncelenir:
2. DCL (Data Control Language)
İşlem izinleri ve yasakları gibi işlemleri
yapmak için kullanılır.
GRANT
DENY
REVOKE
Sql Üç Alt Grupta İncelenir:
2. DCL (Data Control Language)
İşlem izinleri ve yasakları gibi işlemleri
yapmak için kullanılır.
GRANT
DENY
REVOKE
Nesne ve Tanımlayıcı İsimlendirme Tipleri
i.
En
çok
kullanılan
özetlenmektedir.
ii.
Pascal Case: Kelimelerin ilk harfleri büyük diğerleri
küçük yazılır. Örneğin AdSoyad, EvTel, CepTel,
OgrenciNo vb.
standartlar
aşağıda
iii. Camel
Case: Birinci kelimelerin ilk harfi hariç diğer
kelimelerin ilk harfleri büyük, diğerleri küçük yazılır.
Örneğin adSoyad, evTel, cepTelNo vb.
iv. Upper
Case: Kelimelerin tüm harfleri büyük yazılır.
Örneğin ADSOYAD, EVTEL, UCGENALAN vb.
v.
Underscore Case: Kelimelerin arasına alt çizgi yazılır.
Örneğin, Ad_Soyad, Ev_Tel, Cep_tel_No vb.
Nesne ve Tanımlayıcı İsimlendirme Kuralları
i. İngiliz alfabesindeki A-Z veya a-z arası 26 harf kullanılabilir.
ii.
0-9 arası rakamlar kullanılabilir. Simgelerden sadece alt çizgi (_)
kullanılabilir.
iii.
Tanımlayıcılar, harf veya alt çizgi ile başlayabilir. Ancak
rakamla başlayamaz veya sadece rakamlardan oluşamaz.
iv.
Tanımlayıcı, ilgili programlama dilinin komutu veya anahtar
kelimesi olamaz.
v.
Bir tanımlayıcı özel anlamları olan @, @@, #, ##, $ ile
başlamamalıdır. Bu karakterlerden @ değişkenlerin başına gelir.
@@ sistem ortam değerleri fonksiyonların başına gelir. # ise
geçici nesne belirteci olarak kullanılır.
vi. Kelimeler arası boşluk yer almamalıdır.
vii. Select, Not, Desc… gibi kelimeler kullanılamaz.
1. CREATE
 Veri tabanındaki nesnelerin
oluşturulabilmesi için CREATE komutu
kullanılır.
 Oluşturulacak nesnenin özellikleri
dikkate alınarak farklı parametreler
kullanılmalıdır.
1.a. Create- Veritabanı Oluşturma
1.a. Create- Veritabanı Oluşturma
CREATE DATABASE SQLEgitim ON PRIMARY
(
NAME = SQLEgitim_DATA,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\SQLEgitim.mdf',
SIZE = 8MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%
)
LOG ON
(
NAME = SQLEgitim_LOG,
FILENAME = 'C:\Program Files\Microsoft
SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\SQLEgitim_log.ldf',
SIZE = 8MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%
)
1.a. Create- Veritabanı Oluşturma
“CREATE DATABASE SQLEgitim” ifadesi ile
Sungurlu isminde bir veritabanı
oluşturacağımızı belirttik. PRIMARY ise
birincil dosyada oluşturduğumuzu belirtmiş
oluyoruz. PRIMARY belirtilmemişse,
CREATE DATABASE deyiminde listelenen ilk
dosya birincil dosya olur.
1.a. Create- Veritabanı Oluşturma
NAME: SQL Server veritabanımıza başvurduğunda bu ismi
kullanır. İsim uniqe(benzersiz) olmak zorundadır.
FILENAME: Veritabanımızın kaydedileceği yolu
belirttiğimiz yerdir. Eğer belirttiğin klasör yok ise
önceden oluşturmanız gerekiyor.
SIZE: Veritabanınızın ilk boyutu
MAXSIZE: Veritabanınızın en fazla ulaşabileceği
boyut
FILEGROWTH: Yeterli boşluk kalmadığında
veritabanınızın genişleme miktarı
1.a. Create- Veritabanı Oluşturma
LOG
NAME: Log dosyanızın SQL Server
başvurduğunda kullanacağı isim. Uniqe olmak
zorundadır.
FILENAME: Log dosyanızın kaydedileceği yolu belirtiğimiz yerdir.
SIZE: Log dosyanızın ilk boyutu
MAXSIZE: Log dosyanızın en fazla ulaşabileceği
boyut
FILEGROWTH: Yeterli boşluk kalmadığında log
dosyanızın genişleme miktarı
1.a. Create- Veritabanı Oluşturma
LOG
NAME: Log dosyanızın SQL Server
başvurduğunda kullanacağı isim. Uniqe olmak
zorundadır.
FILENAME: Log dosyanızın kaydedileceği yolu belirtiğimiz yerdir.
SIZE: Log dosyanızın ilk boyutu
MAXSIZE: Log dosyanızın en fazla ulaşabileceği
boyut
FILEGROWTH: Yeterli boşluk kalmadığında log
dosyanızın genişleme miktarı
1.b. Creat- Tablo Oluşturma
CREATE TABLE ifadesi ile var olan veritabanımıza yeni bir
tablo oluşturulur. Bu işlemi yapabilmek için mevcut
kullanıcımızın tablo oluşturma yetkisine sahip olması
gerekmektedir.
Create Table Kullanım Biçimi:
CREATE TABLE
(
alan_adi1 veri_tipi(boyut),
alan_adi2 veri_tipi(boyut),
alan_adi3 veri_tipi(boyut),
....
)
1.b. Creat- Tablo Oluşturma
Bu kod ile id isminde bir sayısal alan, boşluklar dahil olmak
üzere numara ve harften oluşan 25 karakterli adi_soyadi, 15
karakterli sehir ve bolum ile medeni_durum adında bolean
yani "evet-hayır", "var-yok", "1-0" gibi sadece iki seçenekli bir
alan tanımlanıyor. Oluşan tabloda herhangi bir kayıt
olamayacaktır.
SQL PRIMARY KEY Kullanımı:
PRIMARY KEY ile tablomuzdaki ilgili alanda benzersiz kayıtların
tutulmasını istediğimiz durumlarda kullanılır. Yapısal olarak
UNIQUE ile karıştırılabilir. Aradaki farkları sıralayacak olursak:
- Birden fazla alan tek bir PRIMARY KEY ile tanımlanabilir. Ancak
PRIMARY KEY yapısı her tabloda sadece bir tane olabilir. UNIQUE
yapısı bir tabloda birden fazla olabilir.
- PRIMARY KEY yapısı ile boş kayıtlara izin verilmez. UNIQUE
yapısında boş kayıtlara izi n verilir.
- PRIMARY KEY yapısı ile tablo üzerinde bir index tanımı oluşturulur
her kaydın benzersiz bir tanımı yapılır. Böylece kullandığınız
uygulama geliştirme ortamında (Ör: .NET) tablo üzerinde daha
etkin sonuçlar elde edilebilir. UNIQUE yapısında ise alandaki
değerlerin benzersiz olup olmadığına bakılır. Birden fazla alanda
UNIQUE yapıldığında bunları bir index adıyla tanımlanmaı
sağlaabilir ancak bu sadece bir tanımladır.)
SQL PRIMARY KEY Kullanımı:
PRIMARY KEY Kullanım Biçimi
CREATE TABLE Personel
(
id int NOT NULL PRIMARY KEY,
adi_soyadi varchar(20) ,
Sehir varchar(20)
)
PRIMARY KEY Kullanım Biçimi
Birden fazla alanda kullanım biçimine örnek:
CREATE TABLE Personel
(
id int NOT NULL,
adi_soyadi varchar(20) NOT NULL ,
Sehir varchar(20),
CONSTRAINT id_no PRIMARY KEY
(id,adi_soyadi)
)
*Burada görüleceği üzere birden fazla alan PRIMARY KEY yapısı
içine alınıyor. CONSTRAINT ifadesi ile bu işleme bir tanım giriliyor.
Aslında bu tanım bizim tablomuzun index alanını oluşturmaktadır.
İndexleme sayesinde tablomuzdaki verilerin bütülüğü daha sağlam
olurken aramalarda da daha hızlı sonuçlar elde ederiz. Ayrıca
kullandığınz uygulama geliştirme ortamlarında (ör .Net) tablo
üzerinde daha etkin kullanım imkanınız olacaktır. PRIMARY KEY
ifadesinden sonra ise ilgili alanları virgül ile ayırarak yazarız.
SQL UNIQUE Kullanımı:
Tablomuzda bir alandaki verilerin tekrarlı olmasını istemiyorsak
UNIQUE kriterini kullanmamız gerekir. Tablo tasarımını
yaparken bir alanın UNIQUE olup olmayacağına iyi karar
vermemiz gerekir. Çünkü daha sonradan ALTER komutu ile alanın
özelliklerini değiştirirken, ilgili alanda tekrarlayan kayıtlar varsa
UNIQUE değerini veremeyiz. PRIMARY KEY ile çokça
karıştırılmaktadır. Aradaki farkları sıralayacak olursak:
Birden fazla alan tek bir PRIMARY KEY ile tanımlanabilir. Ancak
*PRIMARY KEY yapısı her tabloda sadece bir tane olabilir.
UNIQUE yapısı bir tabloda birden fazla olabilir.
*PRIMARY KEY yapısı ile boş kayıtlara izin verilmez. UNIQUE
yapısında boş kayıtlara izi n verilir.
*PRIMARY KEY yapısı ile tablo üzerinde bir index tanımı
oluşturulur
Her kaydın benzersiz bir tanımı yapılır. Böylece kullandığınız
uygulama geliştirme ortamında (Ör: .NET) tablo üzerinde daha
etkin sonuçlar elde edilebilir. UNIQUE yapısında ise alandaki
değerlerin benzersiz olup olmadığına bakılır. Birden fazla alanda
UNIQUE yapıldığında bunları bir index adıyla tanımlanmaı
sağlanabilir ancak bu sadece bir tanımladır.
UNIQUE Kullanım Biçimi:
Örnek 1: CREATE TABLE Personel
(
id int NOT NULL UNIQUE,
adi_soyadi varchar(20) ,
Sehir varchar(20)
)
Örnek 2: CREATE TABLE Personel
(
id int NOT NULL,
adi_soyadi varchar(20) NOT NULL ,
Sehir varchar(20),
CONSTRAINT id_no UNIQUE (id,adi_soyadi)
)
SQL NOT NULL Kullanımı:
Tablomuza kayıt girerken NOT NULL kriteri ile
belirleyeceğimiz alan veya alanların boş geçilmesini
engelleyebiliriz. NOT NULL kriteri tabloyu ilk defa
oluştururken belirlenebileceği gibi daha sonra ALTER yapısı
ile de belirleyeceğmiz alanlara NOT NULL kriterini
verebiliriz.
Örnek:
Create Table
(id int NOT NULL,
adi_soyadi varchar(20),
Meslek varchar(10)
)
Yuklarıdaki örnekte, id numarası alanının boş
geçilmemesi gerektiği için sadece id alanını
NOT NULL kriteri ile yapıladırılmıştır.
SQL IDENTITY Kullanımı
Tablomuza her kayıt eklendiğinde bir alanda bulunan değerin
benzersiz olmasını ve otomatik olarak artmasını isteyebiliriz. Daha
çok kayıtlarımız için bir id numarası alanı kullanıyorsak, IDENTITY
(n,m) kullanılır. Sadece sayısal alalarda kullanılır. SQL Server
tarafında IDENTITY kelimesi kullanılır. Parantezin içindeki birinci
rakam başlama değerini, ikinci rakam ise artış miktarını belirler.
CREATE TABLE Personel
(
id int IDENTITY(1,1) PRIMARY KEY,
adi varchar(10),
soyadi varchar(10=
)
Bu örnekte ilk numara 1 'den başlayacaktır ve her
kayıt eklendiğinde id alanı bir numara artacaktır.
Eğer ilk kayıt numarasını 50'den başlamasını ve 5
farkla eklenmesini istersek IDENTITY(50,5)
yazmamız yeterli olacaktır.
SQL FOREIGN KEY Kullanımı
Temel olrak FOREIGN KEY yardımcı index oluşturmak
için
kullanılır. Bir tabloda "id" alanına PRIMARY KEY
uygulayabiliriz. Ancak aynı tablodaki başka bir alan farklı
bir tablodaki kayda bağlı çalışabilir. MS Access
veritabanlarında bu duruma "İlişkili Veritabanı" deniliyor.
İşte bu iki tablo arasında bir bağ kurmak gerektiği
durumlarda FOREIGN KEY devreye giriyor. Böylece
tablolar arası veri akışı daha hızlı olduğu gibi ileride artan
kayıt sayısı sonucu veri bozulmalarının önüne geçilmiş
olunur.
SQL FOREIGN KEY Kullanımı
Burada Personel tablomuzdaki "p_id" alanı ve Satışlar tablomuzdaki
"s_id" alanları Primary Key ile indexlenmiştir. Ancak Satışlar
tablosunda, ilgili satış işleminin hangi personel tarafından yapıldığı
bilgisini tutan "satan_id" isimli alan vardır. Yazacağınız programda
veritabanından bilgileri çekip ekrana aktaracağınız için iki tablo
arasında bir ilişki vardır. Bu ilişkiyi ise Personel tablosundaki "p_id" ile
Satışlar tablosundaki "satan_id" alanları belirler. Dolayısı ile "satan_id"
alanına FOREIGN KEY yani ikincil index tanınlayarak aradaki veri
bütünlüğünün sağlanmasını sağlarken aynı zamanda da veri akışının
da hızlanmasını sağlamış oluruz.
CREATE TABLE Satislar
(id int NOT NULL PRIMARY KEY,
Urun varchar(20) ,
Satis_fiyati varchar(20),
satan_id int FOREIGN KEY References Personel(id)
)
FOREIGN KEY tanımlaması yapılırken hangi tablodaki hangi alanla ilişkili
oldğunu REFERENCES ifadesinden sonra yazmak gerekir.
2. ALTER
 Tablomuzda bulunan bir alanı silebilir,
adını veya tipini değiştirebilir veya yeni
bir alan ekleyebiliriz. Bu işlemler için
ALTER TABLE kullanılmaktadır.
2.a. Alter-Alan Ekleme
ALTER TABLE tablo_adi
ADD alan_adi veri_tipi
Uygulama:
*ALTER TABLE Personel
ADD Dogum_tarihi year
*ALTER TABLE Personel
ADD PRIMARY KEY (id)
2.a. Alter-Alan Ekleme
*ALTER TABLE Personel
ADD CONSTRAINT id_no
PRIMARY KEY (id,adi_soyadi)
*ALTER TABLE Personel
ADD UNIQUE (id)
*ALTER TABLE Personel
ADD CONSTRAINT id_no UNIQUE
(id,adi_soyadi)
2.b. Alter-Alan Silme
ALTER TABLE tablo_adi
DROP CLOUMN alan_adi
Uygulama:
ALTER TABLE Personel
DROP Dogum_tarihi year
TRUNCATE TABLE Kullanım Biçimi
TRUNCATE TABLE tablo_adi
Örnek:
TRUNCATE TABLE KisiselBilgiler
3. DROP
DROP yapısı ile indexler, alanlar,
tablolar ve veritabanları kolaylıkla
silinebilir. DELETE yapısı ile
karıştırılabilir. Delete yapsında sadece
bir tablomuzdaki kayıt veya
vereceğimiz kritere göre kayıtları
silebilir. Eğer tablomuzu veya
veritabanımızı silmek istiyorsak DROP
yapısını kullanmamız gerekmektedir.
3. Drop – Veri tabanı silme
DROP DATABASE tablo_adi
Örnek:
DROP DATABASE OGRENCI
3. Drop – Tablo Silme
DROP TABLE tablo_adi
Örnek:
DROP TABLE Bilgiler
UYGULAMA
OnlineKitap adında bir veri tabanı
oluşturunuz.
Veritabanı, DATA klasörünün içinde
oluşturulmuş 03.10.2017 Klasörünün
içine olacak şekilde kodlayınız.
Veritabanı başlangıç, artım ve bitiş
aşağıdaki gibi olmalıdır.
DATA  10MB UNLIMIT 5MB
LO  7MB 1000MB 3MB
UYGULAMA
Aşağıdaki tabloyu oluşturunuz.
Uygun veri tiplerini yazınız. Primary
ve Foreign Key aşağıdaki gibi olmalıdır.
UYGULAMA
Telefonu tek benzersiz
tanımlanmalıdır (unique)
Sonradan yapılacak işlemler: (Alter)
*Yazar tablosuna Soyadı alanı
ekleyiniz.
*Kitap tablosundaki YazarNo alanı
Foreign key yapınız.
* Yayımcı tablosundaki adres alanını
siliniz.
UYGULAMA
* Kitap tablosundaki Kitap No ile
Adını birleştirip Kitap yapıp birincil
anahtar atayınız.
 Tabloları tek tek siliniz.
 Veri tabanını siliniz.
Download