SQL Nasıl Kullanılır?

SQL Nasıl Kullanılır?

SQL KOMUTLARI GEREKSİNİMLERİ:

SQL komutları büyük/küçük harf duyarlı değildir. Bir veya birden fazla satıra yazılabilirler.

Anahtar kelimeler satırlar arası bölünemezler. Satır başları okumayı kolaylaştırmak için kullanılırlar.

SQL Developer içinde komutlar noktalı virgül kullanılarak ayırılabilir, birden fazla komut varsa ayrılmak zorundadırlar.

SQL* Plus içinde her komuttan sonra noktalı virgül konmak zorundadır.

SELECT KOMUTU:

«Select» komutu gösterilecek sütunları belirler.

«From» bu sütunların hangi tablodan alınacağını gösterir.

Yıldız (*) bütün elemanları sergilemek için kullanılır.

SELECT *

FROM Stajyerler;

Belirli özellikleri sergilemek için isimlerini belirtmek yeterlidir.

SELECT isim, soyisim

FROM Stajyerler;

SELECT komutuyla birlikte aritmetik operasyonlar kullanılabilir.

SELECT isim, soyisim, günlük_maas, 20*gunluk_maas

FROM Stajyerler;

SELECT komutuna eklenen karakter, sayı ve tarihlere «literal» denir.

Karakter ve tarih literalları tek tırnak içine alınmalıdır.

SELECT soyisim || ‘ proje ekibi: ’|| grup_ismi

AS «Grup Yerlestirmesi»

FROM Stajyerler;

Eğer her girişin tek bir örneği görülmek isteniyorsa (kopyalar görünmeyecek şekilde) DISTINCT kullanılır.

SELECT DISTINCT stajyer_id

FROM Stajyerler;

Eğer kullanılacak literal tek tırnak içeriyorsa Alternative Quote (q) kullanılır.

SELECT soyisim || q ‘ [ TET’in stajyerinin proje gurbu: ] || grup_ismi

AS «Grup Yerlestirmesi»

FROM Stajyerler;

SORTING:

Belirli bir koşula göre sergileme yapmak için «Where» kullanılır

SELECT isim, soyisim

FROM Stajyerler

WHERE grup_ismi= ‘METIS’;

SELECT isim, soyisim

FROM Stajyerler

WHERE gunluk_maas BETWEEN 50 AND 75;

«LIKE» operatörü geniş çaplı aramalar için kullanılır.

& sıfır veya sıfırdan fazla karakter anlamına gelir.

_ bir karakter anlamına gelir.

İkinci harfi «i» olan isimleri sergilemek için:

SELECT isim

FROM Stajyerler

WHERE isim LIKE ‘_i&’;

NULL değerleri tespit etmek için:

SELECT isim, grup_ismi

FROM Stajyerler

WHERE grup_ismi= NULL;

AND: Her iki durum da doğruysa doğru döndürür.

OR: Durumlardan biri doğruysa doğru döndürür.

NOT: Durum yanlışsa doğru döndürür.

SELECT * //Metis grubunda 50 TL altı günlük maaş alanlar

FROM Stajyerler

WHERE grup_ismi= ‘METIS’ AND gunluk_maas <= 50 ;

SELECT * //METIS veya V01D grubunda bulunanlar

FROM Stajyerler

WHERE grup_ismi= ‘METIS’ OR grup_ismi= ‘V01D’ ;

SELECT * //METIS ve V01D gruplarında bulunmayanlar

FROM Stajyerler

WHERE grup_ismi NOT IN (‘METIS’, ‘V01D’) ;

SIRALAMA:

ASC: (Ascending) Artan şekilde sırala

DESC: (Descending) Azalan şekilde sırala

ž

SELECT isim, soyisim, alinma_tarihi

FROM Stajyerler

ORDER BY alinma_tarihi;

SELECT *

FROM Stajyerler

ORDER BY gunluk_maas DESC;

ATANAN DEĞİŞKENLER:

& işareti kullanıcıdan alınacak olan geçici değerin alınması ve geçici olarak kaydedilmesi istenilen değişkenin başına konulur.

Kullanıcının girdiği grup ismindeki üyelerin isim ve soy isimleri:

SELECT isim, soyisim

FROM Stajyerler

WHERE grup_ismi= ‘&grup_ismi’;

Alınan değer birden fazla kere kullanılmak isteniyorsa değişkenin başına (&) yerine (&&) konur.

SELECT isim, soyisim, &&deger_ismi

FROM Stajyerler

ORDER BY &değer_ismi;

DEFINE komutunu bir değere atama yapmak, UNDEFINE komutunu bu değeri kaldırmak için kullanırız.

