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

Hata
  • XML Parsing Error at 1:82. Error 9: Invalid character
Anasayfa 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 )  
404 Not Found

Server Error

404

Page Not Found

This page either doesn't exist, or it moved somewhere else.


That's what you can do