MSSQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
MSSQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Ekim 2014 Cumartesi

SQL'de VIEW Oluşturma ve Kullanımı

Temel amacı tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal tabloymuş gibi yeniden sorgulayabilmemizi sağlamaktır. Kısaca SQL'de verilerimizin isteğe bağlı alanlara ve tablolara göre ekranımızda görünteleme işlemi yapmamızı sağlar. Kullanıcının istediği verilere göre gösterim yapmak veya raporlamak SQL VIEW sayesinde kolaylıkla halledilmektedir.

Veritabanı VIEW ile oluşan datayı saklamaz. Bir VIEW geçen SQL deyimi her çalıştırıldığında ilgili VIEW sanal tabloyu yeniden oluşturur. VIEW üzerinde yapılan değişikler kendilerini oluşturan kaynak tabloları da etkiler ve aynı değişiklikler kaynak tablolara da yansır. VIEW kullanmanın önemli nedenlerinden bir tanesi sağladığı güvenliktir. Örneğin tablolarınızın tamanının görünmesini istemediğiniz zamanlarda sanal tablo kullanıp tablolarınızın tamamının görünmesini engelleyebilirsiniz. Karmaşık sorguları basitleştirmek, sorgu süresini kısaltmak ve ağ üzerindeki trafiği düşürmek, erişim izinlerini düzenlemek ve farklı sunuculardaki benzer verileri karşılaştırmak içinde kullanılır.
Oluşturulan VIEW'ler Object Explorer kısmında database/Views altında toplanır.

VIEW Oluşturma: VIEW oluşturmak için CREATE VIEW ifadesi kullanılır.

Genel Yapısı:
CREATE VIEW view_adı 
AS 
SELECT * FROM tablo_adi

Örnek1:
CREATE VIEW deneme_view 
SELECT EmployeeID, FirstName, LastName
FROM Employees

Örneğimizde Northwind veritabanında Employees tablosundan sadece "EmployeeID, FirstName, LastName" kullanarak yeni bir view oluşturalım ve "select * from deneme_view" ile sorgumuzu çalıştıralım.

Örnek2:
CREATE VIEW deneme2_view
AS
SELECT FirstName,LastName
FROM Employees
WHERE FirstName LIKE 'a%'
WITH CHECK OPTION
Bu örneğimizde diğerinden farklı olarak bir şart belirttik ve WITH CHECK OPTION ifadesini kullandık.
WITH CHECK OPTION: SQL Server'da VIEW tanımlarken örneğimizdeki gibi WHERE anahtar sözcüğüyle bir şart belirtmiş olabiliriz. Böyle bir VIEW nesnesini kullanırken de VIEW üzerinden tablolarımıza "INSERT, UPDATE, DELETE" işlemleri gerçekleştirebiliriz. 

Şimdi diyelimki oluşturduğumuz VIEW'e bir INSERT yapmamız gerekti;
insert into deneme2_view values('Bayraktar','İbrahim')
eklenme yapılmak istendiğinde "The attempted insert or update failed because the target view either specifies WITH CHECK OPTION or spans a view that specifies WITH CHECK OPTION and one or more rows resulting from the operation did not qualify under the CHECK OPTION constraint. The statement has been terminated." hatasıyla karşılaşırız (VIEW oluştururken kullandığımız WITH CHECK OPTION ifadesinden dolayı 'a' ile başlamayan bir ekleme yapılamaz)

VIEW Silme: VIEW'leri silmek için DROP ifadesi kullanılır.

Genel Yapısı:
DROP VIEW view_adı
Örnek3:
DROP VIEW deneme2_view

VIEW Değişiklik Yapma: VIEW'ler üzerinde değişiklik yapmak için ALTER ifadesi kullanılır.

Genel Yapısı:
ALTER VIEW view_adı 
WITH seçenekler 
AS SELECT ifadesi

with schemabinding ifadesi ile kilitleme:
with schemabinding ifadesi VIEW'in bağlı olduğu tablodaki kolonları kilitleyip o kolonların silinmesini ve değişiklik yapılmasını engeller.

