T.C.
HALİÇ ÜNİVERSİTESİ
FEN BİLİMLERİ ENSTİTÜSÜ
YÖNETİM BİLİŞİM SİSTEMLERİ ANABİLİM DALI
YÖNETİM BİLİŞİM SİSTEMLERİ PROGRAMI
İLERİ VERİTABANI SİSTEMLERİ DERSİ
MYSQL DATABASE ÜZERİNDE VIEWLAR
YÜKSEK LİSANS SUNUM RAPORU
Hazırlayan
Volkan AVŞAR
Öğretim Üyesi
Yrd. Doç. Dr. Yüksel BAL
İstanbul – 2017
T.C.
HALİÇ ÜNİVERSİTESİ
FEN BİLİMLERİ ENSTİTÜSÜ
YÖNETİM BİLİŞİM SİSTEMLERİ ANABİLİM DALI
YÖNETİM BİLİŞİM SİSTEMLERİ PROGRAMI
İLERİ VERİTABANI SİSTEMLERİ DERSİ
MYSQL DATABASE ÜZERİNDE VIEWLAR
YÜKSEK LİSANS SUNUM RAPORU
Hazırlayan
Volkan AVŞAR
Öğretim Üyesi
Yrd. Doç. Dr. Yüksel BAL
İstanbul – 2017
ÖNSÖZ
Veritabanı sistemlerinin olmazsa olmazı konumunda olan viewlar büyük tablolar üzerinde işlem yapıp bilgi içerisinde kaybolmaktansa büyük tablodan küçük tablolar oluşturup sorgulamalar, eklemeler, çıkarmalar yapmamızı sağlayan oldukça kullanışlı sanal tablolardır.
Bu çalışmamızda bu sanal tabloların MYSQL veritabanı üzerinde kullanımını, örnek uygulamalarını ve sonuçlarını ele aldık. Çalışmamızda anlatılan her konu sonunda bir örnek ile pekiştirdik. Bu örnekleri ise test ederek konunun iyice kavranmasını hedefledik.
Bu çalışmayı 2015-2017 yılları arasında T.C. Haliç Üniversitesi Yönetim Bilişim Sistemleri bölümünün sağladığı katkılar ile hazırlamış bulunuyorum. Eğitimim ve tez çalışmam süresince bana sağladığı katkılardan , verdiği desteklerden dolayı danışmanım Sayın Yrd. Doç. Dr. Yüksel BAL’a teşekkürlerimi bir borç bilirim. Çalışmam süresince bana destek ve yardımcı olan yüksek lisans arkadaşım Giray Bal’a teşekkürlerimi sunarım. Tabiki tüm hayatım boyunca desteklerini esirgemeyen beni hep gözetip kollayan bugünlere gelmemde büyük emek sarfeden aileme sonsuz teşekkürlerimi sunuyorum.
İstanbul, 2017 Volkan AVŞAR
İÇİNDEKİLER
Sayfa No.
KISALTMALAR IV
ŞEKİLLER VI
TABLOLAR V
ÖZET VII
ABSTRACT VIII
- GİRİŞ 9
1.1. VIEW NEDİR? 9
1.2. VIEW OLUŞTURMA 9
1.3. KODLAMA İLE VİEW OLUŞTRUMA 11
2.VIEW YETENEKLERİ ………………………………………………………………….11
2.1. WITH CHECK OPTION 11
3.KULLANICI OLUŞTURMA VE YETKİLENDİRME 19
4. SONUÇLAR 23
KISALTMALAR
Mysql : Veri Tabanı Yönetim Sistemidir.
view : Sanal Tablolar
Syntax : Sözdizimi
TABLOLAR
Sayfa No.
Tablo 1.1. 1
Tablo 1.2. 1
Tablo 1.3. 1
ŞEKİLLER
Sayfa No.
Şekil 1.1. HediSql View Oluşturma 10
Şekil 1.2. HeidiSql View Sorgu Yazma 10
Şekil 1.3. HeidiSql View Sorgulama Ekranı 11
Şekil 1.4. View With Check Option 12
Şekil 1.5. View Delete 13
Şekil 1.6. View Insert 14
Şekil 1.7. View Insert 2 14
Şekil 1.8. View Update 14
Şekil 1.9. View Update2 15
Şekil 1.10. Drop View 15
Şekil 1.11. View Listeleme 16
Şekil 1.12. Farklı İsimde View 16
Şekil 1.13. Farklı İsimde View Sorgu Ekranı 17
Şekil 1.14. View Çağırma 18
Şekil 1.15. View Sorgu İçinde Kullanma 18
Şekil 1.16. View Sorgu İçinde Kullanma 2 19
Şekil 1.17. MySql Userlar 20
GENEL BİLGİLER
Adı ve Soyadı : Volkan AVŞAR
Anabilim Dalı : Yönetim Bilişim Sistemleri
Programı : Yönetim Bilişim Sistemleri
Sunum Danışmanı : Yrd. Doç. Dr. Yüksel BAL
Sunum Türü ve Tarihi : Sunum Raporu – Ocak 2017
ÖZET
MYSQL VERİTABANI ÜZERİNDE VİEWLAR
Veritabanı sistemlerinin olmazsa olmazı konumunda olan viewlar büyük tablolar üzerinde işlem yapıp bilgi içerisinde kaybolmaktansa büyük tablodan küçük tablolar oluşturup sorgulamalar, eklemeler, çıkarmalar yapmamızı sağlayan oldukça kullanışlı sanal tablolardır.
Bu çalışmamızda bu sanal tabloların MYSQL veritabanı üzerinde kullanımını, örnek uygulamalarını ve sonuçlarını ele aldık. Çalışmamızda anlatılan her konu sonunda bir örnek ile pekiştirdik. Bu örnekleri ise test ederek konunun iyice kavranmasını hedefledik.
Çalışmamız sırasında veritabanı düzenleme programı olarak “Heidi SQL” programı kullandık bu programı internet üzerinden bilgisayarınıza indirip kolayca kurabilirsiniz. Sunum içerisinde bu programın kurulumu ve view yeteneklerine de değinerek sadece kodlama ile değil kısa yollar ile de view oluşturma, ekleme, çıkarma konusunu pekiştirmeye çalıştık.
Anahtar Kelimeler: Veritabanı, View, Mysql, Database, HeidiSql, Tablolar
GENERAL INFORMATION
Name and Surname : Volkan AVŞAR
Field : Management Information Systems
Program : Management Information Systems
Supervisor : Yrd. Doç. Dr. Yüksel BAL
Degree Awarded and Date : Master of Science – January 2017
ABSTRACT
MYSQL VIEWS
Views that are essential for database systems are very useful virtual tables that allow you to create small tables and query, join, and subtract large tables if you are working on large tables and getting lost in the information.
In this work, we discussed the use of these virtual tables on the MYSQL database, their sample applications and their results. At the end of each topic discussed in our work, we strengthened with an example. By testing these examples, we aimed to grasp the subject well.
We use “Heidi SQL” program as a database editing program during our work. You can download this program via internet and easily install it. We tried to reinforce the idea of creating, adding and subtracting views, not only by coding but also by short ways, by mentioning the setup and view capabilities of this program in the presentation.
Keywords: Database, View, Mysql, Database, HeidiSql, Tables
1.GİRİŞ
1.1. VIEW NEDİR?
Temel amacı tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal tabloymuş gibi yeniden sorgulayabilmemizi sağlamaktır. Kısaca MySQL’de verilerimizin isteğe bağlı alanlara ve tablolara göre ekranımızda görüntüleme işlemi yapmamızı sağlar. Kullanıcının istediği verilere göre gösterim yapmak veya raporlamak MySQL’de VIEW sayesinde kolaylıkla halledilmektedir.
Veritabanı VIEW ile oluşan datayı saklamaz. Bir VIEW geçen MySQL deyimi her çalıştırıldığında ilgili VIEW sanal tabloyu yeniden oluşturur. VIEW üzerinde yapılan değişikler kendilerini oluşturan kaynak tabloları da etkiler ve aynı değişiklikler kaynak tablolara da yansır. VIEW kullanmanın önemli nedenlerinden bir tanesi sağladığı güvenliktir. Örneğin tablolarınızın tamamının görünmesini istemediğiniz zamanlarda sanal tablo kullanıp tablolarınızın tamamının görünmesini engelleyebilirsiniz. Karmaşık sorguları basitleştirmek, sorgu süresini kısaltmak ve ağ üzerindeki trafiği düşürmek, erişim izinlerini düzenlemek ve farklı sunuculardaki benzer verileri karşılaştırmak içinde kullanılır.
1.2. VIEW OLUŞTURMA
View iki şekilde oluşturulur:
1- Heidi MySQL kullandığımız için Heidi MySQL görünüm penceresinden
2- Sorgu penceresinden kod yazarak
Heidi SQL’de view oluşturma penceresi aşağıdaki gibidir.
Şekil 1.1. HediSql View Oluşturma
Görünüm sekmesine tıkladığımızda aşağıdaki alana sorgumuzu yazabiliyoruz.
Şekil 1.2. HeidiSql View Sorgu Yazma
Sorgumuzdan çıkan sonuçları Heidi MySQL üzerinde veri sekmesinde görebilmekteyiz. Oluşturulan view tabloları sol tarafta bulunmakta.
Şekil 1.3 HeidiSql View Sorguları Ekranı
1.3. KODLAMA İLE VIEW OLUŞTURMA
VIEW oluşturmak için sorguya CREATE VIEW ifadesi de yazılabilir
Genel Yapısı:
“CREATE VIEW view_adı
AS
SELECT * FROM tablo_adi”
Örneğimizde kullandığımız sorgu
“CREATE VIEW sonu18denbuyuk
AS
SELECT * FROM viewornekleri
WHERE tckno > 12345678918”
Sorgu çalıştığında bize tablomuzdan tckimlik numaralarının sonu on sekizden büyük olan tüm sütunları getirdi.
2.VIEW YETENEKLERİ
2.1. WITH CHECK OPTION
MySQL Sever da bazı durumlarda, “view” nesnelerini tanımlarken, gövdesinde “where” anahtar sözcüğüyle bir kriter belirtmiş olabiliriz. Böyle bir “view” nesnesini kullanırken de “view” üzerinden tablolarımıza “insert” işlemi gerçekleştirebiliriz. Genelde piyasada şubelere, veritabanında bazı tabloların bazı kolonlarını görme kısıtlaması getirmek için, bir “view” verilir. Şube ne gibi bir işlem yapmak isterse bu “view” üzerinden gerçekleştirmesi istenir. İşte arkadaşlar eğer bir “view” nesnesi oluşturulurken “where” koşulu kullanılmışsa, o “view” üzerinden tablolara bir “insert” işlemi gerçekleştirilecekse ve bu “insert” işleminin sadece “where” koşuluna göre gerçekleşmesi isteniyorsa, “view” nesnesini tanımlarken “where” koşulundan sonra “with check option” parametresini kullanmak gerekir. Çok basit bir kullanımı vardır. “Where” kriterinden sonra “with check option” yazılır.
Örnek olarak tablomuzda tckimlik numarası son 18 den büyük olan satırları getirdiğimiz kodun sonun “with check option” eklersek bu view içerisinde “INSERT, DELETE,UPDATE ” işlemleri gerçekleştirebiliriz.
Şekil 1.4. View With Check Option
Aşağıdaki örnekte de “sonu18denbuyuk” viewinde “esile” isimli satırı siliyoruz.
Şekil 1.5. View Delete
Veya yine insert seçeneği ile adi hale olan bir satır ekleyebiliriz.
Şekil 1.6. View Insert
Sonuç olarak hem view içeresinde hem de databasemiz de hale isimli yeni bir satır eklendi.
Şekil 1.7 View Insert 2
Veya Update ile güncelleme işlemi yapabiliriz. Aşağıdaki komut sonu18denbuyuk olan viewi içerisinde adi Ahmet olan satırları adi ahmetdegisti olarak değiştirir.
Şekil 1.8. View Update
Sonuç aşağıdaki gibi olacaktır.
Şekil 1.9. View Update2
Viewleri silmek için DROP ifadesi kullanılır.
Şekil 1.10 Drop View
“select * from viewadi” şeklinde olursa viewdeki dataların hepsi ekrana gelecektir. Böylelikle listelenmesini istemediğimiz bilgiler gizlenecektir. Aşağıdaki örnekte daha önceden oluşturduğumuz memleketi ordu olan kayıtları listeliyoruz.
Şekil 1.11 View Listeleme
Bir temel tablodan bir view oluşturulurken, temel tablodaki aynı sütun (alan) isimlerini kullanmak zorunda değildir. Örneğin, farklı isimli view adli viewi oluştururken ana tabloadaki adi yerin ad, soyadi yerine soyad , yas yerine yasi kullanılarak aşağıdaki şekilde viewlar oluşturulabilir.
Şekil 1.12 Farklı İsimde View
Sorgunun çıktısı aşağıdaki gibi olacaktır.
Şekil 1.13 Farklı İsimde View Sorgu Ekranı
Karmaşık sorgulamalarda, bazı SELECT komutlarının sonuçları diğer SELECT komutlarınca kullanıldığında, sorgulamanın düzenlenmesinde yanlışlıklar yapma olasılığı artar. Karmaşık sorgulamalar, VIEW özelliği kullanılarak daha basit hale getirilebilir. Burada temel fikir şudur: Madem ki bir view, bir sorgulama sonucu elde edilen bilgiyi (tabloyu) isimlendirerek elde edilen bir virtüel tablodur; o halde karmaşık SELECT komutu içinde, sonucu kullanılacak başka bir SELECT komutu kullanmak yerine, bu sonucu bir view olarak isimlendirerek, view adını kullanmak. Bazı durumlarda ise, işletmenin veri tabanı uygulamasında çok sık olarak sorulan karmaşık soruları bir view yapısı içinde saklayarak, daha sonra aynı tip sorgulamalar için bu view yapısını kullanarak daha basit ifadeler kullanmakta olasıdır.
Örneğin viewornekleri tablomuzun içinde iç içe selectler ve şartlardan oluşan;
tckno : 12345678915 den büyük olsun
adi: b ile başlasın
Soyadi: s ile başlasın
Memleketi: ordu olsun
Viewini yazdığımızda bir dahaki sefere iç içe bu select komutlarını yasmak yerine viewi çağırmak yeterli olacaktır.
Şekil 1.14 View Çağırma
Bir tablodan elde edilecek bilgiler için, iki kademeli işlem gerektiren sorgulamalarda, ilk adımda bir view oluşturup ikinci adımda esas sorgulamayı bu view yardımı ile gerçekleştirmek, çoğu kez kaçınılmaz bir durumdur. Aşağıdaki soru ve bunun çözümü olan SQL ifadeleri bu konuda bir fikir verecektir:
Örnek olarak viewornekleri tablomuzda yaşı 40’dan büyük olanlar için ayrı bir view oluşturduk sonra bu viewi kullanıp başka bir sorgulamalarda bu viewin ortalamasını aldık böylelikle yaşı 40 dan büyük olanların yaş ortalamasını elde ettik tatbikî bu basit bir örnek oldu ancak örnekler çoğaltılabilir.
Şekil 1.15 View Sorgu İçinde Kullanma
Şekil 1.16 View Sorgu içinde Kullanma 2
3.KULLANICI OLUŞTURMA VE YETKİLENDİRME
Kullanıcı oluşturma, yetkilendirme, silme ve kullanıcıları görüntüleme ile yetkileri görüntüleme gibi MySQL komutları aşağıdaki gibidir.
MySQL’de Yeni Kullanıcı Oluşturma:
“CREATE USER ‘korsan’’;”
Yukarıdaki gibi şifre belirtmeden bir kullanıcı oluşturursanız, herhangi biri ‘korsan’ kullanıcısı üzerinden şifre belirtmeksizin MySQL’e erişebilir durumda olacaktır.
Bu kullanıcıya henüz herhangi bir veri tabanı üzerinde yetki verilmedi. Dolayısıyla MySQL’e bağlanmış olsa bile veri tabanları üzerinde işlem yapamayacaktır. Bu kullanıcıya şifre vermeyi unuttuktan sonra, bir veri tabanı üzerinde yetki verirseniz sonuçlar kötü olabilir.
MySQL’de oluşturacağınız kullanıcılar için host parametresi de verebilirsiniz. Bu ayar “kullanıcı nereden (hosttan) bağlanabilir” sorusunun cevabıdır.
Localhost: Sadece MySQL’in bulunduğu makineden erişilir.
%: Sadece dışarıdan erişilir.
IP: Sadece sizin belirlediğiniz IP’lerden erişilir.
Sadece MySQL’in bulunduğu makineden MySQL’e giriş yapabilen bir kullanıcı oluşturalım:
“CREATE USER ‘korsan’@’localhost’ IDENTIFIED BY ‘powerful_password’;”
Şekil 1.17 Mysql Userlar
Kullanıcıyı yukarıdaki gibi oluşturursanız Navicat, Workbench gibi programlar kullanarak MySQL’e dışardan erişemezsiniz. Sadece o makineden MySQL’e erişebilirsiniz.
Sadece dışarıdan MySQL’e erişebilen bir kullanıcı oluşturalım:
“CREATE USER ‘korsan’@’%’ IDENTIFIED BY ‘another_password’;”
Gördüğünüz üzere, kullanıcı adları aynı olan şifreleri farklı olan 2 farklı kullanıcı oluşturduk. Birisi “powerful_password” şifresi ile sadece içeriden, diğeri ise “another_password” şifresi ile sadece dışarıdan erişebilir durumdadır.
Oluşturduğunuz kullanıcıları şu sorgu ile görüntüleyebilirsiniz:
“SELECT host, user FROM mysql.user;”
Gördüğünüz üzere, kullanıcı adları aynı olan şifreleri farklı olan 2 farklı kullanıcı oluşturduk. Birisi “powerful_password” şifresi ile sadece içeriden, diğeri ise “another_password” şifresi ile sadece dışarıdan erişebilir durumdadır.
Oluşturduğunuz kullanıcıları silmek için 2 farklı yol kullanabilirsiniz:
“DROP USER korsan;”
Kullanıcıyı drop ederseniz sadece % ile oluşturulan kullanıcıyı silmiş olursunuz. Aşağıdaki gibi bir kullanım daha sağlıklı olacaktır.
“DROP USER ‘korsan’@’localhost’;”
“DROP USER ‘korsan’@’%’;”
DROP yerine DELETE’de kullanabilirsiniz. Lakin bu tavsiye edilen bir yol değil.
Zaten bir kullanıcıyı DELETE edip tekrar aynı isimle yaratmaya çalıştığınızda hata oluşuyor.
“DELETE FROM mysql.user WHERE user=’korsan’”
— veya
“DELETE FROM mysql.user WHERE user=’korsan’ AND host=’localhost’;”
“DELETE FROM mysql.user WHERE user=’korsan’ AND host=’%’;”
Kullanıcı oluşturduktan sonra, hangi kullanıcınının hangi veri tabanı ve tablolar üzerinde hangi yetkilere sahip olacaklarını belirlememiz gerekiyor.
Kullanıcı oluştururken yaptığımız gibi yine hosta göre yetkilendirme yapabiliyoruz.
“GRANT ALL PRIVILEGES ON korsanDB.* TO ‘korsan’@’localhost’;”
Yukarıdaki syntax ile “korsan” kullanıcısı “local makineden bağlanarak”, “korsanDB” veri tabanının tüm tablolarında (korsanDB.* ile ifade ediliyor) tüm işlemleri yapabilir.
“GRANT SELECT, INSERT, UPDATE, DELETE ON korsanDB.users TO ‘korsan’@’%’;”
Bu syntax ile “korsan” kullanıcısı “dışarıdaki bir makineden bağlanarak”, “korsanDB” veri tabanının tüm users tablosunda (korsanDB.users) sadece “SELECT, INSERT, UPDATE, DELETE” işlemlerini yapabilir. Yetkilendirme işlemlerini yaparken kullanıcının şifresi yoksa aşağıdaki gibi şifre de oluşturabilirsiniz.
“GRANT ALL PRIVILEGES ON korsanDB.* TO ‘korsan’@’localhost’ IDENTIFIED BY ‘password’;”
Ayrıca, bir kullanıcıya atanmış tüm yetkileri görüntülemek için aşağıdaki syntaxı kullanabilirsiniz.
“SHOW GRANTS FOR ‘korsan’@’localhost’;”
“SHOW GRANTS FOR ‘korsan’@’%’;”
MySQL’de yeni bir kullanıcı oluştururken veya yetkilendirirken şifresini belirlemeyi unutmayınız. Hostlara göre farklı şifreler veriniz. Hostlara göre farklı yetkiler belirleyiniz. Bu ufak bir detay olarak görünür fakat veri tabanına erişmek isteyen kötü niyetli insanları caydırabilir. Son olarak, en hızlı şekilde bir kullanıcı oluşturmak ve düzgün bir şekilde yetkilendirmek için aşağıdaki syntax işinize yarayabilir.
“CREATE USER ‘korsan’@’%’;”
“GRANT ALL PRIVILEGES ON korsanDB.* TO ‘korsan’@’%’ IDENTIFIED BY ‘password’;”
“GRANT UPDATE ON DATABASE1.memleketordu TO ‘korsan2’@’localhost’;”
Yukarıdaki komut ile oluşturduğumuz kullanıcıya ilgili view üzerinde update edebilme yetkisi verdik.
“REVOKE UPDATE ON database1.memleketordu FROM ‘korsan2’@’localhost’;”
Yukarıdaki komut ile de update yetkisini siliyoruz.
“show grants for ‘korsan2’@’localhost’;”
Komut ile de ilgili kullanıcının database üzerindeki haklarını görüntüleyebiliriz.
4.SONUÇLAR
MYSQL üzerinde tablolar işlem yükü açısından ve yığın kayıtlar üzerinde işlem yapılması oldukça zor olduğundan viewlar üzerinden işlem yapılmaya izin vermektedir. Viewlar sadece MYSQL de değil MSSQL de ve diğer veritabanlarında da kullanım alanları bulunmaktadır.
İncelememiz sonunda viewların çok kolay kullanımına karşın çok etkin işlevleri olduğu sonucuna vardık. Her konunun sonunda örneklerle o konuyu genişçe destekledik ve konuyu kavramaya çalıştık.
Çalışmamız sonucunda viewların geniş ve sık kullanım alanı bulunduğu ve database ile çalışan bir kişinin veya geliştiricinin mutlaka viewları bilmesi gerektiği , view kullanılmadan yönetilmeye çalışan databaselerde yönetim ve işletmenin zor olacağı kanaatine varılmıştır.
5.KAYNAKLAR
Elektronik Makale ve Yayınlar
- Cem Demir (2016). MYSQL için kullanıcı oluşturma ve yetkilendirme, http://www.cemdemir.net/veri-tabani/mysql-icin-kullanici-olusturma-ve-dogru-yetkilendirme
- Limon Host, (2016). MYSqlde yeni kullanıcı oluşturma ve yetki verme, https://www.limonhost.net/makaleler/nasil-yaparim/mysql-de-yeni-kullanici-olusturma-ve-yetki-verme/7
- Adyever.com (2016). MYSQL de kullanıcı oluşturma ve yetkilendirme, https://www.adveyer.com/blog/mysql-kullanici-ekleme-ve-yetki-verme/
- Sqlogren.com (2016). MYSQL de kullanıcı oluşturma ve yetkilendirme, http://www.sqlogren.com/mysql-kullanici-yetkilendirilmesi-mysql-database-veritabani-olusturma-ve-kullaniciya-yetki-vermeselectinsertupdatedeletedropcreaterevoke-izinleri-root-izin
- ÖZGEÇMİŞ
Volkan Avşar. 1987 yılında doğdu. İlk ve ortaöğrenimini İstanbul’da tamamladı. Kadırga Teknik Lisesi Bilgisayar Yazılım bölümünden mezun oldu sonra sırasıyla Anadolu Üniversitesi Kamu Yönetimi ve İstanbul Üniversitesi Fars Dili ve Edebiyatı bölümlerini bitirdi. Çeşitli firmalarda bilgi sistemleri yöneticiliği ve bilgi sistemleri uzmanlığı ve danışmanlığı yaptı. Danışmanlığını verdiği firmalarda sunucu sanallaştırma, yardım masası faaliyetleri ve süreçlerine katkılarda bulundu. İngilizce, Farsça bilmektedir. Son olarak Haliç Üniversitesi Yönetim Bilişim Sistemleri bölümü yüksek lisans programına devam etmektedir.
2 Comments
HarveySlori
January 04, 2025 at 03:22Hello.
Good luck 🙂
JeromeLon
January 26, 2025 at 19:42Hello. I would like to buy advertising on your site. Write to me