Kayıtlar

tutorial etiketine sahip yayınlar gösteriliyor

SQL Ders35 - JOIN

Resim
SQL'de JOIN 2 veya daha fazla tabloyu birleştirmek için kullanılır. Bu birleştirme işlemi UNION da olduğu gibi düşey değil yatay bir biçimdedir. Dolayısıyla UNION operatöründeki gibi tabloların aynı kolonlara sahip olması gerekmez.

JOIN türleri
InnerLeft OuterRight OuterFull OuterSelf  r1 tablosu

 r2 tablosu
Inner Join

İki veya daha fazla tablonun kesişimini alır.


SELECT kolon_ismi
FROM tablo_ismi
INNER JOIN tablo_ismi2
ON kolon_ismi=kolon_ismi2


SqlQuery35.sql
SELECT * FROM r1 INNERJOIN r2 ON r1.id=r2.id;

Left Outer Join

İki tablo ile işlem yapıldığı düşünülürse ilk tablonun tamamını, ikinci tablonun ise ilk tabloyla eşleşen kısımlarını alır.


SELECT kolon_ismi
FROM tablo_ismi
LEFT JOIN tablo_ismi2
ON kolon_ismi=kolon_ismi2


SqlQuery35_2.sql
SELECT * FROM r1 LEFTJOIN r2 ON r1.id=r2.id;

Right Outer Join

İki tablo ile işlem yapıldığı düşünülürse ikinci tablonun tamamını, ilk tablonun ise ikinci tabloyla eşleşen kısımlarını alır.


SELECT kolon_ismi
FROM tablo_ismi
RIGHT JOIN tablo_ism…

SQL Ders40 - CONSTRAINTS | FOREIGN KEY

FOREIGN KEY
Başka bir tablonun PRIMARY KEY'i geçerli tabloda FOREIGN KEY olarak adlandırılır.


CREATE TABLE tablo_ismi(
degisken_ismi degisken_tipi FOREIGN KEY REFERENCES tablo_ismi(kolon_ismi)
);


veya


CREATE TABLE tablo_ismi(
degisken_ismi degisken_tipi
CONSTRAINT sınırlandırma_ismi FOREIGN KEY (kolon_ismi)
);


FOREIGN KEY sınırlandırmasını daha önce oluşturulmuş bir tabloya ekleme


ALTER TABLE tablo_ismi
ADD FOREIGN KEY(kolon_ismi) REFERENCES tablo_ismi(kolon_ismi)
;


veya


ALTER TABLE tablo_ismi
ADD CONSTRAINT sınırlandırma_ismi
FOREIGN KEY(kolon_ismi) REFERENCES tablo_ismi(degisken_ismi);


FOREIGN KEY sınırlandırmasını kaldırma


ALTER TABLE tablo_ismi
DROP CONSTRAINT sınırlandırma_ismi;



SQL Ders38 - CONSTRAINTS | UNIQUE

Bir kolondaki tüm verilerin farklı değerleri olmasını sağlar. Daha önce olan veriyi tabloya eklettirmez.


CREATE TABLE tablo_ismi(
degisken_ismi degisken_tipi UNIQUE);


veya


CREATE TABLE tablo_ismi(
degisken_ismi degisken_tipi
UNIQUE(degisken_tipi));


UNIQUE sınırlandırmasını daha önce oluşturulmuş bir tabloya ekleme


ALTER TABLE tablo_ismi
ADD UNIQUE (kolon_ismi);


Birden fazla kolonda UNIQUE sınırlandırmasını eklemek için


ADD CONSTRAINT sınırlandırma_ismi UNIQUE (kolon_ismi,kolon_ismi)


UNIQUE sınırlandırmasını kaldırmak için


ALTER TABLE tabllo_ismi
DROP CONSTRAINT sınırlandırma_ismi;


veya


ALTER TABLE tablo_ismi
ALTER COLUMN degisken_ismi degisken tipi;


SqlQuery38.sql
CREATETABLE test (t int UNIQUE);
SqlQuery38_2.sql
ALTERTABLE test ADDUNIQUE(t);
SqlQuery38_3.sql
ALTERTABLE test ALTERCOLUMN T int;

SQL Ders39 - CONSTRAINTS | PRIMARY KEY

PRIMARY KEY 

NOT NULL ve UNIQUE kombinasyonudur. Her tablo için bir tane mevcuttur.


CREATE TABLE tablo_ismi(
degisken_ismi degisken_tipi PRIMARY_KEY);


veya


