ben

OMÜ , Bilgisayar Mühendisliği, 13'

21 Ağustos 2019 Çarşamba

DML komutları

GİRİŞ 

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: