Programlama | Programlama Dilleri | C Programlama Dili |C++

Anasayfa Dokümanlar Sunucu Kurulumları MySQL Nedir ve MySQL C++ Builder Bağlantısı Nasıl Yapılır


MySQL Nedir ve MySQL C++ Builder Bağlantısı Nasıl Yapılır

MYSQL NEDİR?

 

           

            MySQL çok hızlı ve sağlam bir ilişkisel veritabanı yönetim sistemidir(RDBMS-Relational Database Management System).Bir veritabanı,her türlü veriyi depolamayı, aramayı, ayırmayı ve elde etmeyi sağlar.MySQL sunucusu, verilerinize erişimi kontrol ederken çok sayıda kullanıcının aynı anda üzerinde çalışmasını ve hızlı erişimi sağlar.Ayrıca aynı anda sadece yetkili kullanıcıların erişim sahibi olmalarını güvence altına alır.Bu yüzden MySQL, çok kullanıcılı, çok kanallı bir sunucudur.Dünya çapındaki standart veri sorgulama dili olan SQL’i (Structured Query Language) kullanır.MySQL 1996’dan bu yana kullanılıyor olsa da, geliştirilme süreci 1979’a kadar dayanıyor.Birkaç kez, Linux  Journal Okuyucularının Seçimi Ödülü’nü kazandı.

           

            MySQL artık bir Açık Kaynak lisansı altında sunuluyor, ama gerektiğinde ticari lisanslarda verilebiliyor.

 

 

MYSQL’in GÜÇLÜ YANLARINDAN BAZILARI

 

 

            MySQL’in başlıca rakipleri arasında PostgreSQL,Microsoft SQL Server ve Oracle bulunmaktadır.

            MySQL’in güçlü olduğu yanları şunlardır:

 

  • Yüksek Performans
  • Düşük Maliyet
  • Yapılandırma ve öğrenim kolaylığı
  • Taşınabilirlik
  • Kaynak kodunun elde edilebilir olması.

 

Şimdi bu özellikleri daha ayrıntılı olarak inceleyelim.

 

Performans

 

MySQL’in hızı inkar edilemez. Geliştiricinin performans değerlendirme sayfasını http://web.mysql.html adresinde bulabilirsiniz.Bu değerlendirmelerin bir çoğu MySQL’in rakiplerinden daha hızlı olduğunu gösterir.

 

Düşük Maliyet

 

MySQL’in Açık Kaynak lisansı altında hiç para ödemeden veya uygulamanız için gerekliyse ticari bir lisans altında düşük bir ücret karşılığında edinebilirsiniz.

 

Kullanım Kolaylığı

 

Birçok modern veritabanı SQL kullanmaktadır.Eğer başka bir RDBMS kullandıysanız, buna adapte olmanız hiç de zor olmayacaktır.MySQL’in kurulumu da benzer ürünlere göre daha basitttir.

 

 

Taşınabilirlik

 

MySQL, birçok farklı UNIX sisteminin yanısıra, Microsoft Windows altında da kullanılabilir.

 

Kaynak Kodu

 

 MySQL kaynak kodunu  elde edebilir ve değiştirebilirsiniz.

 

 

İLİŞKİSEL VERİTABANI KAVRAMLARI

 

 

            İlişkisel veritabanı, şimdiye kadar en yaygın kullanılan veritabanı tipi olmuştur.Bu veritabanı tipi olmuştur. Bu veritabanları ilişkisel cebirin teorik temelleri üzerine kurulmuşlardır. İlişkisel bir veritabanı kullanmak için ilişkisellik teorisini anlamanız gerekmez, ama veritabanının bazı temel kavramlarını bilmeniz gerekir.

 

Tablolar

 

İlişkisel veritabanları daha yaygın şekliyle tablolar (tables) olarak adlandırılan ilişkilerden oluşur. Bir tablo tam da tahmin ettiğiniz gibi bir şeydir, yani bir veri tablosudur. Eğer elektronik bir tablo kullandıysanız, ilişkili tabloları zaten tanıyorsunuzdur.

 

Şimdi ir örneği inceleyelim.

 

Şekildeki örnek bir tablo görüyorsunuz. Bu tablo, Book-O-Rama  adlı kitabevinin müşterilerinin ad ve adreslerini içeriyor.

 

CUSTOMERS

CustomerID

Name

Address

City

1

Julie Smith

25 Oak Street

Airport West

2

Alan Wong

1/47 Haines Avenue

Box Hill

3

Michelle Arthur

357 North Road

Roma

 

Tablonun bir adı (Customers) , her biri farklı bir veri parçasına karşılık gelen sütunları ve her biri farklı bir müşteriye karşılık  gelen satırları var.

 

Sütunlar

 

Tablodaki her sütun (column) benzersiz bir ada sahiptir ve farklı veriler içerir.Her sütunun ilişkilendirilmiş bir veri tipi vardır. Örneğin  Customers tablosunda CustomerID’nin bir tamsayı, diğer üç sütunun ise karakter katarı olduğunu görebilirsiniz. Sütunlar bazen nitelik (attribute) veya alan (field) olarak da adlandırılır.

 

Satırlar

 

Tablodaki her satır (row), farklı bir müşteriyi temsil eder.Tablonun biçimi nedeniyle hepsi aynı niteliklere sahiptir. Satırlara kayıt (record) veya tuple da denir.

 

 

Değerler

 

Her satır, sütunlara karşılık gelen bir dizi ayrı değerlere (value) oluşur. Her değer, sütunu tarafından belirtilen veri tipinde olmalıdır.

 

Anahtarlar

 

Tek tek her müşteriyi tanımlananın bir yolunu bulmanız gerekir. Adları kullanmak bunun için çok iyi bir yol değildir; çok sık karşılaşılan bir adınız varsa, niye böyle söylediğimizi tahmin edebilirsiniz. Örneğin Customers tablosundan  Julie Smiht’i  alalım. Telefon rehberini açtığımızda, aynı ismi paylaşan onlarca  insan görürüz.

           

            Julie’yi diğerlerinden ayırt etmenin birkaç yolu var. Büyük olasılıkla o adreste yaşayan tek Julie Smith odur.”25 Oak Street, Airport West’te oturan Julie” demek de çok uzunve fazla resmidir. Ayrıca tabloda birden fazla sütun kullanmayı gerektirir.

           

            Bu örnekte yaptığımız ve sizinde ileride uygulamalarınızda yapacağınız şey, benzersiz bir müşteri kimliği atamaktır. Benzersiz bir banka hesap numarası veya bir kulübe numarası da aynı mantıkla verilir. Bu kimlik, ayrıntıları bir veritabanında depolamanızı kolaylaştırır. Yapay olarak atanan bir kimlik numarasının benzersiz olacağı garantilidir.Birlikte kullanılsalar bile gerçek bilgilerin çok azı bu tür bir özelliğe sahiptir.

 

            Tablodaki tanımlayıcı sütuna anahtar (key) veya birincil anahtar (primary key) denir.Bu anahtar birden çok sütundan da oluşabilir.Örneğin Julie’yi “25 Oak Street, Airport West’te oturan Julie” olarak tanımlamayı seçseydik, anahtar Ad (Name), Adres ve Şehir (City) sütunlarından oluşacaktı. Ancak bunun benzersiz olacağı garanti değildir.

 

            Veritabanları çoğunlukla birden çok tablodan oluşurlar ve bir tablodan diğerine geçerken bir anahtarı referans olarak kullanırlar.Aşağıda veritabanına ikinci bir tablo ekledik. Bu tablo, müşteriler tarafından verilen siparişleri saklıyor. Orders tablosundaki her satır, bir tek müşteri tarafından verilen bir tek siparişi temsil eder. Müşterinin kim olduğunu biliriz, çünkü müşteri kimliğiniz depolarız. OrderID 2 kimlikli siparişe baktığımızda bunu, CustomerID 1 kimlikli müşterinin vermiş olduğunu görebilirsiniz. Daha sonra Customers (Müşteriler) tablosuna baktığımızdaysa, CustomerID’in Julie Smith olduğunu görürüz.

 

CUSTOMERS

CustomerID

Name

Address

City

1

Julie Smith

25 Oak Street

Airport Street

2

Alan Wong

1/47 Haines Avenue

Box Hill

3

Michelle Arthur

357 North Road

Roma

 

ORDERS

OrderID

CustomerID

Amount

Date

1

3

27.50

02-Apr-2000

2

1

12.99

15-Apr-2000

3

2

74.00

19-Apr-2000

 

            Bu tür ilişkiler için ilişkisel veritabanlarında yabancı anahtar (foreign key) terimi kullanılır. CustomerID, Customers tablosunda birincil anahtardır; ama Orders gibi başka bir tabloda göründüğünde yabancı  anahtar adını alır.

 

Şemalar

 

Bir veritabanının tüm tablo tasarımlarına, veritabanı şeması (scheme) denir.Bu, veritabanının taslağı gibidir. Bir şema; tabloları, sütunları, sütunların içindeki veritipini ve her tablonun birincil anahtarlarıyla birlikte varsa yabancı anahtarlarını da göstermelidir. Bir şema veri içermez , ama şemanızla birlikte örnek verileri göstererek şemanın amacının ne olduğunu belirtebilirsiniz. Şema, kulalndığımız çizimlerde olduğu gibi, varlık ilişki diyagramlarında veya aşağıdaki gibi metin biçiminde gösterilebilir:

 

Customers (CustomerID , Name , Address , City)

Orders (OrdersID , CustomerID , Amount , Date)

 