CREATE TABLE tablo_ismi(
degisken_ismi degisken_tipi
CONSTRAINT sınırlandırma_ismi PRIMARY_KEY(kolon/kolonlar_ismi);
);


PRIMARY KEY sınırlandırmasını daha önce oluşturulmuş bir tabloya ekleme


ALTER TABLE tablo_ismi
ADD PRIMARY KEY (kolon_ismi);


veya


ALTER TABLE tablo_ismi
ADD CONSTRAINT sınırlandırma_ismi PRIMARY KEY (kolon/kolonlar_ismi);


PRIMARY KEY sınırlandırmasını kaldırma


ALTER TABLE tablo_ismi
DROP CONSTRAINT sınırlandırma_ismi;


SqlQuery39.sql
CREATETABLE test(t int NOTNULLCONSTRAINT pm_key PRIMARYKEY(t) );
SqlQuery39_2.sql
ALTERTABLE test ADDCONSTRAINT pm_key PRIMARYKEY(t);
SqlQuery39_3.sql
ALTERTABLE test DROPCONSTRAINT pm_key;

SQL Ders37 - CONSTRAINTS | NOT NULL

NOT NULL

Bir kolonun değerinin NULL olarak bırakılmamasını sağlar.


CREATE TABLE tablo_ismi(degisken_ismi degisken_tipi NOT NULL);


NOT NULL sınırlandırmasını ekleme


ALTER TABLE tablo_ismi
ALTER COLUMN kolon_ismi kolon_tipi NOT NULL;


NOT NULL sınırlandırmasını kaldırma


ALTER TABLE tablo_ismi
ALTER COLUMN kolon_ismi kolon_tipi NULL;


SqlQuery37.sql
CREATETABLE test(t int NOTNULL);
SqlQuery37_2.sql
ALTERTABLE test ALTERCOLUMN t int NULL;

SQL Ders36 - CONSTRAINTS

SQL'de tablodaki verileri için özel kısıtlamalar belirtebilirsiniz. Bu kısıtlamalara contraints denilmektedir. Kısıtlamalar kolon seviyesinde veya tablo seviyesinde olabilir. Kolon seviyesindeki kısıtlamalar sadece kolonu kapsarken, tablo seviyesindeki kısıtılamalar tüm tabloyu kapsar.

SQL'de sıklıkla kullanılan kısıtlamalar (constraints)
NOT NULL Bir kolonun değerinin NULL olarak bırakılmamasını sağlar.UNIQUE Bir kolondaki tüm verilerin farklı değerleri olmasını sağlar.PRIMARY KEY NOT NULL ve UNIQUE kombinasyonudur. Her tablo için bir tane mevcuttur.FOREIGN KEY Başka bir tablonun PRIMARY KEY'i geçerli tabloda FOREIGN KEY olarak adlandırılır.CHECK Bir tablonun kolonlarının özel bir koşula bağlı olarak atanmasını sağlar. Örneğin, ilgili kolona 0'dan küçük sayılar girilememesi gibi.DEFAULT Tabloya bir veri eklendiğinde ilgili kolona ait bir değer yoksa, hali hazırda bulunan DEFAULT değer kullanılır.INDEX Veritabanına hızlı veri kaydetmek ve almak için indexleme yapar.

SQL Ders43 - CONSTRAINTS | INDEX

INDEX
Veritabanına hızlı veri kaydetmek ve almak için indexleme yapar.


CREATE UNIQUE INDEX index_ismi
ON tablo_ismi (kolon1, kolon2, ...);



CREATE INDEX index_ismi
ON tablo_ismi (kolon1, kolon2, ...);


INDEX sınırlandırmasını silme


DROP INDEX table_ismi .index_ismi;







SQL Ders42 - CONSTRAINTS | DEFAULT

DEFAULT
Tabloya bir veri eklendiğinde ilgili kolona ait bir değer yoksa, hali hazırda bulunan DEFAULT değer kullanılır.


CREATE TABLE tablo_ismi(
degisken_ismi degisken_tipi DEFAULT deger;
);


DEFAULT sınırlandırmasını daha önce oluşturulmuş bir tabloya ekleme


ALTER TABLE tablo_ismi
ALTER COLUMN kolon_ismi SET DEFAULT deger;


DEFAULT sınırlandırmasını silme


ALTER TABLE tablo_ismi
ALTER COLUMN kolon_ismi DROP DEFAULT;


SQL Ders41 - CONSTRAINTS | CHECK

CHECK
Bir tablonun kolonlarının özel bir koşula bağlı olarak atanmasını sağlar. Örneğin, ilgili kolona 0'dan küçük sayılar girilememesi gibi.