Genel Yapısı:
ALTER VIEW view_adı 
WITH schemabinding 
AS 
SELECT ifadesi

Örnek3:
CREATE VIEW deneme3_view
WITH SCHEMABINDING --sütunla ilgili bir değişiklik yapılması engellenir
AS
SELECT FirstName,LastName,City
FROM dbo.EMPLOYEES


with encryption ifadesi ile gizleme: 
VIEW'leri şifreleyip sorguların görünür olmasını engeller. Kaynakların  gizliliğini sağlayan koddur, Kullanıcı sadece oluşturulan VIEW ile ilgili verilere erişebiliR kaynak tablolarla ilgili hiç bir bilgiye ulaşamaz.

Genel Yapısı:
ALTER VIEW view_adı 
WITH encryption 
AS 
SELECT ifadesi

Örnek4:
CREATE VIEW deneme4_view
WITH ENCRYPTION --kaynak gizleme ve pasif design
AS
SELECT * FROM PRODUCTS

with encryption ifadesi kullanıldığında Object Explorer'da VIEW üzerinde kilit işareti belirir ve sağ click yapıldığından Design seçeneğinin pasifleştiğini görebiliriz.

27 Ağustos 2014 Çarşamba

SQL'de Yetkilendirme GRANT, DENY, REVOKE Kullanımları

DCL, bir veri tabanı ile ilişkili kullanıcıları ve rollerin izinlerini değiştirmek için kullanılır.
GRANT, DENY ve REVOKE temel DCL komutlarıdır.

DCL komutlarını kullanabilmek için SQL Server’da varsayılan değer (default) olarak yetki sahibi olan gruplar:
sysadmin , dbcreator , db_owner , db_securityadmin ‘dir.

Öncelikle sunucuya dışarıdan bir erişim sağlamak için bir giriş (login) oluşturulmalıdır.

CREATE LOGIN BAYRAKTAR WITH PASSWORD="QWERTY123"
komutuyla "QWERTY123" şifresine sahip BAYRAKTAR adında bir kullanıcı oluşturduk.

Şimdi bu login üzerinden bir kullanıcı yaratalım ve GRANT, DENY, REVOKE kullanımlarını inceleyelim.

CREATE USER BAYRAKTAR FOR LOGIN BAYRAKTAR
User oluşturmuş olduk.

GRANT: Kullanıcılara veritabanı nesneleri üzerinde güvenlik ayrıcalıkları vermek için kullanılan komuttur.

Genel yapısı şu şekildedir: GRANT (all | izinler) ON (izneTabiTutulanlar) TO (izinVerilenler)

GRANT CREATE TABLE TO BAYRAKTAR  
BAYRAKTAR kullanıcısına tablo oluşturma yetkisi veriyoruz.

GRANT INSERT,UPDATE,DELETE TO BAYRAKTAR
BAYRAKTAR kullanıcısına güncelleme, silme ve ekleme yetkisi veriyoruz.

GRANT SELECT ON Bilimkurgu TO BAYRAKTAR
BAYRAKTAR kullanıcımızın "Bilimkurgu" tablosundan select çekebilmesine izin verelim.

WITH GRANT OPTION: Dereceli yetkilendirme işleminde kullanılır. Yetki verilmiş kullanıcının kendisinde bulunan yetkileri başka kullanıcılara verebilmesini sağlar.

GRANT SELECT,INSERT ON Bilimkurgu TO BAYRAKTAR WITH GRANT OPTION
BAYRAKTAR kullanıcısına bilimkurgu tablosu üzerinde select ve insert hakkı veriyoruz. Ama with grant option ifadesinden dolayı, BAYRAKTAR kullanıcısı da, başkasına da bu yetkiyi verebilir.

DENY: GRANT komutunun tersidir. Yetkileri engeller.

Genel yapısı şu şekildedir: DENY (ALL | izinler) TO (izinVerilenler) 

DENY CREATE TABLE TO RAMAZAN
RAMAZAN kullanıcısına tablo yaratmayı yasakladık.