Şemadaki altı çizili olan ve ilk sütunda bulunanlar birincil anahtardır. Altı çizili olmayıp başka sütunda bulununlar ise ilişki içerisinde yabancı anahtar olarak bilinirler.

 

İlişkiler

 

Yabancı anahtarlar, iki tablonun verileri arasındaki ilişkiyi (relationship) temsil eder.Örneğin Customers tablosundan Orders tablosuna yapılan bağlantı , Orders tablosundaki bir satır ile Customers tablosundaki bir satır arasındaki  ilşikiyi temsil eder.

 

            İlişkisel bir veritabanında üç temel ilişki tipi vardır. Bunlar, ilişkinin iki tarafındaki bazı şeylere göre sınıflandırılır. İlişkiler bire-bir , birden çoğa veya çoktan-çoğa tipinde olabilir.

Bire-bir tipindeki bir ilişki, ilişki içinde her şeyden bir tane olduğunu gösterir. Örneğin, adresleri Cutomers dışında bir tabloya koysaydık, bunların arasında bire-bir tipinde bir ilişki olurdu. Adreslerden  müşterilere veya tam tersi yönde bir yabancı anahtarınızda olabilirdi (ikisi de gerekli değildir).

Birde-çoğa tipindeki bir ilişkide bir tablodaki bir satır, başka bir tablodaki birden fazla satırla bağlantılıdır. Bu örnekte bir müşteri birçok sipariş verebilir. Bu ilişkilerde çoklu satırı içeren tabloda, tek satırlı tabloya ait bir yabancı anahtar vardır. Burada, ilişkiyi göstermek için CustomerID’yi Orders tablosuna koyduk.

Çoktan-çoğa tipindeki bir ilişkide ise bir tablodaki birden fazla satır, başka bir tablodaki birden fazla satırla bağlantılıdır. Bu örnekte bir müşteri birçok sirapiş verebilir.Bu ilişkilerde çoklu satırı içeren tabloda , tek satırlı tek satırlı tabloya ait bir yabancı anahtar vardır. Burada, ilişkiyi göstermek için CustomerID’yi Orders tablosuna koyduk.

Çoktan-çoğa tipindeki bir ilişkide ise bir tablodaki birden fazla satır, başka bir tablodaki birden fazla satırla bağlantılıdır. Örneğin Books ve Authors adında iki tablomuz olsaydı, bir kitabın iki yazar tarafından birlikte yazıldığını , bu yazarların kendi başlarına veya belki başka yazarlarla yazdıkları başka kitapları da olduğunu görebilirdiniz.Bu tip bir ilişki çoğunlukla kendine ait bir tablo alır ve böylece Books, Authors, ve Books_Authors tablolarımız olabilir. Bu üçüncü tablo, diğer tabloların anahtarlarını ikililer halinde yabancı anahtarlar olarak içerecek ve hangi yazarların  hangi kitaplarla ilgili olduklarını gösterecektir.

 

 

 

 

 

 

VERİTABANINI OLUŞTURMAK

 

 

 

            Burada kullanmak amacıyla bir MySQL veritabanını nasıl oluşturacağımızı göreceğiz.Konuları şu başlıklar altında inceleyeceğiz.

 

  • Bir veritabanı oluşturmak
  • Kullanıcılar ve ayrıcalıklar
  • Ayrıcalık sistemine giriş
  • Veritabanı tabloları oluşturmak
  • MySQL’deki sütun tipleri

 

Sunucumuz üzerinde MySQL’in temel kurulumunu bitirdiniz;

           

  • Dosyaları yüklemek
  • MySQL’in çalışması için bir kullanıcı belirlemek
  • Yolunuzu oluşturmak
  • Gerektiğinde mysql_install_db’yi çalıştırmak
  • Root şifresini oluşturmak
  • Anonim kullanıcıyı ve test veritabanını silmek
  • MySQL sunucusunu başlatmak ve otomatik olarak çalışacak şekilde ayarlamak

 

MySQL MONİTOR’IN KULLANIMI

 

MySQL’de her komutun noktalı virgülle (;) bittiğini göreceksiniz.Bu MySQL’e komutu çalıştırmasını söyler.Noktalı virgül koymazsanız, hiçbir şey olmayacaktır.Bu, yeni kullanıcıların sık sık yaşadığı bir sorundur.

            Bu, bir komutun ortasında yeni satırlarınız olabileceği anlamına da gelir.Bunu, örneklerin okunmasını kolaylaştırmak için kullandık. Bunu nerelerde yaptığımızı göreceksiniz, çünkü MySQL bir devam sembolü sunmaktadır. Bu işaret aşağıdaki gibi bir oktur.

 

            myslql> grant select

                      ->

 

            Bu, MySQL’in daha fazla girdi beklediğini gösterir.Noktalı virgülü koyana kadar, Enter tuşuna her bastığınızda bu karakterleri göreeksiniz.

            Dikkat edilecek diğer bir nokta da, SQL ifadelerinin büyük küçük harfe uyarlı olmamasıdır. Ama veritabanı ve tablo adları duyarlı olabilir.   

 

MySQL’e NASIL BAĞLANACAKSINIZ?

 

Bunu yapmak için makinanızın komut satırı arabirimine gidin  ve aşağıdakileri yazın:

 

mysql –h  hostname –u username –p

 

Komutunuz, kullandığınız işletim sistemi kabuğuna (shell) bağlı olarak farklı görülebilir.

            mysql komutu, MySQL Monitor’ı çalıştırır.Bu, sizi MySQL sunucusuna bağlayan bir komut satırı istemcisidir.

            -h, bağlanmak istediğiniz ana bilgisayarı  yani MySQL sunucusunun üzerinde çalışmakta olduğu makineyi belirlemek için kullanılır. Eğer bu komutu MySQL sunucusu ile aynı makinede çalıştırıyorsanız, bunu ve hostname parametresini kullanmayabilirsiniz. Aynı makinede çalıştırmıyorsanız, hostname parametresini, MySQL sunucusunun çalışmakta olduğu makinenin adıyla değiştirmelisiniz.

            -u, bağlanmak istediğiniz kullanıcı adını (username) belirtmek için kullanılır.Belirtmezseniz varsayılan olarak sizin sisteme bağlandığınız ad kullanılacaktır.

            MySQL’i kendi makinenize veya sunucunuza yüklediyseniz, root olarak bağlanmanız ve bu kısımda kullanacağımız veritabanını oluşturmanız gerekir.Temiz bir yükleme yaptığınızı varsayarsak, root başlamanız gereken tek kullanıcıdır.

            MySQL’i başkası tarafından yönetilen bir makinede kullanıyorsanız, size verdikleri kullanıcı adını kullanın.

            -p , sunucuya, bir şifre kullanarak bağlanmak istediğinizi söyler. Eğer adıyla giriş yaptığınız kullanıcı için bir şifre oluşturulmamışsa, bunu kullanmayabilirsiniz.

           

VERİTABANLARI ve KULLANICILAR OLUŞTURMAK

 

            MySQL veritabanı sistemi birçok farklı veritabanını destekleyebilir.Genellikle uygulama başına bir veritabanımız olacaktır.

 

Veritabanını Oluşturmak

 

            MySQL komut isteminde şunu yazın:

 

            mysql > create database dbname;

 

dbname yerine, oluşturmak istediğiniz veritabanının adını kullanmanız gerekir. Bu komutu doğru olarak yazarsanız almanız gereken yanıt şöyledir:

 

            Query OK, 1 row affected (0.06 sec)

           

            Bu, her şeyin yolunda olduğunu gösterir. Bu yanıtı almazsanız, satırın sonuna noktalı virgülü koyduğunuzdan emin olun. Bir noktalı virgül MySQL’e, işinizin bittiğini ve onun artık ilgili komutu çalıştırması gerektiğini söyler.

 

Kullanıcılar ve Ayrıcalıklar

 

            Bir MySQL sisteminin birçok kullanıcısı olabilir. root kullanıcı, güvenlik adına genellikle sadece yönetsel amaçlarla kullanılmalıdır. Sistemi kullanması gereken her kullanıcı için her hesap (account) ve şifre (password) ayarlamanız gerekir. Bunların MySQL dışındaki kullanıcı adları ve şifrelerle aynı olmaları gerekmez (Örneğin UNIX veya NT kullanıcı adları ve şifreleri). Aynı prensip root için de geçerlidir. Sistemde ve MySQL’de farklı şifrelere sahip olmak, özellikle de root şifresi söz konusuysa çok iyi bir fikirdir.

            Kullanıcılar için şifre ayarlamaya gerek yoktur, ancak oluşturduğunuz tüm kullanıcılar için birer şifre ayarlamanızı öneririm.

Kullanıcıları Ayarlamak (Grant Ve Revoke Komutları)

 

Grant Komutu

 

MySQL kullanıcılarına dört seviyede ayrıcalık vermek veya ayrıcalıkları geri almak için kullanılır.Bu seviyeler şunlardır:

 

  • Global
  • Veritabanı
  • Tablo
  • Sütun

 

 

GRANT komutu , kullanıcılar oluşturmak ve onlara ayrıcalıklar vermek için kullanılır.GRANT komutunun gene formu şöyledir:

 

GRANT privileges [columns]

ON item

TO user_name [IDENTIFIED BY password]

[WITH GRANT OPTION]

 

Köşeli parantezlerin içindeki cümlecikler seçime bağlıdır. Bu sözdiziminde birkaç yer tutucu (placeholder) bulunmaktadır.

Bunların ilki, yani privileges, virgüllerle ayrılmış bir ayrıcalıklar listesi olmalıdır. MySQL’de bunların tanımlanmış bir kümesi bulunur.

columns yer tutucusu, isteğe bağlıdır. Ayrıcalıkları sütun sütun belirlemek için kullanabilirsiniz. Bir tek sütun adlarının virgüllerle ayrılmış bir listesini kullanabilirsiniz.

item yer tutucusu , yeni ayrıcalıkların geçerli olduğu veritabanı veya tablo için kullanılır.

item olarak *.* kullanarak tüm veritabanlarına ayrıcalık verebilirsiniz. Buna, global ayrıcalıklar vermek denir. Belirli bir veritabanı kullanmıyorsanız bunu, sadece * kullanarak da yapabilirsiniz.

Daha yaygın olarak, bir veritabanındaki tüm tabloları dbname.* , bir tek tablo üzerindekileri dbname.tablename olarak, belirli sütunlar üzerinde olanları dbname.tablename ile ve bazı belirli sütunları da columns yer tutucusunda belirleyebilirsiniz. Bunlar diğer üç ayrıcalık seviyesini temsil ederler: Sırasıyla veritabanı, tablo ve sütun. Bu komutu çalıştırdığınızda belirli bir veritabanı kullanıyorsanız tablename, geçerli veritabanı içinde kendi başına bir tablo olarak yorumlanacaktır.

user_name, kullanıcının MySQL’e girerken kullanmasını istediğiniz ad olmalıdır. Sisteme giriş adıyla aynı olması gerekmediğini unutmayın.MySQL’deki user_name de bir ana bilgisayar adı içerebilir. Bunu örneğin,  laura ( laura@localhost olarak yorumlanacaktır ) ve Bu e-posta adresini spambotlara karşı korumak için JavaScript desteğini açmalısınız ’u  birbirinden ayırmak için kullanırısınız. Bu çok faydalıdır, çünkü farklı etki alanlarının (domain) kullanıcıları çoğunlukla aynı adları taşır. Bu güvenliği de artırır. Çünkü kullanıcıların nereden bağlanabileceklerini ve hatta belirli bir konumdan hangi tabloveya veritabanlarına erişebileceklerini belirleyebilirsiniz.

password, kullanıcının girerken kullanmasını istediğiniz şifre olmalıdır. Şifreleri seçmede de genel kurallar geçerlidir. Güvenlik konusunu daha sonra ayrıntılı olarak ele alacağız, ama bir şifrenin kolayca tahmin edilebilecek bir şey olmaması gerekir.Yani şifre, sözlükte bulunabilecek bir sözcük veya kullanıcı adıyla aynı olmamalıdır. İdeal olarak bir şifre, büyük ve küçük harflerden ve alfabe dışı karakterlerden oluşmalıdır.

WITH GRANT OPTION seçeneği, eğer belirtilmiş ise, belirtilen kullanıcının kendi ayrıcalıklarını başkalarına vermesini sağlar.

 

Ayrıcalıklar mysql adlı veritabanındaki dört sistem tablosunda, depolanır. Bu dört tablo mySQL.user, mySQL.db , mySQL.tables_priv ve mySQL.columns_priv’dir ve doğrudan daha önce sözünü ettiğimiz dört ayrıcalık seviyesiyle ilgilidirler. GRANT’e bir alternatif olarak bu tabloları direkt olarak değiştirebilirsiniz.

 

 

Revoke Komutu

 

            GRANT’in tersi REVOKE’tur. Bir kullanıcının ayrıcalıklarını geri almak için kullanılır. Sözdizimi olarak GRANT’e benzer:

 

            REVOKE privileges [(columns)]

ON item

FROM user_name

 

REVOKE GRANT OPTION

ON item

FROM user_name

 

 

 

 

Doğru Veritabanını Kullanmak

 

            Sunucu yöneticisine girdiğinizde yapmanız  gereken ilk şey, kullanmak isteiğiniz veritabanını belirtmektir:

 

            mysql> use dbname;

 

dbname veritabanınızın adıdır.

 

            Alternatif olarak, bağlandığınızda veritabanını belirterek bu komutu kullanmak zorunluluğundan kurtulabilirsiniz:

 

            mysql –D dbname –h hostname –u username –p

 

Aşağıdaki örnekte kitap veritabanını kullanacağız:

 

            mysql >use kitap;

 

Bu komutu  yazdığınızda MySQL size bir yanıt verecektir:

 

Database changed

 

Çalışmaya başlamadan önce bir veritabanı seçmezseniz MySQL şöyle bir hata mesajı verir:

 

 

 

 

 

Veritabanı Tabloları Oluşturmak

 

            Veritabanını ayarlamada bir sonraki adım, tabloları oluşturmaktır. Bunu, CREATE TABLE SQL komutunu kullanarak yapabilirsiniz.Bir CREATE TABLE ifadesinin genel formu şöyledir:

 

CREATE TABLE tablename (columns)

 