DEFINE en_iyi_grup = ‘METIS’

SELECT isim, soyisim

FROM Stajyerler

WHERE grup_ismi= en_iyi_grup;

UNDEFINE en_iyi_grup;

SQL FONKSİYONLARI:

KARAKTER FONKSİYONLARI:

LOWER (‘METIS Grubu’) -> metis grubu

UPPER (‘METIS Grubu’) -> METIS GRUBU

INITCAP(‘METIS Grubu’) -> Metis Grubu

CONCAT (‘Metis’, ‘Grubu’) -> MetisGrubu

LENGTH (‘MetisGrubu’, 1, 5) -> 10

INSTR (‘MetisGrubu’, ‘G’) -> 6

LPAD (gunluk_maas, 10, *) -> ********50

RPAD (gunluk_maas, 10, *) -> 50********

REPLACE (‘JACK and Jue’, ‘J’, ‘BL’) -> BLACK and BLUE

TRIM (‘M’ FROM ‘MetisGrubu’) -> etisGrubu

SAYI FONKSİYONLARI:

ROUND (45.926, 2) -> 45.93

TRUNC (45.926, 2) -> 45.92

MOD (1600, 300) -> 100

TARİH FONKSİYONLARI:

MONTHS_BETWEEN (‘01-SEP-95’, ‘11-JAN-94’) -> 19.6774194

ADD_MONTHS (‘31-JAN-96’, 1) -> ‘29-FEB-96’

NEXT_DAY (‘01-SEP-95’, ‘FRIDAY’) -> ’08-SEP-95’

LAST_DAY (01-FEB-95’) -> ‘28-FEB-95’

GENEL FONKSİYONLAR:

NVL : NULL değerleri gerçek değerlere dönüştürür.

NVL (gunluk_maas, 0)

NVL (alinma_tarihi, ‘01-JAN-99’)

NVL (grup_ismi, ‘Henuz Bir Grubu Yok’)

GRUPLAMA:

AVG

COUNT

MAX

MIN

STDDEV

SUM

VARIANCE

SELECT MIN(alinma_tarihi), MAX(alinma_tarihi)

FROM Stajyerler;

SELECT AVG (gunluk_maas), MAX (gunluk_maas), MIN (gunluk_maas), SUM (gunluk_maas)

FROM Stajyerler

WHERE grup_ismi= ‘METIS’;

COUNT(*) tablodaki satır sayısını geri döndürür.

SELECT COUNT(*)

FROM Stajyerler

WHERE grup_ismi = ‘V01D’;

COUNT(değer) NULL olmayan değer sayısını döndürür.

SELECT COUNT (gunluk_maas)

FROM Stajyerler

WHERE grup_ismi=‘METIS’;

GROUP BY fonksiyonu belli bir özelliğin altındaki aynı değerdeki girişleri bir araya getirmemizi ve incelememizi sağlar.

Aynı gruptakilerin günlük maaşlarının ortalaması:

SELECT grup ismi, AVG (gunluk_maas)

FROM Stajyerler

GROUP BY grup_ismi;

Aynı anda işe alınan ve aynı gruptaki kişilerin günlük maaşlarının toplamı:

SELECT grup_ismi, alinma_tarihi, SUM(gunluk_maas)

FROM Stajyerler

WHERE gunluk_maas>0

GROUP BY grup_ismi, alinma_tarihi

ORDER BY grup_ismi

GROUP BY fonksiyonlarının biri kullanılacaksa queryde group by bulunmak zorundadır.

Grupları sınırlandırmak için «WHERE» kullanılamaz. Gruplar üzerinde sınırlandırma yapmak için «HAVING» kullanılır.

SELECT grup_ismi, MAX(gunluk_maas)

FROM Stajyerler

GROUP BY grup_ismi

HAVING MAX (gunluk_maas)>10;

JOINLER:

NATURAL JOIN: İki tabloda aynı isimde olan sütunları baz alarak oluşur.

SELECT stajyer_id, isim, sehir, lokasyon_id

FROM Stajyerler

NATURAL JOIN adres;

SELECT stajyer_id, departman_id, soyisim

FROM Stajyerler JOIN Departmanlar

USING (departman_id) ; //foreign key

SELECT stajyer_id, departman_id

FROM Stajyerler ON Departmanlar

USING (departman_id);

— — — — — — — — — — — — — — — — — — — — — —

SUBQUERY:

Query içindeki belirli değerlere ulaşıp sorunları çözmek için subquery kullanırız.

SELECT isim, stajyer_id, gunluk_maas

FROM Stajyerler

WHERE departman_id = (SELECT departman_id

FROM Departmanlar

WHERE departman_ismi =‘ ‘Yazilim’)