DENY INSERT, SELECT ON Bilimkurgu TO RAMAZAN
RAMAZAN kullanıcısının bilimkurgu tablosunda INSERT ve SELECT kullanmasını engelledik.


REVOKE: GRANT ile değiştirdiğimiz hakları eski haline döndürmek için kullanılır. Bir nesneyi oluşturan kullanıcının REVOKE ile nesne üzerindeki yetkilendirme ve kullanma hakkı yok edilemez. 

Genel yapısı şu şekildedir:  REVOKE (all | izinler) TO/FROM (izinVerilenler)

REVOKE ALL ON REGION TO BAYRAKTAR
BAYRAKTAR kullanıcısına verilen tüm yetkileri kaldırır.

SQL'de Constraint (Kısıtlayıcı) ve Constraint Türleri

Constraint (Kısıtlayıcı): Veri üzerindeki mantıksal sınırlamalara kısıt adı verilir. Bu kısıtlamalar veritabanına eklenebilecek ya da bir güncellemeyle değiştirilebilecek veri değerlerini sınırlar. Kısıtlamalar, tabloların tanımlanmasıyla beraber oluşan öğelerdir. Kısıtlamalar ile Rule (kural) ve Default’ların (varsayılan) yapabileceği işler yapılabilir. 

Constraintler tablo oluştururken CREATE TABLE komutuyla tanımlanabilir. 
Tablo oluşturulmuşsa ALTER TABLE komutuyla bu işlem gerçekleşir. 

Constraint Türleri

Primary Key Constraint: Birincil anahtar kısıtlayıcı anlamındadır. Her kaydın farklı olması demektir. Her tablonun en fazla 1 adet Primary Key Constraint’i olabilir.

Unique Constraint: Tekil alan kısıtlayıcı anlamındadır. Birincil anahtar olan ve tablodaki diğer alanlar içinde aynı içeriğe sahip verilerin olmaması için Unique Constraint tanımlanır. T.C.Kimlik Numarası. Primary Key ve Hasta Dosya No Unique şeklinde bir tanımlama Unique Constraint’e bir örnektir.

Foreign Key Constraint: Yabancıl anahtar kısıtlayıcı anlamındadır. Bir tablodaki bir sütuna ait verilerin başka bir tablonun belirli bir sütunundan gelmesini denetler. Sadece bağladığımız sütundaki değerleri içerebilir.

Default Constraint: Varsayılan kısıtlayıcı anlamındadır. Tablodaki herhangi bir alan için girilmesi gereken bir değerin atanmasıdır. INSERT komutu için geçerlidir. Örneğin, kişi bilgilerinin alındığı bir tabloda kişinin uyruğunun girilmesi işleminde varsayılan değer olarak "T.C." atanabilir.

Check Constraint: Kontrol kısıtlacıyı anlamındadır. Belirtilen formata göre verilerin girilmesini sağlar. T.C. numara alanına 11 karakterin girilmesi ve konrolü Check Constraint ile sağlanabilir.

Constraint Örnek:


Örneğimizi inceleyelim. 

İlk olarak CREATE DATABASE CONSORNEK - "CONSORNEK" adında bir database oluşturuyoruz.

USE CONSORNEK ile işlem yapacağımız database'i seçili hale getiriyoruz.

CREATE TABLE HASTA
(
HASTA_NO INT PRIMARY KEY IDENTITY(1,1),
AD NVARCHAR(25),
SOYAD NVARCHAR(25),
DOGUMTARIHI DATE,
CONSTRAINT YASKISITLA Check(DATEDIFF(YEAR,DOGUMTARIHI,GetDate())>18 and DATEDIFF(YEAR,DOGUMTARIHI,GetDate())<75)
)

işlem tablomuzu ve sutunlarımızı oluşturup veri tiplerini belirliyoruz. 
Son satırda Constraint’imizi yani kısıtımızı"YASKISITLA" ismiyle belirtiyoruz.