tablename yer tutucusunun yerine, oluşturmak istediğiniz tablonun adını, columns yer tutucusunun yerine de tablonuzdaki virgüllerle ayrılmış sütunlar listesini koymalısınız.

            Her sütunun adının ardından bir veri tipi gelecektir.

           

Şimdi bunu bir örnekle inceleyelim.

 

create table customers

(customerid int unsigned not null auto_increment primary key,

name char( 30) not null,

address char(40) not null,

city char(20) not null

);

 

Diğer Anahtar Sözcüklerin Anlamları

 

            NOT NULL, bir tablonun tüm satırlarının bu nitelik içinde bie değeri olması gerektiğini anlamına gelir. Belirlenmemişse alan boş (NULL) kalabilir.

           

AUTO_INCREMENT, tamsayı sütunlarında kullanabileceğiniz özel bir MySQL özelliğidir. Tabloya satırlar eklerken ilgili alanı boş bıraktığımızda MySQL otomatik olarak benzersiz bir tanımlayıcı değer oluşturacaktır. Bu değer, sütundaki mevcut maksimum değerden bir fazla olacaktır. Her tabloda bunlardan yalnızca bir tane bulunabilir.AUTO_INCREMENT içeren sütunlar indekslenmelidir.

           

            Bir sütun adının ardından gelen PRIMARY KEY, bu sütunun, tablo için birincil anahtar olduğunu belirtir. Bu sütuna yapılan girişlerin benzersiz olması gerekir. MySQL bu sütunu otoamatik olarak indeksler. Bunu yukarıda customers tablosundaki customerid ile birlikte kullandığımızda AUTO_INCREMENT özelliğini de kullandığımıza dikkat edin. Birincil anahtar üzerindeki otomatik indeks, AUTO_INCREMENT için gereken indeksle ilgilenir.

           

            Bir sütun adının ardından birincil anahtar (PRIMARY KEY) belirleme işlemi, sadece tek sütunluk birincil anahtarlar için yapılabilir. orders_items ifadesinin sonundaki PRIMARY KEY cümleciği, alternatif bir formdur. Burada kullanmamızın nedeni, bu tablonun birincil anahtarının iki sütundan oluşmasıdır.

 

            Bir integer tipinin ardından gelen UNSIGNED, sadece sıfır veya pozitif bir değer alabileceği  anlamına gelir.

 

Sütun Tipleri

 

            Aşağıdaki tabloyu ele alalım:

 

 create table books

 (customerid int unsigned not null auto_increment primary key,

  name char (30) not null,

  address char(40) not null,

  city char(20) not null,

 );

 

            Herhangi bir tablo oluştururken, sütun tiplerine karar vermeniz gerekir.

           

customers  tablosu ile, şemanızda belirtilmiş olduğu gibi dört sütunumuz var. İlki, customerid , direkt olarak belirttiğimiz birincil anahtardır. Bunun bir tamsayı (veri tipi int ) olacağına ve bu ID’lerin unsigned olması gerektiğine karar verdik. MySQL’in bunları bizim için yönetmesini sağlamak için, auto_increment özelliğinden de yaralandık.

 

            Diğer sütunların tümü karakter katarı veri içerecek. Bunlar için char tipini seçtik. Bu, sabit genişlikli alanları tanımlar. Genişlik (width) parantezler içinde tanımlanmıştır. Bu yüzden örneğin name 30’a kadar karakter alabilir.

 

            Bu veri tipi ilgili ad için her zaman, hepsi kullanılmasa bile 30 karakterlik yer ayıracaktır. MySQL veriyi  doğru büyüklüğe  getirmek için boşluklar ekleyecektir. Bunun alternatifi varchar’dır. Sadece gereken depolama miktarını (artı bir byte) kullanır. varchar’lar daha az yer kullanır, ama char’lar daha hızlıdır.

 

            Gerçek adları ve adresleri olan gerçek müşteriler için bu sütun genişlikleri yeterli olmayacaktır.

            Tüm sütunları NOT NULL olarak tanımladığımıza dikkat edin. Bu da, işleri biraz daha hızlandırmak için mümkün olan her yerde yapabileceğiniz küçük bir optimizasyondur.

           

            Şimdi başka bir örneği inceleyelim:

 

create table orders

(orderid int unsigned not null auto_increment primary key,

 customerid int unsigned not null,

 amount float(6,2)

 date date not null

);

 

            amount sütunu, float tipinde bir kayan noktalı sayı olarak belirlenmiş. Birçok kayan noktalı veri tipinde, görüntü genişliğini ve ondalık basamakların sayısını belirleyebilirsiniz. Bu durumda sirapiş tutarı dolar cinsinden olacaktır.Bu yüzden de büyük bir sipariş toplamı (width değeri 6) ve cent’ler ,için de iki ondalık basamak ayarladık.

            date sütununun veri tipi date’tir.

           

            Bu tabloda, amount dışında tüm sütunları NOT NULL olarak belirledik. Çünkü bir sipariş veritabanına girildiğinde bunu orders içinde oluşturmamız, öğeleri order_items’a eklememiz ve sonra da tutarı yani amount değerini hesaplamımız gerekir. Sipariş oluşturulduğunda amount değerini bilemeyebiliriz, bu yüzden de NULL olmasına izin verdik.

 

 

