Oracle da ders yazısının ilk kısmına burdan başlıyoruz. Derslerde yapılan sorgular enabiz veritabanı üzerinden yapılacaktır. daha önceki yazılardan nasıl kurulduğuna bakabilirsiniz.
Her bilgisayarı açtığınızda sql plusi açıp:
--- sys as sysdba ile oturum açın
--- alter database open;
--- alter session set container=pdbhastane;
bu işlemden sonra , sqldeveloperda şifre ile oturum açabilirsiniz.
DML KOMUTLARI
1) SELECT
Tablodaki tüm alanları getirmek için;
--- select * from table_name;
Tablodaki istenileni getirmek için;
--- select column1, column2, .... from table_name;
WHERE Koşulları
Belli koşullara göre veri getirmek istediğimizde where ile şart bildiririz.
--- select column1, column2, .. from table_name where condition;
a) > operatörü
Büyüktür operatörüdür. WHERE deyimi ile birlikte kullanılır, ilk değerin ikincisinden büyüklüğünü kontrol eder.
--- select * form tbl_hasta where yasi>20
b) < operatörü
Küçüktür operatörüdür. WHERE deyimi ile birlikte kullanılır, ilk değerin ikincisinden küçüklüğünü kontrol eder.--- select * form tbl_hasta where yasi<20
c) >= operatörü
Büyük eşittir operatörüdür. WHERE deyimi ile birlikte kullanılır, ilk değerin ikincisinden büyüklüğünü ve ona eşitliğini kontrol eder.
--- select * form tbl_hasta where yasi>=20
d) <= operatörü
Küçük eşittir operatörüdür. WHERE deyimi ile birlikte kullanılır, ilk değerin ikincisinden küçüklüğünü ve ona eşitliğini kontrol eder.
--- select * form tbl_hasta where yasi<=20
e) <>, ! operatörü
İki türde de kullanılabilir, <>, != gibi. Eşit değildir operatörüdür. Belirtilen ilk değerin ikincisine eşit olmadığını kontrol eder. Burada != yerine <> kullanırsak da aynı sonucu alırız
--- select * form tbl_hasta where yasi!=20
f) = operatörü
Eşitlik operatörüdür.
--- select * form tbl_hasta where yasi=20
g) AND operatörü
Verilen şartlardan tümünün sağlanması istendiğinde kullanılır.
--- SELECT * FROM Customers WHERE Country='Germany' AND City='Berlin';
h) OR operatörü
Verilen şartlardan herhangi biri sağlanması istendiğinde kullanılır
--- SELECT * FROM Customers WHERE Country='Germany' OR City='Berlin';
DİKKAT: Aşağıdaki sorguların çıktılarına dikkat ediniz:
select * from tbl_hastaprofil
where (boy<=1.61 OR cinsiyet='K') and yasi>30
where boy<=1.61 OR (cinsiyet='K' and yasi>30)
where boy<=1.61 OR cinsiyet='K' and yasi>30
ı) NOT operatörü
Verilen şartın dışındaki veriler için kullanılır
-- SELECT * FROM Customers WHERE NOT Country='Germany';
DİKKAT: Not operatörü ile != operatörü arasında nasıl bir fark var? biraz düşünelim..
i) IS NULL operatörü
Tabloda verilen alanda null olan kayıtları getirir.
---SELECT LastName, FirstName, Address FROM Persons WHERE Address IS NULL;
,j) IS NULL operatörü
Tabloda verilen alanda null olmayan kayıtları getirir.
---SELECT LastName, FirstName, Address FROM Persons WHERE Address IS NOT NULL;
k) LİKE operatörü
Soyadı “A” harfi ile başlayan hastalar
--- select * from tbl_hasta where hasta_soyadı like 'A%';
Soyadının son harfi “A” olan hastalar
--- select * from tbl_hasta where hasta_soyadı like ‘%a';
Soyadının içerisinde “er” ifadesi geçen hastalar
--- select * from tbl_hasta where hasta_soyadı like ‘%er%';
Soyadi içerisinde “er” ifadesi geçmeyen hastalar
--- select * from tbl_hasta where hasta_soyadı not like ‘%er%';
LİKE -Joker Karakterler (Wildcards)
Bir veya birden fazla karakterin yerine geçebilen karakterlere joker karakter diyoruz SQL dilinde joker karakterleri yalnızca LIKE işleci ile birlikte kullanıyoruz
--- select * from tbl_hasta where hasta_soyadı like '%_ar';
- uye_adi alanında hdzafer, hczafer, hazafer gibi kayıtlar
- LIKE ‘_a_’ : Üç harfli ortadaki harfi “a” olanlar.
- LIKE ‘ m_s_n’ : mısın, musun, müsün veya muson gibi bir çok kelime
--- SELECT * FROM uyeler WHERE uye_adi LIKE 'h_zafer'
SQL: Kangrubu + olan bayan 30 yasın ustundeki getiren sorgu
--- select * from tbl_hastaprofil where kangrubu like '%+%' and cinsiyet='K' and yasi>30
SQL: hastane adında Çocuk kelimesi gecen , Devlet hastanelerini getiren sql komutu
---select * from tbl_hastane where hastane_adi like '%Çocuk%' and tur='devlet'
k) IN / NOT IN operatörü
Verilen alan , verilen listedeki alanlardan biriyse sorguya dahil olur.
--- SELECT * FROM Customers WHERE Country IN ('Germany', 'France', 'UK');
--- SELECT * FROM Customers WHERE Country NOT IN ('Germany', 'France', 'UK');
DİKKAT: Aşağıdaki sorgular arasındaki nasıl bir fark var?
--- select * from tbl_hastaprofil where boy=1.40 or boy=1.60 or boy=1.70
--- select * from tbl_hastaprofil where boy in (1.40, 1.60,1.70)
k) BETWEEN / NOT BETWEEN operatörü
Bir alanın değerinin iki değer arasında olup olmadığına dair koşul tanımlamak istediğimizde kullanılır. Örneğin “yaşı 20 ile 30 arasında olanlar”
--- select * from tbl_hastaprofil where boy between 1.40 and 1.70
DİKKAT: Between operatörü sadece sayısal alanlardamı kullanılır, örneğin ali ile mehmet arasındakiler gibi bir sorgu yazılabilirmi?
SQL: Yasi 20 ve 50 arasında olmayan erkek hastaların kilosu 50 nin üstü olanların kangrublarını getiren sorguyu yazın
--- select kangrubu from tbl_hastaprofil where yasi not between 20 and 50 and cinsiyet='E' and kilo>50
2) UPDATE
Mevcut olan bir detayı değiştirmek için kullanılır. Örneğin, bir persenelin bolumu değiştiğinde;
---- update personel set departman_id=1 where personel_id=98;
3) DELETE
Tablodan silmemiz gereken bir veri olduğunda kullanılır. Bir personel işten ayrıldı ve artık personel tablosunda olmaması gerekiyor:
--- delete from personel where personel_id=50;
DİKKAT: where koşulları sadece select komutuna ait değildir. select update ve delete içinde where koşulu yazılabilir. Aşağıdaki komutları inceleyiniz:
- update tbl_ucret set ucret=40 where ucret between 20 and 21;
- select count(*) from tbl_hastaprofil where kilo between 50 and 60;
- delete from tbl_hastaprofil where kilo between 50 and 60;
4) INSERT
Veritabanındaki bir tabloya yeni veriler eklemek için kullanılır. Veri girişi yapılırken karakter tipli veriler tek tırnak içine alınır, sayısal veriler tırnaksız yazılır. Örneğin, yeni bir kişiyi personel tablosuna ekleyelim:
--- insert into tbl_personel values( 567, 'esra','salman','istanbul')
DİKKAT:
- insert into tbl_hastane values(599,'bilişim hastanesi','devlet','','')
- insert into tbl_hastane(hastane_adi,tur) values(560,'bilişim hastanesi','devlet')
- insert into tbl_hastane(hastane_adi,tur,adres) values(561,'ismek hastanesi','devlet','istanbul/fatih')
- insert into tbl_hastane values(562, 'ismek hastanesi','devlet','02125365636','istanbul/fatih')
SQL: ilaçlar tablosundaki ilaçlar arasından ‘15 MG’ lık olan ilaçların adlarını ve içeriğini listeleyin
--- select ilac_adi,ilac_icerik from tbl_ilac where ilac_adi like '%15 MG%'
SQL: reçete tarihi ‘2017-02-06’ den önce olanların reçete kodlarını listeleyin
--- select recete_kodu from tbl_recete where recete_tarihi<'2017-02-06'
SQL: tok karınla alınmayan ilaçların günlük doz alanlarnı listeleyin
--- select gunluk_doz from tbl_recetetoilac where gunluk_doz not like '%tok%'
SQL: ucreti 20-25 arasında olan ucret tablosundaki verileri getirin
---select * from tbl_ucret where ucret between 20 and 25
SQL: Randevu tarihi ‘2016-04-08’ and ‘2017-04-07’ arasında olmayan ların randevu bilgilerini getrien sorgu
--- select * from tbl_randevu where randevu_tarihi not between '2016-04-08' and '2017-04-07'
Hiç yorum yok:
Yorum Gönder