INSERT HASTA (AD,SOYAD,DOGUMTARIHI) 
VALUES ('IBRAHIM','BAYRAKTAR','05.08.1982')

INSERT komutuyla tablomuza ve veritiplerine uygun değerleri giriyoruz.

Örnekte kısaca HASTA tablosuna kayıt işlemi yaptırıyoruz. Fakat tanımladığımız Constrait ile sadece 18/75 yaş aralığında kişilerin kaydına izin verilmesini sağlıyoruz.

24 Ağustos 2014 Pazar

SQL'de Foreign Key Kullanımı

  • SQL'de bir başka tablo ile ilişkilendirilecek olan tablonun diğer tabloda bir nevi kısıtlanmasıdır. İlişkilendirilecek olan tablonun Primary key alanı ile diğer tablonun Foreign key alanı birbiri ile bağlanır.
  • Foreign Key kısıtlaması sütunlarından herhangi biri null değerler içeriyorsa, Foreign Key kısıtlamasını oluşturan tüm değerlerin doğrulaması atlanır.
  • Foreign Key kısıtlamasının yalnızca başka bir tablodaki Primary Key kısıtlamasına bağlı olmasına gerek yoktur. Ayrıca başka bir tablodaki UNIQUE kısıtlama sütununa başvuracak şekilde de tanımlanabilir.
Foreign Key tanımlamak için, tablomuzdaki Foreign Key olacak sütunu yazdıktan sonra REFERENCES yazıp bağlanacak tablounun adını ve parantez içindede ilgili sütunu yazarız.

CREATE TABLE SIPARISLER
(
Siparis_ID integer primary key,
Siparis_Tarihi datetime,
Musteri_SID integer REFERENCES MUSTERI(SID),
Tutar double
)

SQL'de Primary Key Kullanımı

  • Primary Key ile veritabanımızdaki tablolarda, primary key atanmış olan sütun (kolon) ile birlikte eşsiz şekilde verilere sahip satırlar oluşturabiliriz. 
  • Primary Key olan alanlar Null değerler olamaz ve bu bölüme aynı değerler girilemez. 
  • Tablolarımızda mutlaka Primary Key kullanmak çok büyük avantaj sağlayacaktır.
  • Primary Key (Birincil Anahtar) genelde otomatik artan değerler olarak kullanılır. Bu otomatik artma da identity komutu ile gerçekleştirilir. 
  • Primary Key tanımlamak aslında bir nevi Constraint‘tir yani bir nevi kısıtlama yapmaktır.
  • Bir tabloda sadece bir Primary Key bulunur ama bununla birlikte tabloda birden fazla kolon için bileşik anahtar yani composite key oluşturulabilir. 
  • Eğer primary key bir composite key yani bileşik anahtar ise, tüm değerlerin kombinasyonu unique yani eşsiz olmalıdır. 
Daha basitce açıklamak gerekirse örneğin bir HBYS veritabanında Hastalar tablomuz mevcut, oldukca çok veri içeren bir tablo. Aynı ad ve soyada sahip birçok kişi var. Şimdi bu verileri en basit şekilde nasıl birbirlerinden ayırt ederiz. TC Kimlik No, aynı TC Kimlik Numarasının ikinci bir kişide olması mümkün değildir. Veritabanımızda TC Kimlik No alanını Primary Key olarak tanımlayarak eşsiz veriler oluşturabiliriz. Primary Key tablomuzdaki kayıtları sütün aracılığıyla eşşiz kayıt haline getirmemizi sağlayacaktır.

Yeni bir Alanda Primary Key Kullanımı:
CREATE TABLE Yazarlar
(
id int NOT NULL PRIMARY KEY,
adi_soyadi varchar(20) ,
Yayinevi varchar(20)
) 

Yeni birden fazla Alanda Primary Key Kullanımı:
CREATE TABLE Yazarlar
(
id int NOT NULL,
adi_soyadi varchar(20) NOT NULL ,
Yayinevi varchar(20),
CONSTRAINT id_no PRIMARY KEY  (id,adi_soyadi)
) 

