MySQL Eğitimi #2

MrMaXim

Katılımcı Üye
16 Eki 2020
434
234
Yeşil Olan Yerler
pbgmpmt.png


Herkese merhaba arkadaşlar bu ders MySQL Eğitimi konusunun üçüncü dersidir. Bu derste birden fazla tablo ile işlem yapacağız ve MySQL in diğer özelliklerinden bazılarını göreceğiz.


Öncelikle MySQL Workbench imizi açıyoruz. Veritabanımıza bağlanıp giriş yapıyoruz. Geçen dersten hatırlarsınız ki ilksema isimli bir şema (veri tabanı) oluşturmuştuk. Bu veri tabanı üzerinde işlemlerimizi gerçekleştirmiştik. Şimdi burada (içinde) bir calısan tablomuz vardı. Bu calısan tablosunda tuttuğumuz veriler “calısan_id, calısan_ad, calısan_soyad” dı. Çalışma sistemine gelince yukarıda bir SQL sorgu alanı vardı ve buraya yazdığımız sorgulardan aşağı kısımda çıktı alıyorduk. Bu kısımdan biz yeni kayıtlar girebiliyorduk. Örneğin id 4 ad deniz soyad dereli, id 5 ad eren soyad ermez, id 6 ad fatma soyad filiz. Yeni girdilerle tablo şu şekilde oldu.


k9ozbic.png



Bunun dışında form editörü ile de veri girişi yapabiliriz ya da Field Types diyerek alanların türlerini görebiliriz. Ancak biz en ideal görünüm olan grid yani hücresel görünümde kullanmaya devam edelim.


Şimdi gelelim biz daha önceden oluşturduğumuz bir tabloya alan eklemek istersek ne yapmalıyız. Bunun için schemas kısmından tablomuza geliyoruz ve tablonun yanındaki “ayar simgesi gibi bir anahtar simgesi” var. (Resmini aşağıya koyarım) o simgeye tıklayarak tablomuzda alan eklemeleri yapabiliriz. Yine aynı yöntem ile alan çıkarma işlemini de yapıp alanları silebiliriz.


jm734af.png



Örneğin bir alan daha yapalım. calısan_not adı altında integer bir değer atadım. Apply diyelim, apply diyelim, ve finish diyelim. Bunu yapınca tablomuzda oluşan yeni alanın eklendiğini görebileceksiniz. Yeni alan siz de gelmediyse açık olan tabloyu “X” işaretine tıklayarak kapatın ve schemas dan tekrar açarak yenilenmesini sağlayın göreceksiniz ki eklenmiş olacak. Ya da bir alternatif olarak tabloya sağ tıklayıp refresh all seçeneğine tıklayabilirsiniz. Şimdi gelin yeni açılan calısan_not kısmına veri girerim. ( Ben ID olarak ilerledim siz isterseniz farklı bir şey yapabilirsiniz) id 1 50, id 2 70, id 3 80, id 4 100, id 5 85, id 6 45. Yine apply apply finish ve tablonun son hali.


edeha80.png



Şimdi veri tabanının içindeki tables alanına yeni bir tablo ekleyelim. Schemas > Tables > Sağ tık > create table.


Table name: adres



Column name:


calısan_id(PK, NN) int


adresco (varchar (100))


tel (varchar (45))


Apply Apply Finish.


Şimdi, hocam sen ne yaptın? Burada yine calısan_id niye var, adresco neden varchar(100) ve tel alanını neden sözel olarak aldım? Sırasıyla şöyle calısan_id yi tekrar yazmamın sebebi öbür tablo ile bağlantı sağlamak zaten fark ettiyseniz calısan_id burada da primary key olarak bulunmakta. adresco neden varchar? Çünkü adres alanına yazdığımız text uzun olabilir. Tel değerini neden sözel tuttuğuma gelince…arkadaşlar bir telefon değerini integer olarak tutarsak telefon değerini çekip üzerinde sayısal bir işlem mi yapacağız. Tabii ki de hayır. O yüzden tel değeri sözel olarak tutulur ve çağrıldığında da kalıp gibi tak diye önümüze gelir. Bu tablo ile işimiz bitti kaydettikten sonra kapatabilirsiniz. Gördüğünüz üzere zaten tables kısmına da gelmiş bulunmakta.


l0cgqcr.png



Şimdi adres tablosuna veri girişi yapalım.


id 1 adres izmir tel 123



id 2 adres tokat tel 321


id 3 adres izmit tel 486


id 4 adres istanbul tel 971


id 5 adres kars tel 101


id 6 adres trabzon 561



Not: Adresleri ve telefonları uzun uzun yazmadım, kafa karıştırmaması adına verileri bu şekilde girdim arkadaşlar. Apply, Apply, Finish diyelim ve tablonun son hali şu şekildedir.


amt3lem.png



Şuan aslında basit bir data base oluşturmuş bulunmaktayız. Bir calısan tablomuz var ve içinde id, ad, soyad, no bilgileri var. Bir de adres tablomuz var. Bunda ise id, adres ve telefon bilgileri mevcut. Ayrıca bu iki tablo id ile birbirine bağlı bir durumdadır.


Hadi gelin bir sorgu deneyelim. SELECT * FROM adres,calısan; bu şekilde yazıp çalıştığımızda burada bir çarpma işlemi gerçekleştirecek ve bize tüm olasılıkları sunacak.


jy3cc49.png



Ancak biz bunu istemiyoruz o yüzden koşul parametresi girmemiz gerekir. SELECT * FROM adres,calısan where adres.calısan_id=calısan.calısan_id; Burada belirtmek istediğimiz şu: Eğer calısan tablosundaki calısan_id, adres tablosundaki calısan_id ile eşitse bize temizle getir, diyoruz. Çıktı başlangıç için gayet tatmin edici ve temiz.


rotqu5v.png



Yukarıda gördüğünüz gibi geldi. Ancak bu sorguda calısan_id iki kez yazıldı. Bu sorguyu şuan sorgu mantığını anlamamız açısından yazdım yoksa bu sorgu çok ilkel bir sorgudur. Asli kullanımda tavsiye etmem ancak deneme amaçlı kullanabilirsiniz. Şöyle düşünün en azından az önceki sorgu gibi çarpma işlemi ile tüm olasılıkları görmek yerine verileri ayıklamış olduk.


Burada gördüğünüz gibi,


1 ahmet ala izmir



2 ceren cansever izmit


4 deniz dereli istanbul


5 eren ermez kars


6 fatma filiz trabzon


şeklinde çıktı almış bulunmaktayız.


Burda tabi belirli parametreleri değiştirerek alanları azaltabiliriz. Örneğin calısan ı başa alalım. SELECT calısan.*,adres.adresco,adres.tel FROM calısan,adres where adres.calısan_id=calısan.calısan_id;


Kodda bir yanlış olursa MySQL Workbench sizi uyaracaktır. Doğru şekilde yazdığınızdan emin olun. Tecrübelerime dayanarak söylüyorum ben SQL eğitimi alırken aynı sınıfta bulunduğum çoğu arkadaşım sadece bir “;” den kodu çalışmayıp saatlerce uğraştığını biliyorum. :D Kodu çalıştırdığımızda gördüğünüz gibi ortadaki id gitti. Bu şekilde daha düzenli bir çıktı aldık. Bu kodda sadece calısan tablosunun tüm elemanları ile adres tablosunun id alanı hariç tüm kolonlarını çektik ve sonuç.


dizqabr.png



Böylece iki tablodan da basit düzeyde veri çekmiş olduk arkadaşlar. Bu günlük konumuz bu kadar. Teşekkür ederim
iyi forumlar.
 

S3SS1Z T3AM

Uzman üye
27 Nis 2019
1,422
709
HACKERİSTAN
çok uğraş istiyor , exploit edip veri çekmek daha iyi gibi :LOL:
şaka bir yana hep bozmak olmaz bazen de düzeltmek , inşa etmek gerekir. Eline Koluna sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.