SQL sorgularından select ile başlayıp joinli yapılara kadar aşağıdaki tablo üzerinden sorgulama yapacağız. Veriler üzerinde sorgulama yapacağımız temel DML komutları: select,update, delete, insert
create table kullanici(
kullanici_id serial primary key,
adsoyad varchar(100) not null,
cinsiyet char(1) check(cinsiyet='K' or cinsiyet='E') not null,
dogum_tarih date,
kilo real default 0,
boy real default 0,
kangrubu varchar(30),
medeni_durum char(1) check(medeni_durum='E' or medeni_durum='B'),
alerjen varchar(200),
mezun_old_unv varchar(300),
adres varchar(100),
hes_kodu char(10) unique
)
1. SELECT
Tablo içerisindeki verileri listelemek için kullanılır.
Tablodaki tüm kayıtları getirmek için : Select * from tablo_adi
Tablodaki bazı sütunları getirmek için: select sütun1, sütun2 .. from tablo_adi
Burada sütün sayısına bakılmaksızın tüm kayıtlar getirilir. Tüm kayıtları getirmek yerine bazı şartları sağlayanları getirmek istersek where koşullarını kullanılırız.
1.1. Karşılaştırma operatörleri: >(büyük), <(küçük), >=(büyük eşit), <=(küçük eşit), != veya <>(eşit değil), = (eşit)
Örnek: Kilosu 50 olan kullanıcıları getiren sql sorgusunu yazınız.
Select * from kullanici where kilo<50
1.2. And, Or, Not: Sorguda birden fazla koşul varsa bunların kullanılma durumuna göre şartları birbirine bağlamamız gerektiğinde kullanılır.
Örnek: Kilosu 50 nin üstünde cinsiyeti E olan veya kilosu 50 nin altında bayan olan kullanıcıları getiren sql sorgusu yazınız.
select * from kullanici where (kilo >50 and cinsiyet='E') or (kilo<50 and cinsiyet='K')
Burada şartları birbirine bağlarken or komutuna dikkat edin. Or kendinden önceki tüm şartlar veya kendinden sonraki tüm şartlar olarak algıladığı için , and ile kullanımında parantez kullanmaya dikkat edin.
1.3. In / Not in : Ayni sütun üzerinde birden fazla şartımız varsa ve bu şartlar or ile birbirine bağlanıyorsa in kullanılır.
Örnek: Ankara ,Istanbul ve Samsundaki kullanıcıları getiren sql sorgusunu yazınız.
Performansı kötü çözüm: select * from kullanici where adres='İstanbul' or adres='Ankara' and adres='Samsun'
Performansı iyi çözüm: select * from kullanici where adres in ('İstanbul' ,'Ankara' ,'Samsun')
1.4. is null, is not null : Tablodaki o alana hiç bir veri girilmediyse o alana default ile varsayılan veri eklenmediyse , o alan null olarak veritabanında tutulur. Null alanları getirmek için is null kullanılır.
Örnek: Mezun old unv alanı hiç girilmeyen kullanıcıları getiren sql sorgusunu yazınız.
select * from kullanici where mezun_old_unv is null
1.5. Between / not between : Bir sütunun değerinin iki aralıkta olması yada olmaması şartı için between kullanılır. Sadece sayısal alan değil , metinsel veriler, tarihsel verilerde de kullanılır.
Örnek: Kilosu 50 ile 80 arasında olan kullanıcıları getiren sql sorgusunu yazınız.
select * from kullanici where between kilo 50 and 80
1.6. Like/not like : Bir metinsel veri içerisinde bir harf yada bir kelime aramak için kullanılır.
-- adı a ile başlayanlar: adsoyad like 'a%'
-- adi a ile bitenler : adsoyad like '%a'
-- içerisinde a geçen : adsoyad like '%a%'
Örnek: Adında Can kelimesi geçen kullanıcıları getiren sql sorgusunu yazınız.
select * from kullanici where adsoyad like '%can%'
1.7. Distinct: select ile getirilen verilerden bir sütuna göre benzersiz alanları getirmek için kullanılır.
Örnek: Alerjen verisine göre tekrarsız verileri getiren sel sorgusunu yazınız.
select distinct alerjen, adsoyad, cinsiyet, dogum_tarih from kullanici
2. UPDATE
Bir tablodaki bir alanı güncellemek için kullanılan komuttur. Aynı komutla bir tablodaki birden fazla alan güncellenebilir. fakat aynı komutla aynı anda birden fazla tabloda alan güncellenemez. select komutunda anlatılan tüm where koşulları burada da geçerlidir.
Örnek: Bayan kullanıcılardan boyu 160 olan kullanıcıları kilosunu 60 olarak güncelleyen sql sorgusunu yazınız.
update kullanici set kilo=60 where cinsiyet='K' and boy=160
3. DELETE
Tablodaki şarta bağlı olan verileri silmek için kullanılır. select ile anlatılan tüm where koşulları burada da geçerlidir.
Örnek: alerjisi olmayan kullanıcılardan hes kodu girilmeyenleri silen sql sorgusunu yazınız.
delete from kullanici where alerjen='yok' and is null hes_kodu
4. INSERT
Tabloya yeni bir veri eklemek için kullanılır. Primary key alanı için veri gönderilmez
Örnek : Yeni bir kullanıcı ekleyen sql komutu kullanılır.
insert into kullanici ( adsoyad ,cinsiyet,dogum_tarih, kilo,boy, kangrubu,medeni_durum, alerjen, mezun_old_unv, adres, hes_kodu ) values('Esra salman','K','02.01.1980',60,165,'AB rh(+)', 'E','Yok','Omü','İstanbul','45ASD76545')
Hiç yorum yok:
Yorum Gönder