Varolan bir Alanda Primary Key Kullanımı:
ALTER TABLE Yazarlar
ADD PRIMARY KEY (id)

Varolan birden fazla Alanda Primary Key Kullanımı:
ALTER TABLE Yazarlar
ADD CONSTRAINT  id_no PRIMARY KEY (id,adi_soyadi)

NOT: ALTER ile sonradan bir alana PRIMARY KEY kriteri tanımlanırken ilgili alanda veya alanlarda NULL yani boş kayıt olmamalıdır.

PRIMARY KEY yapısını kaldırmak:
ALTER TABLE Yazarlar
DROP CONSTRAINT id_no

NOT: Birden fazla alanda PRIMARY KEY işlemi yaptıysak, CONSTRAINT ifadesinden sonra tablomuzdaki alan adı değil, oluşturduğumuz index adı yazılmalıdır.

SQL'de UNIQUE Kullanımı

  • SQL'de oluşturmuş olduğumuz tablolar içinde yer alan her bir kolonda eşsiz şekilde, yani benzersiz birbirinden farklı veriler bulunmasını isteyebiliriz.
  • Bunun için bu tür alanlar tanımlanırken Unique Key Contsraint tanımı yapılır.
  • Unique Key Contsraint tanımının Primary Key den farkı Unique Key'in bir tabloda birden fazla olmasıdır,  Primary Key ise tabloda sadece 1 adet olabilir. NULL veriler de içerebilir. 
  • Ayrıca tablolarımızı oluştururken UNIQUE kısıtlaması yapabildiğimiz gibi, daha sonradan var olan tablolar üzerinde de UNIQUE kısıtlaması yapabiliriz.  
  • Bir tabloda birden çok UNIQUE sınırlaması getirilebilinir fakat sadece bir tane PRIMARY KEY sınırlaması getirilebilinir.
NOT: Primary Key alanı tanımlandığında otomatik olarak UNIQUE olarak oluşur. 

Yeni bir tablo oluşturulmasında Unique Key Contsraint Kullanımı:
CREATE TABLE Yazarlar
(
No int NOT NULL UNIQUE,
Soyad varchar(255) NOT NULL,
Ad varchar(255),
Yayinevi varchar(255)
)

Yeni bir tablo oluşturulmasında birden fazla alanda Unique Key Contsraint Kullanımı:
CREATE TABLE Yazarlar
(
id int NOT NULL,
adi_soyadi varchar(20) NOT NULL ,
Yayinevi varchar(20),
CONSTRAINT id_no UNIQUE (id,adi_soyadi)
) 

Var olan tabloda sonradan ekleme yaparken Unique ve ALTER Kullanımı:
ALTER TABLE Yazarlar
ADD UNIQUE (No) 

Birden fazla alanda ekleme yaparken Unique ve ALTER Kullanımı:
ALTER TABLE Yazarlar
ADD CONSTRAINT  id_no UNIQUE (id,adi_soyadi)

UNIQUE alanı normale çevirmek istersek DROP ifadesini kullanmamız gerekir:
ALTER TABLE Yazarlar
DROP  CONSTRAINT id_no

Birden fazla alanda UNIQUE işlemi yaptıysak, CONSTRAINT ifadesinden sonra tablomuzdaki alan adı değil, oluşturduğumuz index adı yazılmalıdır. Eğer tek bir alanda oluşturduysak CONSTRAINT  ifadesinden sonra sadece alana adını yazabiliriz.

23 Ağustos 2014 Cumartesi

SQL'de SELECT INTO Kullanımı

  • SQL'de bir tablodan çektiğimiz verileri, yeni bir tablo olusturup, bu tabloya yazabiliriz. 
  • SELECT INTO ile veritabanı üzerindeki verilerle kopya veritabanları oluşturabiliriz.
  • SELECT INTO genelde geçici çalışma tabloları oluşturmak için tercih edilir.
SELECT INTO Kullanımı:

SELECT kolon_ad(ları) INTO [yeni_veritabanı.dbo]yeni_tablo_adı FROM kaynak 