Tüm departmanların minimum günlük maaşları içinden 110 numaralı departmanın minimum günlük maaşından fazla olan departmanlar

SELECT departman_id, MIN (gunluk_maas)

FROM Stajyerler

GROUP BY departmant_id

HAVING MIN(gunluk_maas) > (SELECT MIN (SALARY)

FROM Stajyerler

WHERE departman_id = 110);

SET OPERATÖRLERİ:

UNION: İki query (yapılan arama, sorgu) içindeki çifte verileri eledikten sonra tüm satırları döndürür.

UNION ALL: Çifte verileri ayıklamadan iki querydeki tüm satırları döndürür.

INSTERSECT: İki querydeki ortak satırları döndürür.

MINUS: İlk seçili queryde bulunup ikincide bulunmayan tüm satırları döndürür.

DATA MANİPÜLASYONU:

Bir tabloya yeni satırlar eklemek için «INSERT» komutunu kullanırız.

INSERT INTO Stajyerler (stajyer_id, isim, soyisim, departman_id, gunluk_maas, alinma_tarihi)

VALUES ( 3, Nisa, Büyüknalbant, 4, 50, SYSDATE)

//SYSDATE komutu anlık tarihi kaydeder.

Tablolardaki satırları silmek için «DELETE» komutu kullanılır.

DELETE FROM Stajyerler

WHERE deaprtman_id=5;

Tablolardaki satır (entry) güncellemeleri için «UPDATE» komutu kullanılır.

UPDATE Stajyerler

SET gunluk_maas=30

WHERE stajyer_id = 3;

TRUNCATE komutu bir tablodaki tüm satırları silip tabloyu tamamen boş bırakır.

TRUNCATE TABLE Stajyerler;

COMMIT VE ROLLBACK AVANTAJLARI:

Datanın tutarlı kalmasını sağlar.

Değişimleri kalıcı yapmadan önce ön inceleme imkanı sunar.

Grup mantığı ile ilgili operasyonlar içerir.

SAVEPOINT update_gerceklesmedi;

UPDATE Stajyerler

gunluk_maas=45;

ROLLBACK update_gercekelsmedi;

UPDATE Stajyerler

gunluk_maas=50;

COMMIT; //Tüm saving pointler etkisiz hale gelir, data değişimi kalıcı olur

«ROLLBACK» tek başına kullanıldığında datadaki değişiklikler geri alınır, data son durumuna geri döndürülür.

DELETE FROM Stajyerler

WHERE stajyer_id=3;

ROLLBACK;

İSİMLENDİRME KURALLARI:

Tablolar ve sütunlar için geçerli isimlendirme kuralları:

Bir harf ile başlar.

1–30 karakter uzunluğundadır.

A-Z, a-z, 0–9, _, $ ve # karakterlerini içerebilir.

Aynı isimler kullanılamaz.

Oracle server-reserved (anahtar kelime) kullanılamaz.

TABLO YARATMAK:

Yeni bir tablo yaratmak için «CREATE TABLE» komutu kullanılır.

CREATE TABLE alinma_tarihi

( id NUMBER(8) ,

alinma_gunu DATE DEFAULT SYSDATE );

DATA ÇEŞİTLERİ:

VARCHAR2(boyut) -> değişken-boyutlu karakter datası

CHAR(boyut) -> sabit-boyutlu karakter datası

NUMBER (p,s) -> değişken-boyutlu nümerik data

DATE -> tarih ve zaman değerleri

LONG -> değişken-boyutlu karakter datası ( 2 GB’a kadar)

CLOB –> karakter datası ( 4 GB’a kadar)

BLOB -> Binary (0,1) data ( 4 GB’a kadar)

BFILE –> harici bir dosyada tutulan binary data ( 4 GB’a kadar)

PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL

CREATE TABLE elemanlar

( eleman_id NUMBER(6)

CONSTRAINT ele_eleman_id PRIMARY KEY

isim VARCHAR2 (20)

CONSTRAINT ele_isim_nn NOT NULL //null değer girilemez

Email

CONSTARINT ele_email_nn NOT NULL

CONSTARNT ele_email_uk UNIQUE //data tekrarı olamaz

Departman_id NUMBER(6)

CONSTRAINT ele_dept_fk REFERENCES //anne tabloyu tanımlar

Departmanlar (Departman_id)

);

UNIQUE olarak belirtilen değerler NULL olabilirken, primary key değerleri ASLA NULL olamaz. Primary Key ve Unique arasındaki en büyük fark budur.

«DROP» komutu bir tabloyu olduğu gibi geri dönüşüm kutusuna taşır.

DROP TABLE elemanlar;

son

 

Yazar: Nisa Büyüknalbant