SHOW ve DESCRIBE Kullanarak Veritabanını Görmek

 

            mysql > show tables;

 

            Bu komutu MySQL komut sisteminde yazdığınızda aktif olan veritabanındaki tabloları görebilirsiniz. MySQL veritabanındaki tüm tabloların bir listesini verecektir.

 

+------------------------------+

│ Tables in Books           

+------------------------------+

│book_reviews                

│books                             

│customers                                             

│order_items                       

│orders                             

+------------------------------+

 

Veritabanlarının bir listesini görmek için de SHOW komutunu kullanabilirsiniz:

 

            mySQL > show databases;

 

Belirli bir tablo, örneğin books hakkında daha fazla bilgi almak için DESCRIBE komutunu kullanabilirsiniz.

 

            mySQL > describe books;

 

Bu komutlar, bir sütunun tipini hatırlamak için veya başkasının oluşturduğu bir veritabanını incelerken oldukça faydalıdır.

 

Tabloları Oluşturduktan Sonra Değiştirmek

 

            Satırları güncellemeye ek olarak, veritabanınız içindeki tabloların yapısını değiştirmek de isteyebilirsiniz. Bu amaç için, esnek ALTER TABLE ifadesini  kullanabilirsiniz. Bu ifadenin temel formunu aşağıda görüyorsunuz:

 

            ALTER TABLE tablename alteration [, alteration...]

 

            ANSI SQL’de ALTER TABLE ifadesi başına sadece bir tek değişiklik yapabileceğinizi unutmayın. Ancak MySQL ile istediğiniz kadar yapabilrisiniz. Değiştirme cümleciklerinin her biri, tablonun farklı yönlerini değiştirmek için kullanılabilir.

 

            Şimdi ALTER TABLE’in yaygın birkaç kullanımına bakalım.

 

            Sık sık orataya çıkan bir sorun, belirli bir sütunu, depolaması gereken veriye  göre “yeterince büyük” yapmamış olma durumudur. Örneğin Customers tablomuzda adların 30 karaktere kadar uzun olmasına izin verdik. Verileri almaya başladıktan sonra bazı isimlerin çok uzun olduğunu ve kesildiklerini görebiliriz. Bu durumu, sütunu tipini 45 karakter uzunluğunda olacak şekilde değiştirerek düzeltebiliriz:

 

            alter table customers

            modify name char(45) not null;

 

            Çok sık ortaya çıkan diğer bir durum da, bir sütun ekleme ihtiyacıdır. Kitaplar üzerindeki satış vergisinin yerel olarak belirlendiğini ve Book-O-Rama’nın vergi miktarını toplam siparişe eklerken bunu ayrı ayrı takip etmesi gerektiğini düşünün. Orders tablosuna bir vergi sütununu şöyle ekleyebiliriz:

 

            alter table orders

            add tax float (6,2) after amount;

 

            Bir sütundan kurtulma isteği de yine sık sık karşılaşılan diğer bir durumdur. Yukarıda eklediğimiz sütunu aşağıdaki gibi silebiliriz:

 

            alter table orders

            drop tax;

 

 

Tabloları Silmek

 

            Bazen bir tablonun tamamından kurtulmak isteyebilirsiniz.Bunu bir DROP TABLE ifadesi ile kolayca yapabilirsiniz. Genel form şu şekildedir:

 

            DROP TABLE table;

           

            Bu, tablodaki tüm satırları ve tablonun kendisini sileceğinden, kullanırken dikkatli olmalısınız.

 

Bir Veritabanının Tamamını Silmek

 

 

            Daha ileri gidip, tüm veri veritabanını ve tablonun  DROP DATABASE ifadesi ile silebilirsiniz. Genel form şu şekildedir:

 

 

            DROP DATABASE database;

 

            Bu, tüm satırları, tüm tabloları, tüm indeksleri ve veritabanının kendisini sileceğinden, sanırız ne kadar dikkatle kullanılması gerektiğini belirtmenize gerek yok.

 

 

 

 

 

 

 

 

 

MySQL’e C++ Builder İle Bağlanmak ve MYDAC

 

 

            MySQL’e C++ Builder üzerinden bağlanırken kullandığımız component CoreLab firmasının ürettiği MyDAC’tır.Bu ürün lisanslı olup sadece 1 aylık deneme sürümleri freeware olarak sunulmaktadır.

            Şimdi bu componentin bizim için  gerekli olan elemanlarını inceleyelim.

 