Örnek Sorgu: SELECT * INTO KITAPLAR.dbo.Bilimkurgu_Yedek FROM KITAPLAR.dbo.Bilimkurgu


SQL'de BREAK ve CONTINUE Kullanımları

  • Koşulumuz yerine getirildiğinde döngüden çıkmak için BREAK komutu kullanılır. 
  • BREAK komutu gereksiz yeri elimizdeki bütün verilerin kontrolünü engeller. 
  • İstenilen veriye ulaştığımız zaman diğerlerini atlayarak döngüden veya listeden çıkmamızı sağlar.

CONTINUE komutunu bir döngüde işlemler devam ederken bazı durumlarda işlem yapılmasın istiyorsak kullanabiliriz.


SQL'de WHILE Döngüsünün Kullanımı

  • İfadelerin belli bir koşul gerçekleşinceye kadar çalışmasını sağlar. 
  • Şart ifadesi false oluncaya kadar ifadeler yinelenir. 
  • Şart gerçekleştiği sürece BEGIN...END arasındaki kod çalışır.
WHILE Döngüsü Kullanımı:
WHILE şart
BEGIN
     Döngüye girmesi istenen kodlar
END

Örnek Sorgu: Örneğimizde WHILE Döngüsü içerisinde @sayac değişkeninin o an ki değerini ve karesini Print ile yazdırdık. Döngü içerisinde @sayac değişkenini sürekli 1 artırdık ve @sayac değişkeninin değeri 5’e eşit oluncaya kadar döngüye girmesini sağladık.

SQL'de CASE...WHEN Yapısının Kullanımı

  • Bu yapı SQL'de sorgu sonucu dönen bir kolonun değerine göre farklı işlemler yapabilmemize olanak saglar. İstediğimiz bir kolonun değerini belirli şartları kontrol ederek yeni bir değerle değiştirmek için kullanabiliriz. 
  • SELECT yada UPDATE ifadeleri ile birlikte kullanılır. 
  • CASE ifadesi IF gibi tek başına kullanılamaz. Çünkü komut değil bir işlevdir. 
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 
CASE...WHEN Kullanımı:
CASE koşula girecek değer
     WHEN değer THEN işlem
     WHEN değer THEN işlem
ELSE işlem
END

Örnek Sorgu:

SQL'de IF...ELSE Yapısının Kullanımı

Merhabalar, 
Bu makalemde SQL'de  IF...ELSE yapısının kullanımını anlatmaya çalışacağım.
  • Programlama dillerinde olduğu gibi SQL'de de kontroller kullanılır.
  • Kontroller BEGIN deyimi ile başlayıp END deyimi ile biten kod blokları arasında yazılır.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 
IF...ELSE Karar Yapısı:
Bizim belirlediğimiz şartları kontrol eder. Bu şartların doğru olması halinde farklı işlemler, yanlış olması halinde farklı işlemler yapılmasını sağlar.

IF...ELSE Kullanımı: 
IF(Şart1) 
BEGIN     
    İşlemlerimiz 
END   

ELSE IF(Şart2) 
BEGIN     
    İşlemlerimiz 
END   

ELSE 
BEGIN     
    İşlemlerimiz 
END

Örnek Sorgu:
DECLARE @urunsay INT
SET @urunsay=(SELECT Products.UnitsInStock
FROM Products
WHERE Products.ProductID=4)
IF(@urunsay<20)
BEGIN
PRINT 'ProductID 2 olan ürünün stoğu kritik seviyede'
END
ELSE
BEGIN
PRINT 'Ürün için yeterli miktarda stok mevcut'
END




SQL'de String Fonksiyonları

  • SQL'de karakter değerleri üzerinde işlem yapmak için String (karakter) fonksiyonları kullanılır.

SQL'de Tarih ve Zaman Fonksiyonları

  • Tarih ve zaman fonksiyonları, MSSQL kurulumunda hazır olarak gelen, tarih ve zaman ifadeleri üzerinde işlem yapabilmemizi sağlayan fonksiyonlardır.