CREATE TABLE tablo_ismi(
degisken_ismi degisken_tipi CHECK (kosul)
);


veya


CREATE TABLE tablo_ismi(
degisken_ismi degisken_tipi
CONSTRAINT sınırlandırma_ismi CHECK (kosul)
);


CHECK sınırlandırmasını daha önce oluşturulmuş bir tabloya ekleme


ALTER TABLE tablo_ismi
ADD CHECK (kosul);


veya


ALTER TABLE tablo_ismi
ADD CONSTRAINT sınırlandırma_ismi CHECK (kosul)


CHECK sınırlandırmasını silme


ALTER TABLE tablo_ismi
DROP CONSTRAINT  sınırlandırma_ismi;


SQL Ders34 - UNION | UNION ALL

Resim
SQL'de UNION ve UNION ALL operatörü 2 veya daha fazla tablonun sorgu sonuçlarını birleştirmek için kullanılır.

Bu operatörü kullanabilmek için gerekli kurallar;
Sonucu birleştirilecek tablolar aynı sayıda kolon içermelidir.Sonucu birleştirilecek tabloların kolon tipleri karşılıklı eşleşmelidir.Sonucu birleştirilecek tabloların kolonları aynı sırada olmalıdır. Kopya satırların tekrar tekrar gösterilmemesi için UNION operatörü kullanılır.


SELECT kolon_ismi
FROM tablo_ismi
UNION
SELECT kolon_ismi
FROM tablo_ismi


 p1 tablosu

p2 tablosu
SqlQuery34.sql
SELECT * FROM p1 UNIONSELECT * FROM p2;

Kopya satırların tekrar tekrar gösterilmesi için UNION ALL operatörü kullanılır.


SELECT kolon_ismi
FROM tablo_ismi
UNION ALL
SELECT kolon_ismi
FROM tablo_ismi


SqlQuery34_2.sql
SELECT * FROM p1 UNIONALLSELECT * FROM p2;


SQL Ders33 - VIEW

Resim
SQL'de VIEW operatörü sanal tablo oluşturmak için kullanılır.

VIEW oluşturma


CREATE VIEW view_ismi AS
SELECT kolon_ismi
FROM tablo _ismi;



SqlQuery33.sql
CREATEVIEW istanbullular ASSELECT * FROM kisiler WHERE sehir='istanbul';
VIEW kullanma


SELECT kolon_ismi
FROM view_ismi;


SqlQuery33_2.sql
SELECT * FROM istanbullular;


VIEW güncelleme


ALTER VIEW view_ismi AS
SELECT kolon_ismi
FROM tablo_ismi;


SqlQuery33_3.sql
ALTERVIEW istanbullular ASSELECT * FROM kisiler WHERE sehir='londra';
VIEW silme


DROP VIEW view_ismi;


SqlQuery33_4.sql
DROPVIEW istanbullular;

SQL Ders32 - UPDATE

Resim
SQL'de UPDATE operatörü tablo üzerinde günceleme yapmayı sağlar.


UPDATE tablo_ismi
SET kolon_adi=deger;
WHERE kosul;


SqlQuery32.sql
UPDATE kisiler SET sehir='istanbul'WHERE ad='enes';


SQL Ders31 - ANY | ALL | EXIST | NOT EXISTS

Resim
SQL'de ANY operatörü herhangi biri anlamı, ALL operatörü hepsi anlamı, EXIST operatörü mevcut ise ve NOT EXISTS operatörü mevcut değilse anlamı taşır.


SELECT kolon_ismi
FROM tablo_ismi
WHERE kolon_ismi (<,>,=,.....) ANY ( ALT SORGU )



SELECT kolon_ismi
FROM tablo_ismi
WHERE kolon_ismi (<,>,=,.....) ALL ( ALT SORGU )



SELECT kolon_ismi
FROM tablo_ismi
WHERE EXIST ( ALT SORGU )



SELECT kolon_ismi
FROM tablo_ismi
WHERE NOT EXIST ( ALT SORGU )



SqlQuery31.sql
SELECT id FROM kisiler WHERE id > ANY( SELECT id FROM kisiler );
kisiler tablosunda idsi herhangi birinden daha büyük olan kişilerin idlerini geri döndürür.



SqlQuery31_2.sql
SELECT id FROM kisiler WHERE id >= ALL( SELECT id FROM kisiler );
kisiler tablosunda idsi hepsinden büyük veya eşit olan kişilerin idlerini geri döndürür.