MyConnection

 

            Genel olarak programı veritabanına bağlayan arayüzdür diyebiliriz. Bu elemanı form üzerine koyduktan sonra Connected özelliği true yapılır.ConnectionTimeout özelliği default olarak bırakılabilir yada isteğe bağlı olarak değiştirilebilir.Database özelliğinden hangi veritabanı üzerinde işlem yapılacaksa o veritabanı ismi seçilir, zaten Connected özelliği true yapıldığında MySQL’in data klasöründe bulunan veritabanlarının listesi burada görünecektir.

 

            Eğer MySQL’e girerken bir şifre kullanıyorsanız  o zaman Username özelliğine MySQL’e girerken kullandığınız username’i ve password özelliğine de yine MySQL’e girerken kullandığınız şifreyi girmeniz gerekir. Server özelliğine ise eğer kendi makineniz üstünde çalışıyorsanız localhost, eğer ağ üstündeki başka bir makine üzerinde çalışıyorsanız o makinenin IP numarasını girmeniz gerekmektedir.

 

            Port özelliği ise MySQL’in kullanacağı portu belirlemektedir.Genel olarak 3306 ‘yi kullanmaktadır.

 

MyTable

 

            Veritabanınızdaki dosyalar üzerinde işlem yapmaya yarayan bir elemandır.C++ Builderin Table nesnesine göre MyTable daha gelişmiştir. Çünkü MyTable’da C++ Builderin Table nesnesinden farklı olarak SQL sorgusu gerçekleştirilebilmektedir. Oysaki C++ Builderin Table nesnesinde SQL sorgusu yapılamamaktadır.

           

            MyTable nesnesi form üzerine konulduktan sonra Connection özelliğine form üzerine daha önceden koyduğumuz MyConnection’lardan biri atanır. Eğer birden fazla veritabanı kullanıyorsanız o zaman birden fazla da MyConnection kullanmak zorundasınızdır.Daha sonra TableName özelliğine veritabanında bulunan tablolardan biri atanır.

 

            Diğer özellikleri default olarak kalabilir yada kullanıcının isteğine göre değiştirilebilir.

 

MyQuery

 

            MyQuery nesnesi C++ Builderin Query nesnesine oldukça yakındır.Daha farklı birçok özellikte eklenmiştir.Genel olarak sorgu işlemlerini, eklemeyi , silmeyi  ve veri güncellemeyi rahatça yapabileceğiniz bir nesnedir.

 

            Şöyle bir soru hemen akıllara gelebilir; madem ben SQL sorgularını MyTable nesnesi ile yapabiliyorum neden MyQuery kullanıyım?

            MyTable ile yapılan sorgularda tablo verilen sorguya göre sınırlandırılır ve daha sonra tüm tablo üzerinde bir işlem yapmak gerektiğinde bazı işlemler yapmak gerekmektedir.Yani çok dikkatli olmadıktan sonra istenmeyen durumlarla karşılaşılması oldukça muhtemeldir. İşte bu karmaşadan kurtulmak için bu işlemleri farklı bir nesnede yapmak işlerinizi daha kolaylaştıracaktır.

 

MyBackup

 

            Bu nesne oldukça önemlidir.Görevi veritabanlarının bir yedeğini almak ve yedekten yüklemektir. Çoğu veritaban programlarının en korkulu rüyası verilerin bir şekilde kaybolmasıdır.( İşletim Sistemi çökmesi, kullanıcı hatalarından kaynaklanan veri kayıpları)

 

            İşte bunu önlemek amacıyla verileri istenen güvenli bir yere (başka bir harddisk,disket veya Cd) saklamak gerekir ve gerektiğinde tekrar oradan programımıza aktarmamız gerekir. Şimdi bu nesnenin bunu nasıl yaptığını görelim.

 

            Nesnenin BackupPriority özelliği kullanıcının isteğine bağlı olarak değiştirilebilir. Connection özelliğine form üzerindeki MyConnection’lardan biri atanır. Mode özelliğine bmText atanır.(Veriler bu sayede saklanılan yerde daha az yer kaplamaktadır) Path özelliğinde verilerin nereye saklanacağı belirlenir.(Örnek olarak diyelim ki diskete saklayacaksanız o zaman Path özelliğine A:\\ yazmanız gerekmektedir, burada dikkat edilmesi gereken slahs’hın tek değil çift olmasıdır.)

 

Bunların dışında MyDAC ‘in birçok nesnesi vardır, ama bunların yaptıkları birçok işi yukarıda tanıttığımız nesnelerle yapabilirsiniz.

 

Örnek Projeler:

Linkleri Görebilmeniz İçin Üye Olmanız Gerekmektedir...

Üye Kayıt

 

Yorumlar (0)
Sadece kayıtlı kullanıcılar yorum yazabilir!
Son Güncelleme ( Perşembe, 07 Nisan 2011 21:04 )