GETDATE() Fonksiyonu: Sistemin anlık tarih ve saat değerini döndürür.



DATEADD() Fonksiyonu: Başa yazılan parametre cinsinden zamanı belirtilen ölçüde arttırır.

NOT: Bu fonksiyonda dd(gün) mm(ay) yy(yıl) anlamına gelmektedir.

Örneğimiz de  DATEADD Fonksiyonu ile 2014.08.23 tarihine 2 gün eklemekteyiz.

DATEDIFF() Fonksiyonu: Başa yazılan parametre (Hafta için 'wk' Gün için 'dd' Saat için 'hh' Dakika için 'mi' Saniye için 'ss') cinsinden iki tarih arasındaki farkı döndürür.



DATEPART() Fonksiyonu: Verilen tarih-saat parametresini parçalarına ayırıp istenilen parçayı almaya yarar.


ISDATE() Fonksiyonu: Girilen string değeri tarih formatına uygunsa 1, değilse 0 döner.



SYSDATETIME() ve SYSDATETIMEOFFSET() Fonksiyonları: 
SYSDATETIME Timestamp değerini bölgesel saat farklılıklarını göstermeden döner.
SYSDATETIMEOFFSET Tarih ve saati bölgesel saat farklılıklarıyla beraber döner.




SQL'de PRINT Kullanımı

  • Değişkenlerin değerlerini, hataları ve diğer ihtiyaç duyulan durumlarda PRINT komutu kullanılır. DEBUG işlemi için ihtiyaç duyulan bir komuttur.
PRINT Kullanımı : PRINT @<Değişken_Adı>

Örnek Sorgu: soyad değişkeninin içeriği PRINT ile gösterilmiş olacaktır.

DECLARE @soyad VARCHAR(15) SELECT @soyad=’Bayraktar’ PRINT @soyad

SQL'de DECLARE & SET Kullanımı

  • SQL'de değişken tanımlamalarında DECLARE komutu kullanılır.    
  • Tanımladığımız değişken için değer atama işlemlerinde SET komutu kullanılır. 

DECLARE & SET Kullanımı : DECLARE @<Değişken_Adı> <Değişken_tipi>

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu


Örnek Sorgu: Products tablomuzdaki en yüksek birim fiyata sahip ürünü DECLARE komutu ile değişken tanımlayıp SET ile atamasını yapalım ve MAX fonksiyonu ile en büyük değeri bulup listeleyelim.

DECLARE @enyüksek_birimfiyat MONEY
SET @enyüksek_birimfiyat=(select max(UnitPrice) from Products)
SELECT @enyüksek_birimfiyat AS 'Birim fiyatı en yüksek ürün'


SQL'de USE, ALTER ve DROP Kullanımları

USE Kullanımı
  • USE kullanımı hangi database üzerinde işlem yapacağımızı belirtir.
  • New Query (Ctrl+N) ile yeni sorgu penceremizi açtığımızda default olarak gelen database Available Databases kutucuğunda görünmektedir.
 USE Kullanımı: USE <veritabanı adı>


ALTER ve DROP Kullanımları

Bir tablo kullanılmaya başlandıktan sonra kullanıcılar tablolarda mevcut bulunan verilere ilişkin ek bilgiler depolama ihtiyacı hissederler.

ALTER Kullanımı: ALTER <Nesne_Adı>  <Değişim_Cümlesi>

Örnek Sorgu 1: SQL'de CREATE Kullanımı başlıklı yazımda oluşturduğumuz Kitaplar veritabanında mevcut Bilimkurgu tablomuza yeni bir sütun ekleyip değerinin ise NULL olabilir şekilde ayarlayalım.

ALTER TABLE Bilimkurgu ADD Sayfa INT NULL


Örnek Sorgu 2: Bilimkurgu tablomuzda önceden kaydettiğimiz bir sütunun özelliğini değiştirelim. Yazar alanı 25 karakter değer alabilirken biz bu değeri 30 karakter ile değiştirelim.

