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

  1. 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

  1. TARTIŞMA 36
  2. KAYNAKLAR 37
  3. EKLER 38
  4. ÖZGEÇMİŞ 39

 

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
  1. Ö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.