SqlQuery31_3.sql
SELECT id FROM kisiler WHEREEXISTS( SELECT * FROM kisiler WHERE id=3 );
Alt sorgu doğru ise tüm idleri döndürür.




SQL Ders30 - HAVING

Resim
SQL'de HAVING operatörü GROUP BY operatörüne koşul koymak için kullanılır. WHERE operatörü her bir tablo verisine koşul koymak için kullanılıyordu. HAVING operatörü ise gruplama yapıldıktan sonra bu gruplara bir koşul koymak için kullanılır.


SELECT kolon_ismi
FROM tablo_ismi
WHERE kosul
GROUP BY kolon_ismi
HAVING kosul2;


SqlQuery30.sql
SELECT ulke,count(ulke) FROM kisiler WHERE id BETWEEN2AND4GROUPBY ulke HAVINGCOUNT(id)>=2ORDERBYcount(id) DESC;
Yukarıdaki sorgu kisiler tablosunun verilerini idsi 2 ve 4 arasında olan verileri ülkelere göre gruplandırır ve bu gruplandırmada ülkedeki kisi sayısı 2 veya daha fazla ise onları idleri azalan sırada ülke ve ülkedeki kişi sayısı kolonlarına koyar.





SQL Ders29 - GROUP BY

Resim
SQL'de GROUP BY operatörü kolonları ortak değerlere göre gruplamayı sağlamaktadır.


SELECT kolon_ismi
FROM tablo_ismi
WHERE kosul
GROUP BY kolon_ismi


SqlQuery29.sql
SELECT ulke,count(ulke) FROM kisiler GROUPBY ulke ORDERBYcount(id) DESC;
Yukarda kisiler arasında hangi ülkeye kaç kişi mensup olduğunu görülebilmesi için gerekli sorgu yazılmıştır.





SQL Ders20 - SELECT NULL

Resim
SQL'de NULL verilerin ilgili kolonda değeri atanmayan değerleridir. SQL sorgularda duruma göre NULL veya NOT NULL komutları kullanılabilir.


SELECT kolon_ismi
FROM tablo_ismi;
WHERE kolon_ismi IS NULL;



SELECT kolon_ismi
FROM tablo_ismi;
WHERE kolon_ismi IS NOT NULL;



CREATE TABLE tablo_ismi(
kolon_ismi kolon_tipi NOT NULL
);


SqlQuery20.sql
SELECT * FROM personeller WHERE AD ISNOTNULL;

SQL Ders19 - SELECT SUM

Resim
SQL'de SUM operatörü belirli bir kolondaki satir değerlerinin toplanmasını sağlamaktadır.


SELECT SUM(kolon_ismi)
FROM tablo_ismi;


SqlQuery19.sql
SELECTSUM(MAAS) AS toplam FROM personeller;


SQL Ders18 - SELECT IN

Resim
SQL'de IN operatörü çoklu OR operatörünü indirgemek için kullanılır. Birçok OR operatörü yerine tek bir IN operatörü ile aynı iş yapılmış olur.


SELECT kolon_ismi
FROM tablo_ismi
WHERE kolon_ismi IN (deger1,deger2);


SqlQuery18.sql
SELECT * FROM personeller WHERE ID IN (1,3,5);

SQL Ders17 - SELECT AS

Resim
SQL'de AS operatörü tablo kolonuna geçici isim vermek için kullanılır.


SELECT kolon_ismi AS gecici_isim
FROM tablo_ismi;


SqlQuery17.sql
SELECT ID ASNO, AD AS ISIM, MAAS AS GELİR FROM personeller;


SQL Ders28 - LIKE

Resim
SQL'de LIKE komutu WHERE koşuluyla birlikte belli bir patterne (desen) sahip veriyi aramak için kullanılır.
% operatörü  0,1 veya daha çok karakter yerine geçer._ operatörü 1 karakter yerine geçer. Örnek kullanımlar aşağıda belirtilmiştir.


WHERE kolon_ismi LIKE  'e%' -> 'e' ile başlayanlar.



WHERE kolon_ismi LIKE  '%e' -> 'e' ile bitenler.



WHERE kolon_ismi LIKE  '%e%' -> 'e' içerenler.



WHERE kolon_ismi LIKE  '%e_' ->  sondan 2. harfi 'e' olanlar.



WHERE kolon_ismi LIKE  '_e_' -> 3 harfli olup ortadaki harfi 'e' olanlar.



WHERE kolon_ismi LIKE  'e%e' -> 'e' ile başlayıp 'e' ile bitenler

, SqlQuery28.sql SELECT * FROM personeller WHERE AD LIKE'%es%';