ALTER TABLE Bilimkurgu ALTER COLUMN Yazar VARCHAR(30)

Tablo Silmek (DROP TABLE)

Veritabanların yapısı zamanla değişir ve büyür. Yeni değerleri temsil eden yeni tablolar oluşturulur ve bazen eski tablolara gereksinim duyulmaz. Gereksinim duyulmayan bir tabloyu veritabanından silmek için DROP TABLE ifadesini kullanırız.

DROP TABLE Bilimkurgu

Veritabanımızdan Bilimkurgu tablomuzu siler.

NOT: DROP TABLE ifadesi veritabanından bir tablo sildiğinde tablonun tanımı ve tüm içeriği kaybolur.

SQL'de CREATE Kullanımı

  • CREATE TABLE ifadesi veritabanında yeni bir tablo oluşturmamızı sağlar.
  • CREATE DATABASE ifadesi yeni bir veritabanı oluşturmamızı sağlar.
Örnek Sorgu :  CREATE DATABASE ifadesi ile veritabanı yaratalım...ve bu veritabanında tablolar oluşturalım.

CREATE DATABASE KITAPLAR
CREATE TABLE Bilimkurgu(BlkrgId INT,Name VARCHAR(25) )



SQL'de DELETE Kullanımı

  • DELETE ifadesi tablodaki satırları silmek için kullanılır.
  • DELETE ifadesi içerisinde WHERE isteğe bağlıdır
  • Koşul belirtilmez ise bütün kayıtları tablomuzdan siler.
  • DELETE ifadesi ile kayıtlar silinse dahi tablo  ve sütünların tanımı  veritabanında saklanır.
  • Potansiyel riskler nedeniyle DELETE ifadesi kullanılırken her zaman bir arama koşulu tanımlanmalıdır.
DELETE Kullanımı: DELETE FROM <tablo adı> WHERE <sütun adı>=<aranan değer>

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu : Employees (Çalışanlar) tablumuzda EmployeeID'si 5 olan kaydı silelim.

DELETE FROM Employees WHERE EmployeeID=5 SELECT * FROM Employees

SQL'de UPDATE Kullanımı

  • UPDATE ifadesi tek bir tablonun seçili satırlarını yada daha fazla sütundaki değerleri günceller.
  • Güncellenecek hedef tablo, ifadede adlandırılır ve tabloyu güncellenecek olan ayrı sütunların herbirini değiştirmek için gerekli izne sahip olunması gereklidir.
  • Kullanılacak WHERE ifadesi tablonun güncellenecek olan satırlarını belirler.
  • SET  cümleciği ise hangi sütunların güncelleneceğini belirler ve bunların güncel değerini hesaplar.
UPDATE Kullanımı: UPDATE <tablo adı> SET <sütun adı> = <yeni değer> WHERE <sütun adı> = <eski değer> 

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu : Müşteri kodu (CustomerID) "BERGS" olan kayıtların Görüşülecek Kişi (ContactName) ve City alanlarını güncelleyelim. Koşul kısmında belirttiğimiz alan Birincil Alan olduğundan sadece tekbir satır güncellenecektir. Sorgunun sonucunu basit bir SELECT sorgusu ile kontrol edebilirsiniz.

UPDATE Customers SET ContactName='Bayraktar',City='Berlin' WHERE CustomerID='BERGS'

SQL'de INSERT INTO...VALUES Kullanımı

  • INSERT kullanımından farklı olarak istenilen sütunlara kayıt işlemi yapmamızı sağlar.
  • 2 farklı kullanım şekli vardır.
INSERT INTO...VALUES Kullanımı 1 : INSERT INTO tablo_adı VALUES (değer1, değer2,....)
INSERT INTO...VALUES Kullanımı 2 : INSERT INTO tablo_adı (sütun1, sütun2,...) VALUES (değer1, değer2,....)
 
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 
 
Örnek Sorgu : Customers tablosuna sadece müşteri kodu (CustomerID) ve Firma adı (CompanyName) verilerinin girildiği bir kayıt ekleyelim.
 

Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü