MariaDB Klavuz
Nedir? MariaDB?
MariaDB bir รงataldฤฑr MySQL veritabanฤฑ Yรถnetim sistemi. Orijinal geliลtiricileri tarafฤฑndan yaratฤฑlmฤฑลtฤฑr. Bu DBMS aracฤฑ, hem kรผรงรผk hem de kurumsal gรถrevler iรงin veri iลleme yetenekleri sunar.
MariaDB geliลtirilmiล bir versiyonudur MySQL. รok sayฤฑda dahili gรผรงlรผ รถzellik ve piyasada bulamayacaฤฤฑnฤฑz birรงok kullanฤฑlabilirlik, gรผvenlik ve performans iyileลtirmesi ile birlikte gelir. MySQL.
ฤฐลte รถzellikleri MariaDB:
- GPL, BSD veya LGPL lisanslarฤฑ altฤฑnda รงalฤฑลฤฑr.
- MariaDB popรผler ve standart bir sorgulama dilini destekler.
- Diฤer iliลkisel veritabanฤฑ yรถnetim sistemleriyle entegre edilebilen yรผksek performanslฤฑ olanlar da dahil olmak รผzere birรงok depolama motoruyla birlikte gelir.
- Galera kรผme teknolojisini saฤlar.
- MariaDB Web geliลtirme iรงin popรผler bir dil olan PHP'yi destekler.
- MariaDB farklฤฑ iลletim sistemlerinde รงalฤฑลabilir ve รงok sayฤฑda programlama dilini destekler.
- MariaDB mevcut olmayan ek komutlarla birlikte gelir MySQL. MySQL DBMS'nin performansฤฑ รผzerinde olumsuz etkisi olan รถzelliklere sahiptir. Bu tรผr รถzellikler deฤiลtirildi MariaDB.
MariaDB vs MySQL
Aลaฤฤฑda aralarฤฑndaki bazฤฑ รถnemli farklar verilmiลtir. MariaDB vs MySQL
| Parametre | MariaDB | MySQL |
|---|---|---|
| Depolama Motorlarฤฑ iรงin Daha Fazla Seรงenek | MariaDB bulamayacaฤฤฑnฤฑz 12 yeni depolama motoru var MySQL. | ile karลฤฑlaลtฤฑrฤฑldฤฑฤฤฑnda daha az depolama seรงeneฤine sahiptir. MariaDB. |
| Hฤฑz ฤฐyileลtirmeleri | MariaDB ile karลฤฑlaลtฤฑrฤฑldฤฑฤฤฑnda daha iyi bir hฤฑz gรถsterir MySQL. Hฤฑzฤฑ optimize etmek iรงin รงok sayฤฑda รถzellik ile birlikte gelir. Bu tรผr รถzellikler tรผretilmiล gรถrรผnรผmleri/tablolarฤฑ, alt sorguyu, yรผrรผtme kontrolรผnรผ, disk eriลimini ve optimize edici kontrolรผnรผ iรงerir. | MySQL karลฤฑlaลtฤฑrฤฑldฤฑฤฤฑnda daha yavaล bir hฤฑz sergilemektedir. MariaDB. Hฤฑz optimizasyonu iรงin karma dizinler gibi yalnฤฑzca birkaรง รถzelliฤe dayanฤฑr. |
| Daha hฤฑzlฤฑ รถnbellek/dizinler | Bellek depolama motoruyla MariaDB, bir INSERT ifadesi standartta olduฤundan %24 oranฤฑnda tamamlanabilir MySQL. | Bellek depolama motoru MySQL buna kฤฑyasla daha yavaล MariaDB. |
| Daha Bรผyรผk ve Daha Hฤฑzlฤฑ Baฤlantฤฑ Havuzu | MariaDB daha hฤฑzlฤฑ รงalฤฑลabilen ve 200,000'den fazla baฤlantฤฑyฤฑ destekleyen geliลmiล bir iล parรงacฤฑฤฤฑ havuzuyla birlikte gelir. | Tarafฤฑndan saฤlanan iล parรงacฤฑฤฤฑ havuzu MySQL Bir seferde 200,000'e kadar baฤlantฤฑyฤฑ destekleyemez. |
| Geliลtirilmiล รoฤaltma | In MariaDBรงoฤaltma daha gรผvenli ve daha hฤฑzlฤฑ yapฤฑlabilir. Gรผncellemeler ayrฤฑca geleneksel gรผncellemelere kฤฑyasla 2 kat daha hฤฑzlฤฑ yapฤฑlabilir. MySQL. | MySQL'nin topluluk sรผrรผmรผ, statik sayฤฑda iล parรงacฤฑฤฤฑnฤฑn baฤlanmasฤฑna izin verir. MySQL'ฤฑn kurumsal planฤฑ iล parรงacฤฑฤฤฑ yetenekleriyle birlikte gelir. |
| Yeni รzellikler/Uzantฤฑlar | MariaDB JSON, YOUR ve KILL ifadeleri dahil olmak รผzere yeni รถzellikler ve uzantฤฑlarla birlikte gelir. | Yeni MariaDB รถzellikler burada saฤlanmamฤฑลtฤฑr MySQL. |
| Eksik รzellikler | MariaDB tarafฤฑndan saฤlanan bazฤฑ รถzelliklerden yoksundur. MySQL kurumsal sรผrรผm. Bu sorunu รงรถzmek iรงin alternatif aรงฤฑk kaynaklฤฑ eklentiler sunar. Buradan, MariaDB kullanฤฑcฤฑlar aynฤฑ iลlevlerden yararlanabilirler MySQL Kurumsal Sรผrรผm kullanฤฑcฤฑlarฤฑ. | Kurumsal Sรผrรผmรผ MySQL รถzel bir kod kullanฤฑr. Yalnฤฑzca kullanฤฑcฤฑlarฤฑ MySQL Enterprise Edition'ฤฑn buna eriลimi var. |
Nasฤฑl kurulur? MariaDB
Baฤฤฑmsฤฑz Bir Uygulama Olarak Kurulum
kullanmak iรงin MariaDB, bilgisayarฤฑnฤฑza yรผklemelisiniz.
Kurulum aลaฤฤฑdaki adฤฑmlarฤฑ izleyerek yapฤฑlabilir:
) 1 Adฤฑm URL'nin Altฤฑnฤฑ Aรง
Kurulum dosyasฤฑnฤฑ Linkten indirin https://downloads.mariadb.org/
) 2 Adฤฑm Double kurulumu baลlatmak iรงin dosyaya tฤฑklayฤฑn
ฤฐndirme iลlemi tamamlandฤฑktan sonra Dosyayฤฑ Aรง
) 3 Adฤฑm ฤฐleri dรผฤmesine tฤฑklayฤฑn
Aรงฤฑlan pencerede ฤฐleri butonuna tฤฑklayฤฑn:
) 4 Adฤฑm Lisans sรถzleลmesini kabul edin
Daha sonra ฤฐleri dรผฤmesine tฤฑklayฤฑn:
) 5 Adฤฑm Klinik MariaDB sunucu
Yรผklenecek รถzellikleri seรงin ve ฤฐleri'ye tฤฑklayฤฑn
) 6 Adฤฑm ลifreyi gir
Bir sonraki pencerede root kullanฤฑcฤฑsฤฑnฤฑn ลifresini deฤiลtirmeniz istenecektir.
- ลifreyi girin ve aynฤฑ ลifreyi tekrar yazarak onaylayฤฑn. Uzak makinelerden eriลime izin vermek istiyorsanฤฑz, gerekli onay kutusunu etkinleลtirin.
- ฤฐลiniz bittiฤinde ฤฐleri dรผฤmesine tฤฑklayฤฑn.
) 7 Adฤฑm Adฤฑ Girin ve Baฤlantฤฑ Noktasฤฑ Numarasฤฑnฤฑ Seรงin
Bir sonraki pencerede รถrnek iรงin bir ad yazฤฑn, baฤlantฤฑ noktasฤฑ numarasฤฑnฤฑ seรงin ve gerekli boyutu ayarlayฤฑn. ฤฐleri dรผฤmesini tฤฑklayฤฑn:
) 8 Adฤฑm ฤฐleri'yi tฤฑklayฤฑn
Bir sonraki pencerede ฤฐleri dรผฤmesine tฤฑklamanฤฑz yeterlidir.
) 9 Adฤฑm Yรผkle'ye tฤฑklayฤฑn
Install butonuna tฤฑklayarak kurulumu baลlatฤฑn.
) 10 Adฤฑm Bir ฤฐlerleme รubuฤu Gรถsteriliyor
Kurulumun ilerleyiลini gรถsteren bir ilerleme รงubuฤu gรถsterilecektir:
) 11 Adฤฑm Bitir Dรผฤmesine tฤฑklayฤฑn
Kurulum tamamlandฤฑktan sonra Finish butonunu gรถreceksiniz. Pencereyi kapatmak iรงin dรผฤmeye tฤฑklayฤฑn:
) 12 Adฤฑm Tebrikler!
ลimdi sahipsin MariaDB bilgisayarฤฑnฤฑza yรผklendi.
Komut ฤฐstemi ile รalฤฑลmak
ลimdi sahipsin MariaDB Bilgisayarฤฑnฤฑza yรผklendiฤinde, onu baลlatmanฤฑn ve kullanmaya baลlamanฤฑn zamanฤฑ geldi. Bu, aracฤฑlฤฑฤฤฑyla yapฤฑlabilir. MariaDB Komut istemi.
Aลaฤฤฑda verilen adฤฑmlarฤฑ izleyin:
) 1 Adฤฑm Baลlat'a tฤฑklayฤฑn, Tรผm Programlar'ฤฑ seรงin ve ardฤฑndan MariaDB...
) 2 Adฤฑm Bir seรงin MariaDB Komut ฤฐstemi.
) 3 Adฤฑm MKS MariaDB komut istemi baลlatฤฑlacaktฤฑr. Artฤฑk giriล yapma zamanฤฑ geldi. Root kullanฤฑcฤฑ olarak ve kurulum esnasฤฑnda belirlediฤiniz ลifre ile giriล yapmalฤฑsฤฑnฤฑz. MariaDBKomut istemine aลaฤฤฑdaki komutu yazฤฑn:
MySQL -u root -p
) 4 Adฤฑm ลifreyi girin ve dรถnรผล tuลuna basฤฑn. Aลaฤฤฑda gรถsterildiฤi gibi oturum aรงmalฤฑsฤฑnฤฑz:
Artฤฑk giriล yaptฤฑnฤฑz MariaDB.
Veri tipleri
MariaDB Aลaฤฤฑdaki veri tรผrlerini destekler:
- Dize veri tรผrleri
- Sayฤฑsal veri tรผrleri
- Tarih/saat veri tรผrleri
- Bรผyรผk nesne veri tรผrleri
Dize Veri Tรผrleri
Bunlar aลaฤฤฑdakileri iรงerir:
| Dize veri tรผrรผ | Aรงฤฑklama |
|---|---|
| karakter(boyut) | Boyut, saklanacak karakter sayฤฑsฤฑnฤฑ belirtir. Maksimum 255 karakter saklar. Sabit uzunluklu dizeler. |
| varchar(boyut) | Boyut, saklanacak karakter sayฤฑsฤฑnฤฑ belirtir. Maksimum 255 karakter saklar. Deฤiลken uzunluklu dizeler. |
| yazฤฑ Boyutu) | Boyut, saklanacak karakter sayฤฑsฤฑnฤฑ belirtir. Maksimum 255 karakter saklar. Sabit uzunluklu dizeler. |
| ikili(boyut) | Boyut, saklanacak karakter sayฤฑsฤฑnฤฑ belirtir. Maksimum 255 karakter saklar. Sabit boyutlu dizeler. |
Sayฤฑsal Veri Tรผrleri
Aลaฤฤฑdakileri iรงerir:
| Sayฤฑsal Veri Tรผrleri | Aรงฤฑklama |
|---|---|
| bit | Tinint(1)'e eลdeฤer รงok kรผรงรผk bir tamsayฤฑ deฤeri. ฤฐลaretli deฤerler -128 ile 127 arasฤฑnda deฤiลir. ฤฐลaretsiz deฤerler ise 0 ile 255 arasฤฑnda deฤiลir. |
| int(m) | Standart bir tam sayฤฑ deฤeri. ฤฐmzalฤฑ deฤerler -2147483648 ile 2147483647 arasฤฑnda deฤiลir. ฤฐmzasฤฑz deฤerler 0 ile 4294967295 arasฤฑnda deฤiลir. |
| kayan nokta(m, d) | Tek duyarlฤฑklฤฑ kayan noktalฤฑ sayฤฑ. |
| รงift(m,g) | รift hassasiyetli kayan noktalฤฑ sayฤฑ. |
| yรผzer(p) | Kayan noktalฤฑ bir sayฤฑ. |
Tarih/Saat Veri Tรผrleri
Bunlar aลaฤฤฑdakileri iรงerir:
| Tarih/Saat Veri Tรผrรผ | Aรงฤฑklama |
|---|---|
| Tarih | 'yyyy-aa-gg' biรงiminde gรถrรผntรผlenir. Deฤerler '1000-01-01' ile '9999-12-31' arasฤฑnda deฤiลir. |
| Tarih saat | 'yyyy-aa-gg ss:dd:ss' biรงiminde gรถrรผntรผlenir. Deฤerler '1000-01-01 00:00:00' ile '9999-12-31 23:59:59' arasฤฑnda deฤiลir. |
| zaman damgasฤฑ(m) | 'yyyy-aa-gg ss:dd:ss' biรงiminde gรถrรผntรผlenir. Deฤerler '1970-01-01 00:00:01' utc ve '2038-01-19 03:14:07' utc arasฤฑnda deฤiลir. |
| Zaman | 'ss:dd:ss' biรงiminde gรถrรผntรผlenir. Deฤerler '-838:59:59' ile '838:59:59' arasฤฑnda deฤiลir. |
Bรผyรผk Nesne Veri Tรผrleri (LOB)
Aลaฤฤฑdakileri iรงerir:
| Bรผyรผk nesne Veri tรผrรผ | Aรงฤฑklama |
|---|---|
| minikblob | Maksimum boyutu 255 bayttฤฑr. |
| damla (boyut) | Maksimum boyut olarak 65,535 bayt alฤฑr. |
| Orta blok | Maksimum boyutu 16,777,215 bayttฤฑr. |
| uzun metin | Maksimum boyut olarak 4GB alฤฑr. |
Veritabanฤฑ ve Tablolar Oluลturun
Yeni bir veritabanฤฑ oluลturmak iรงin MariaDByalnฤฑzca kรถk kullanฤฑcฤฑya ve yรถneticilere verilen รถzel ayrฤฑcalฤฑklara sahip olmalฤฑsฤฑnฤฑz.
Yeni bir veritabanฤฑ oluลturmak iรงin aลaฤฤฑdaki sรถzdizimini kullanan CREATE DATABASE komutunu kullanmalฤฑsฤฑnฤฑz:
CREATE DATABASE DatabaseName;
Bu durumda bir veritabanฤฑ oluลturup ona Demo adฤฑnฤฑ vermeniz gerekir.
Baลlat MariaDB Komut istemine girin ve aลaฤฤฑdaki komutu yazarak kรถk kullanฤฑcฤฑ olarak oturum aรงฤฑn:
mysql -u root -p
Kรถk ลifresini yazฤฑn ve dรถnรผล tuลuna basฤฑn. Giriล yapacaksฤฑnฤฑz.
ลimdi, aลaฤฤฑdaki komutu รงalฤฑลtฤฑrฤฑn:
CREATE DATABASE Demo;
Daha sonra Demo adฤฑnda bir veritabanฤฑ oluลturdunuz. Veritabanฤฑnฤฑn baลarฤฑlฤฑ bir ลekilde oluลturulup oluลturulmadฤฑฤฤฑnฤฑ teyit etmeniz sizin iรงin iyi olacaktฤฑr. Sadece aลaฤฤฑdaki komutu รงalฤฑลtฤฑrarak kullanฤฑlabilir veritabanlarฤฑnฤฑn listesini gรถstermeniz gerekir:
SHOW DATABASES;
Yukarฤฑdaki รงฤฑktฤฑ Demo veritabanฤฑnฤฑn listenin bir parรงasฤฑ olduฤunu, dolayฤฑsฤฑyla veritabanฤฑnฤฑn baลarฤฑyla oluลturulduฤunu gรถsterir.
MariaDB Veritabanฤฑ Seรงin
Belirli bir veritabanฤฑnฤฑ kullanabilmeniz veya รผzerinde รงalฤฑลabilmeniz iรงin, onu mevcut veritabanlarฤฑ listesinden seรงmeniz gerekir. Veritabanฤฑnฤฑ seรงtikten sonra veritabanฤฑ iรงerisinde tablo oluลturma gibi gรถrevleri gerรงekleลtirebilirsiniz.
Bir veritabanฤฑ seรงmek iรงin USE komutunu kullanmalฤฑsฤฑnฤฑz. Aลaฤฤฑda verilen sรถzdizimini alฤฑr:
USE database_name;
Demo veritabanฤฑnฤฑ kullanmanฤฑz gerekir. Aลaฤฤฑdaki komutu รงalฤฑลtฤฑrarak seรงebilirsiniz:
USE Demo;
Yukarฤฑdaki resim gรถstermektedir ki MariaDB komut istemi hiรงbiri yerine seรงilen veritabanฤฑnฤฑn adฤฑnฤฑ deฤiลtirdi.
Artฤฑk devam edip Demo veritabanฤฑnda tablolar oluลturabilirsiniz.
MariaDB โ Tablo Oluลtur
Tablo oluลturabilmeniz iรงin bir veritabanฤฑ seรงmiล olmanฤฑz gerekir. Tablo, CREATE TABLE deyimi kullanฤฑlarak oluลturulabilir. ฤฐลte komutun sรถzdizimi:
CREATE TABLE tableName (columnName columnType);
Sรผtunlardan birini birincil anahtar olarak ayarlayabilirsiniz. Bu sรผtun boล deฤerlere izin vermemelidir.
Demo veritabanฤฑ iรงerisinde Kitap ve Fiyat tablolarฤฑ olmak รผzere iki tablo oluลturacaฤฤฑz. Her tablonun iki sรผtunu olacaktฤฑr.
ฤฐki sรผtunlu, id ve name, Book tablosunu oluลturarak baลlayalฤฑm. Aลaฤฤฑdaki komutu รงalฤฑลtฤฑrฤฑn:
CREATE TABLE Book( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY (id));
PRIMARY KEY kฤฑsฤฑtlamasฤฑ, id sรผtununu tablonun birincil anahtarฤฑ olarak ayarlamak iรงin kullanฤฑlmฤฑลtฤฑr. AUTO_INCREMENT รถzelliฤi, tabloya eklenen her yeni kayฤฑt iรงin id sรผtununun deฤerlerini otomatik olarak 1 artฤฑracaktฤฑr. Tรผm sรผtunlar boล deฤerlere izin vermeyecektir.
ลimdi ikinci tablo olan Fiyat tablosunu oluลturun:
CREATE TABLE Price( id INT NOT NULL AUTO_INCREMENT, price float NOT NULL, PRIMARY KEY (id));
Kimlik sรผtunu tablonun birincil anahtarฤฑ olarak ayarlandฤฑ.
Tablolarฤฑ Gรถsterme
Artฤฑk iki tabloyu oluลturduฤunuza gรถre, tablolarฤฑn baลarฤฑlฤฑ bir ลekilde oluลturulup oluลturulmadฤฑฤฤฑnฤฑ doฤrulamanฤฑz sizin iรงin iyi olacaktฤฑr. Aลaฤฤฑdaki komutu รงalฤฑลtฤฑrarak bir veritabanฤฑnda bulunan tablolarฤฑn listesini gรถsterebilirsiniz:
SHOW TABLES;
Yukarฤฑdaki ekran gรถrรผntรผsรผ iki tablonun Demo veritabanฤฑnda baลarฤฑyla oluลturulduฤunu gรถstermektedir.
Tablo Yapฤฑsฤฑnฤฑ Gรถsterme
Belirli bir tablonun yapฤฑsฤฑnฤฑ gรถrmek iรงin, genellikle DESC olarak kฤฑsaltฤฑlan DESCRIBE komutunu kullanabilirsiniz. Aลaฤฤฑdaki sรถzdizimini alฤฑr:
DESC TableName;
รrneฤin Book isimli tablonun yapฤฑsฤฑnฤฑ gรถrmek iรงin aลaฤฤฑdaki komutu รงalฤฑลtฤฑrabilirsiniz;
DESC Book;
Tablonun iki sรผtunu vardฤฑr. Fiyat tablosunun yapฤฑsฤฑnฤฑ gรถrmek iรงin aลaฤฤฑdaki komutu รงalฤฑลtฤฑrabilirsiniz:
DESC Price;
CRUD ve Cรผmleler
INSERT
Bir dosyaya veri eklemek iรงin MariaDB tablosunda INSERT INTO deyimini kullanmalฤฑsฤฑnฤฑz. Bu komut aลaฤฤฑda verilen sรถzdizimini alฤฑr:
INSERT INTO tableName (column_1, column_2, ... ) VALUES (value1, value2, ... ), (value1, value2, ... ), ...;
Yukarฤฑdaki sรถzdizimi, eklemeniz gereken verilerin yanฤฑ sฤฑra veri eklemek istediฤiniz tablo sรผtunlarฤฑnฤฑ da belirtmeniz gerektiฤini gรถsterir.
Book tablosuna bir kayฤฑt ekleyelim:
INSERT INTO book (id, name) VALUES(1, 'MariaDB Book');
Tabloya tek bir kayฤฑt eklediniz. Fiyat tablosuna bir kayฤฑt ekleyin:
INSERT INTO price (id, price) VALUES(1, 200);
Kayฤฑt oluลturuldu.
SEรฤฐN
SELECT ifadesi bir veritabanฤฑ tablosunun iรงeriฤini gรถrรผntรผlememize veya gรถrmemize yardฤฑmcฤฑ olur. รrneฤin, Book tablosunun iรงeriฤini gรถrmek iรงin aลaฤฤฑdaki komutu รงalฤฑลtฤฑrmanฤฑz gerekir:
SELECT * from book;
ลimdi Fiyat tablosunun iรงeriฤini gรถrรผntรผleyin:
SELECT * from price;
Birden รok Kayฤฑt Ekleme
Bir dosyaya birden fazla kayฤฑt eklememiz mรผmkรผndรผr. MariaDB masayฤฑ bir seferde รงalฤฑลtฤฑrฤฑn. Bunu gรถstermek iรงin, aลaฤฤฑdaki รถrneฤi รงalฤฑลtฤฑrฤฑn:
INSERT INTO book (id, name) VALUES (2,'MariaDB Book2'), (3,'MariaDB Book3'), (4,'MariaDB Book4'), (5,'MariaDB Book5');
Kayฤฑtlarฤฑn baลarฤฑyla eklenip eklenmediฤini kontrol etmek iรงin tabloyu sorgulayabilirsiniz:
SELECT * FROM book;
Kayฤฑtlar baลarฤฑyla eklendi. Bu รถrneฤi รงalฤฑลtฤฑrarak Fiyat tablosuna birden รงok kayฤฑt ekleyin:
INSERT INTO price (id, price) VALUES (2, 250), (3, 220), (4, 190), (5, 300);
Kayฤฑtlarฤฑn baลarฤฑyla oluลturulup oluลturulmadฤฑฤฤฑnฤฑ doฤrulayalฤฑm:
SELECT * FROM price;
GรNCELLEME
UPDATE komutu, tabloya รถnceden eklenmiล olan kayฤฑtlarฤฑ deฤiลtirmemize veya dรผzenlememize yardฤฑmcฤฑ olur. Gรผncellenecek kaydฤฑ belirtmek iรงin bunu WHERE yan tรผmcesiyle birleลtirebilirsiniz. ฤฐลte sรถzdizimi:
UPDATE tableName SET field=newValue, field2=newValue2,... [WHERE ...]
UPDATE komutu ayrฤฑca SET, WHERE, LIMIT ve ORDER BY gibi cรผmlelerle de birleลtirilebilir. Kฤฑsa sรผre iรงinde ลunu gรถreceksiniz:
Aลaฤฤฑdaki kayฤฑtlara sahip Price adlฤฑ tabloyu ele alalฤฑm:
ID'si 1 olan kitabฤฑn fiyatฤฑnฤฑ 200'den 250'ye deฤiลtirelim:
UPDATE price SET price = 250 WHERE id = 1;
Komut baลarฤฑyla รงalฤฑลtฤฑrฤฑldฤฑ. Artฤฑk deฤiลikliฤin gerรงekleลip gerรงekleลmediฤini gรถrmek iรงin tabloyu sorgulayabilirsiniz:
Yukarฤฑdaki ekran gรถrรผntรผsรผ deฤiลikliฤin uygulandฤฑฤฤฑnฤฑ gรถsteriyor. Aลaฤฤฑdaki kayฤฑtlara sahip Book tablosunu ele alalฤฑm:
Kitap adlฤฑ kitabฤฑn adฤฑnฤฑ deฤiลtirelim. MariaDB 1 kitap. Kitabฤฑn kimliฤinin 1 olduฤuna dikkat edin. Bunun iรงin komut ลรถyledir:
UPDATE book SET name = โMariaDB Book1โ WHERE id = 1;
Deฤiลikliฤin uygulanฤฑp uygulanmadฤฑฤฤฑnฤฑ kontrol edin:
Yukarฤฑdaki ekran gรถrรผntรผsรผ deฤiลikliฤin baลarฤฑyla uygulandฤฑฤฤฑnฤฑ gรถstermektedir.
Yukarฤฑdaki รถrneklerde aynฤฑ anda yalnฤฑzca bir sรผtunu deฤiลtirdik. Ancak aynฤฑ anda birden fazla sรผtunu deฤiลtirmemiz mรผmkรผndรผr. Bunu bir รถrnek kullanarak gรถsterelim.
Aลaฤฤฑdaki verilerle Fiyat tablosunu kullanalฤฑm:
5 id'li kitabฤฑn hem id'sini hem de fiyatฤฑnฤฑ deฤiลtirelim. id'sini 6, fiyatฤฑnฤฑ da 6 olarak deฤiลtireceฤiz. Aลaฤฤฑdaki komutu รงalฤฑลtฤฑrฤฑn:
UPDATE price SET id = 6, price = 280 WHERE id = 5;
ลimdi deฤiลikliฤin baลarฤฑyla yapฤฑlฤฑp yapฤฑlmadฤฑฤฤฑnฤฑ kontrol etmek iรงin tabloyu sorgulayฤฑn:
Deฤiลiklik baลarฤฑyla gerรงekleลtirildi.
Sil
Bir tablodan bir veya daha fazla kaydฤฑ silmemiz gerektiฤinde DELETE komutunu kullanฤฑrฤฑz. ฤฐลte komutun sรถzdizimi:
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
Aลaฤฤฑdaki kayฤฑtlarฤฑn bulunduฤu Fiyat tablosunu ele alalฤฑm:
Tablodan son kaydฤฑ silmemiz gerekiyor. IDโsi 6, fiyatฤฑ ise 280. Kaydฤฑ silelim:
DELETE FROM price WHERE id = 6;
Komut baลarฤฑyla รงalฤฑลtฤฑrฤฑldฤฑ. Silme iลleminin baลarฤฑlฤฑ olup olmadฤฑฤฤฑnฤฑ doฤrulamak iรงin tabloyu sorgulayalฤฑm:
รฤฑktฤฑ, kaydฤฑn baลarฤฑyla silindiฤini gรถsterir.
Nerede
WHERE ifadesi, bir deฤiลiklik yapmamฤฑz gereken tam konumu belirtmemize yardฤฑmcฤฑ olur. INSERT, SELECT, UPDATE ve DELETE gibi ifadelerle birlikte kullanฤฑlฤฑr. Aลaฤฤฑdaki verilerle Price tablosunu ele alalฤฑm:
Diyelim ki fiyatฤฑn 250'den az olduฤu kayฤฑtlarฤฑ gรถrmemiz gerekiyor. Aลaฤฤฑdaki komutu รงalฤฑลtฤฑrabiliriz:
SELECT * FROM price WHERE price < 250;
Fiyatฤฑn 250'nin altฤฑnda olduฤu tรผm kayฤฑtlar iade edildi.
WHERE ifadesi AND ifadesiyle birleลtirilebilir. Fiyat tablosunda fiyatฤฑn 250'nin altฤฑnda ve id'nin 3'รผn รผzerinde olduฤu tรผm kayฤฑtlarฤฑ gรถrmemiz gerektiฤini varsayalฤฑm. Aลaฤฤฑdaki komutu รงalฤฑลtฤฑrabiliriz:
SELECT * FROM price WHERE id > 3 AND price < 250;
Yalnฤฑzca bir kayฤฑt dรถndรผrรผldรผ. Sebebi ise belirtilen tรผm koลullarฤฑ karลฤฑlamasฤฑ yani id'nin 3'รผn รผzerinde ve fiyatฤฑn 250'nin altฤฑnda olmasฤฑ gerekiyor. Bu koลullardan herhangi biri ihlal edilirse kayฤฑt iade edilmeyecektir.
Cรผmle aynฤฑ zamanda OR komutuyla da birleลtirilebilir. รnceki komutumuzdaki AND'i OR ile deฤiลtirelim ve nasฤฑl bir รงฤฑktฤฑ alacaฤฤฑmฤฑza bakalฤฑm:
SELECT * FROM price WHERE id > 3 OR price < 250;
Artฤฑk 2 yerine 1 kayฤฑt alฤฑyoruz. Bunun nedeni, bir eleme kaydฤฑ iรงin belirtilen koลullardan yalnฤฑzca birini karลฤฑlamasฤฑ gerektiฤidir.
Facebok sayfasฤฑnฤฑ beฤenin :
Bu cรผmle, tam eลleลmenin gerekli olduฤu tablo verilerine eriลirken veri modelini belirtmek iรงin kullanฤฑlฤฑr. INSERT, UPDATE, SELECT ve DELETE ifadeleriyle birleลtirilebilir.
Aradฤฑฤฤฑnฤฑz veri modelini cรผmleye iletmelisiniz; bu, doฤru ya da yanlฤฑล deฤerini dรถndรผrecektir. Cรผmleyle birlikte kullanฤฑlabilecek joker karakterler ลunlardฤฑr:
- %: 0 veya daha fazla karakteri eลleลtirmek iรงin.
- _: tek bir karakteri eลleลtirmek iรงin.
LIKE yan tรผmcesinin sรถzdizimi ลรถyledir:
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
% joker karakteriyle ifadenin nasฤฑl kullanฤฑlacaฤฤฑnฤฑ gรถsterelim. Aลaฤฤฑdaki kayฤฑtlarla Book tablosunu kullanalฤฑm:
ฤฐsmin M ile baลladฤฑฤฤฑ tรผm kayฤฑtlarฤฑ gรถrmemiz gerekiyor. Aลaฤฤฑdaki komutu รงalฤฑลtฤฑrabiliriz:
SELECT name FROM book WHERE name LIKE 'M%';
Tรผm kayฤฑtlar dรถndรผrรผldรผ รงรผnkรผ adlarฤฑ M harfiyle baลlฤฑyor. 4 ile biten tรผm adlarฤฑ gรถrmek iรงin aลaฤฤฑdaki komutu รงalฤฑลtฤฑrabilirsiniz:
SELECT name FROM book WHERE name LIKE '%4';
Koลulu karลฤฑlayan tek isim olduฤu iรงin yalnฤฑzca bir isim geri verildi.
Arama modelini joker karakterle de รงevreleyebiliriz:
SELECT name FROM book WHERE name LIKE '%DB%';
% joker karakteri dฤฑลฤฑnda, LIKE yan tรผmcesi _ joker karakteriyle birlikte kullanฤฑlabilir. Bu alt รงizgi joker karakteridir ve yalnฤฑzca tek bir karakteri arayacaktฤฑr.
Aลaฤฤฑdaki kayฤฑtlarla Fiyat tablosuyla รงalฤฑลalฤฑm:
Fiyatฤฑn 1_0 gibi olduฤu kaydฤฑ kontrol edelim. Aลaฤฤฑdaki komutu รงalฤฑลtฤฑrฤฑyoruz:
SELECT * FROM price WHERE price LIKE '1_0';
Fiyatฤฑn 190 olduฤu rekoru dรถndรผrdรผ. Baลka bir model de deneyebiliriz:
SELECT * FROM price WHERE price LIKE '_2_';
LIKE deyimini NOT operatรถrรผyle birlikte kullanmamฤฑz mรผmkรผndรผr. Bu, belirtilen kalฤฑba uymayan tรผm kayฤฑtlarฤฑ dรถndรผrecektir. รrneฤin:
Fiyat tablosunu aลaฤฤฑdaki kayฤฑtlarla kullanalฤฑm:
Fiyatฤฑn 2 ile baลlamadฤฑฤฤฑ tรผm kayฤฑtlarฤฑ bulalฤฑm:
SELECT * FROM price WHERE price NOT LIKE '2%';
Yalnฤฑzca bir kayฤฑt belirtilen kalฤฑba uymuyor.
By Sipariล
Bu madde, kayฤฑtlarฤฑmฤฑzฤฑ artan veya azalan dรผzende sฤฑralamamฤฑza yardฤฑmcฤฑ olur. Aลaฤฤฑda gรถsterildiฤi gibi SELECT deyimiyle kullanฤฑyoruz:
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
Bu cรผmleyi ASC ya da DESC kฤฑsmฤฑnฤฑ eklemeden de kullanmamฤฑz mรผmkรผn. รrneฤin:
Fiyat tablosunu aลaฤฤฑdaki kayฤฑtlarla kullanacaฤฤฑz:
Aลaฤฤฑdaki komutu tabloya karลฤฑ รงalฤฑลtฤฑrฤฑn:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
Yukarฤฑdaki komutta fiyata gรถre sipariล verdik. Kayฤฑtlar fiyatlara gรถre artan sฤฑrada sฤฑralanmฤฑลtฤฑr. Bu, sฤฑrayฤฑ belirtmediฤimizde, sฤฑralamanฤฑn varsayฤฑlan olarak artan sฤฑrada yapฤฑldฤฑฤฤฑ anlamฤฑna gelir.
Cรผmleyi DESC seรงeneฤiyle รงalฤฑลtฤฑralฤฑm:
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
Kayฤฑtlar belirttiฤimiz gibi fiyatlara gรถre azalan ลekilde sฤฑralanmฤฑลtฤฑr.
ORDER BY deyimini ASC niteliฤiyle birlikte kullanalฤฑm:
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
Kayฤฑtlar sฤฑralanmฤฑลtฤฑr ancak fiyatlar artan sฤฑradadฤฑr. Bu, ORDER BY yan tรผmcesini ASC veya DESC nitelikleri olmadan kullanmamฤฑza benzer.
DISTINCT
Bu madde, bir tablodan kayฤฑt seรงerken kopyalarฤฑ ortadan kaldฤฑrmamฤฑza yardฤฑmcฤฑ olur. Bu, benzersiz kayฤฑtlar elde etmemize yardฤฑmcฤฑ olduฤu anlamฤฑna gelir. Sรถzdizimi aลaฤฤฑda verilmiลtir:
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
Bunu gรถstermek iรงin aลaฤฤฑdaki verilerle Fiyat tablosunu kullanacaฤฤฑz:
Tablodan fiyat sรผtununu seรงtiฤimizde aลaฤฤฑdaki sonucu elde ederiz:
SELECT price FROM Price;
Fiyatฤฑ 250 olan iki kaydฤฑmฤฑz var, kopya oluลturuyor. Yalnฤฑzca benzersiz kayฤฑtlara ihtiyacฤฑmฤฑz var. Bunlarฤฑ aลaฤฤฑda gรถsterildiฤi gibi DISTINCT yan tรผmcesini kullanarak filtreleyebiliriz:
SELECT DISTINCT price FROM Price;
Artฤฑk yukarฤฑdaki รงฤฑktฤฑda herhangi bir kopyamฤฑz yok.
Baลlangฤฑรง
Bir veritabanฤฑ tablosundan veri almak iรงin kullanฤฑlan FROM cรผmlesi. Ayrฤฑca masalara katฤฑlฤฑrken de yardฤฑmcฤฑ olabilir. ฤฐลte komutun sรถzdizimi:
SELECT columnNames FROM tableName;
Kitap tablosunun iรงeriฤini gรถrmek iรงin aลaฤฤฑdaki komutu รงalฤฑลtฤฑrฤฑn:
SELECT * FROM price;
Cรผmle, bir veritabanฤฑ tablosundan yalnฤฑzca tek bir sรผtunu almanฤฑza yardฤฑmcฤฑ olabilir. รrneฤin:
SELECT price FROM Price;
Geliลmiล Gรถrevler
Saklฤฑ yordam
Bir prosedรผr bir MariaDB Parametreleri aktarabileceฤiniz program. Bir prosedรผr deฤerleri dรถndรผrmez. Bir prosedรผr oluลturmak iรงin CREATE PROCEDURE komutunu kullanฤฑrฤฑz.
Bir prosedรผrรผn nasฤฑl oluลturulacaฤฤฑnฤฑ ve รงaฤrฤฑlacaฤฤฑnฤฑ gรถstermek iรงin, kitap tablosundan ad sรผtununu seรงmemize yardฤฑmcฤฑ olan myProcedure() adlฤฑ bir prosedรผr oluลturacaฤฤฑz. ฤฐลte prosedรผr:
DELIMITER $
CREATE PROCEDURE myProcedure()
BEGIN
SELECT name FROM book;
END;
;
Prosedรผr oluลturuldu. SELECT deyimini basitรงe prosedรผrรผn BEGIN ve END cรผmlelerinin iรงerisine ekledik.
Artฤฑk prosedรผrรผ aลaฤฤฑda gรถsterildiฤi gibi adฤฑyla รงaฤฤฑrabiliriz:
CALL myProcedure();
Prosedรผr, รงaฤrฤฑldฤฑฤฤฑnda kitap tablosunun ad sรผtununu dรถndรผrรผr.
Bir parametre alan bir prosedรผr oluลturabiliriz. รrneฤin, kitabฤฑn adฤฑnฤฑ seรงmemiz ve kitap kimliฤini kullanarak filtrelememiz gerekir. Bunun iรงin aลaฤฤฑdaki prosedรผrรผ oluลturabiliriz:
DELIMITER $
CREATE PROCEDURE myProcedure2(book_id int)
BEGIN
SELECT name FROM book WHERE id = book_id;
END;
;
Yukarฤฑda myProcedure2() adฤฑnda bir prosedรผr oluลturduk. Bu prosedรผr, adฤฑnฤฑ gรถrmemiz gereken kitabฤฑn kimliฤi olan kitap_id adlฤฑ bir tam sayฤฑ parametresini alฤฑr. IDโsi 3 olan kitabฤฑn ismini gรถrmek iรงin iลlemi ลu ลekilde รงaฤฤฑrabiliriz:
CALL myProcedure2(3);
ฤฐลlev
Prosedรผrlerden farklฤฑ olarak, parametrelere iลlevlere aktarmamฤฑz gerekir ve bir iลlev bir deฤer dรถndรผrmelidir. ฤฐรงinde bir iลlev oluลturmak iรงin MariaDB, CREATE FUNCTION ifadesini kullanฤฑrฤฑz. ฤฐfade aลaฤฤฑdaki sรถzdizimini alฤฑr:
CREATE
[ DEFINER = { CURRENT-USER | username } ]
FUNCTION function-name [(parameter datatype [, parameter datatype]) ]
RETURNS datatype [LANGUAGE SQL
| DETERMINISTIC
| NOT DETERMINISTIC
| {CONTAINS SQL
| NO SQL
| READS SQL DATA
| MODIFIES SQL DATA}
| SQL SECURITY {DEFINER | INVOKER}
| COMMENT 'comment'
BEGIN
declaration-section
executable-section
END;
Yukarฤฑdaki parametreler aลaฤฤฑda aรงฤฑklanmฤฑลtฤฑr:
| Parametre | Aรงฤฑklama |
|---|---|
| DEFINER cรผmlesi | Bu parametre isteฤe baฤlฤฑdฤฑr. Eฤer belirtmezseniz, tanฤฑmlayฤฑcฤฑ fonksiyonu yaratan kullanฤฑcฤฑ olacaktฤฑr. Farklฤฑ bir tanฤฑmlayฤฑcฤฑ belirtilmesi gerekiyorsa, kullanฤฑcฤฑ_adฤฑ'nฤฑn fonksiyonun tanฤฑmlayฤฑcฤฑsฤฑ olacaฤฤฑ DEFINER deyimini ekleyin. |
| fonksiyon adฤฑ | Bu fonksiyona atanacak isim MariaDB. |
| parametre | Parametre(ler) fonksiyona aktarฤฑldฤฑ. Fonksiyonun oluลturulmasฤฑ sฤฑrasฤฑnda tรผm parametreler ลu ลekilde ele alฤฑnฤฑr: GฤฐRฤฐล parametreleri (OUT/INOUT parametreleri yerine). |
| return_datatype | Fonksiyonun dรถnรผล deฤerinin veri tรผrรผ. |
| DฤฐL SQL | Taลฤฑnabilirliฤi etkiler ancak iลlevi etkilemez. |
| DETERMฤฐNฤฐSTฤฐK | Fonksiyon yalnฤฑzca bir dizi parametre verildiฤinde tek bir sonuรง dรถndรผrecektir. |
| DETERMฤฐNฤฐST DEฤฤฐL | Bir dizi parametre verildiฤinde fonksiyonun farklฤฑ bir sonuรง dรถndรผrmesi mรผmkรผndรผr. |
| SQL ฤฐรERฤฐR | Bilgi verir MariaDB bu fonksiyonun SQL iรงerdiฤini. Veritabanฤฑ bunun doฤru olup olmadฤฑฤฤฑnฤฑ doฤrulamayacaktฤฑr. |
| SQL YOK | Bu madde kullanฤฑlmaz ve iลleviniz รผzerinde hiรงbir etkisi yoktur. |
| SQL VERฤฐLERฤฐNฤฐ OKUYOR | Sรถyler MariaDB bu iลlevin verileri okumak iรงin SELECT ifadelerini kullanacaฤฤฑnฤฑ ancak verileri deฤiลtirmeyeceฤini. |
| SQL VERฤฐLERฤฐNฤฐ DEฤฤฐลTฤฐRฤฐR | Sรถyler MariaDB bu iลlevin INSERT, DELETE, UPDATE ve diฤerlerini kullanacaฤฤฑnฤฑ DDL SQL verilerini deฤiลtirmek iรงin ifadeler. |
| beyan bรถlรผmรผ | Yerel deฤiลkenlerin bildirilmesi gereken yer burasฤฑdฤฑr. |
| yรผrรผtรผlebilir bรถlรผm | Fonksiyon kodu buraya eklenmelidir. |
ฤฐลte bir รถrnek MariaDB iลlevi:
DELIMITER // CREATE FUNCTION sumFunc (x INT ) RETURNS INT DETERMINISTIC BEGIN DECLARE sum INT; SET sum = 0; label1: WHILE sum <= 3000 DO SET sum = sum + x; END WHILE label1; RETURN sum; END; // DELIMITER ;
Daha sonra yukarฤฑdaki fonksiyonu ลu ลekilde รงaฤฤฑrabiliriz:
select sumFunc(1000);
Komut aลaฤฤฑdakini dรถndรผrecektir:
Bir fonksiyonla iลiniz bittiฤinde onu silmeniz sizin iรงin iyi olacaktฤฑr. Bu kolaydฤฑr รงรผnkรผ sadece aลaฤฤฑdaki sรถzdizimini kullanan DROP FUNCTION ifadesini รงaฤฤฑrmanฤฑz gerekir:
DROP FUNCTION function_name;
รrneฤin myFunc isimli fonksiyonu bฤฑrakmak iรงin aลaฤฤฑdaki komutu รงalฤฑลtฤฑrabiliriz:
DROP FUNCTION myFunc;
JOIN
Aynฤฑ anda birden fazla tablodan veri almanฤฑz gerektiฤinde ลunu kullanฤฑn: MariaDB KATILIN. Bu ลu anlama gelir: JOIN iki veya daha fazla tabloda รงalฤฑลฤฑr. Aลaฤฤฑdaki รผรง tรผr JOINS desteklenir MariaDB:
- ฤฐร/BASฤฐT BฤฐRLEลME
- SOL DIล BฤฐRLEลTฤฐRME/SOL BฤฐRLEลTฤฐRME
- SAฤ DIล BฤฐRLEลTฤฐRME/SAฤ BฤฐRLEลTฤฐRME
Bunlarฤฑ tek tek tartฤฑลalฤฑm:
INNER JOIN
ฤฐรง birleลtirme, birleลtirme koลulunun doฤru olduฤu tablolardaki tรผm satฤฑrlarฤฑ dรถndรผrรผr. Sรถzdizimi aลaฤฤฑdaki gibidir:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
รrneฤin:
ฤฐki masamฤฑzฤฑ, kitabฤฑmฤฑzฤฑ ve kitabฤฑmฤฑzฤฑ kullanacaฤฤฑz.
Kitap tablosunda ลu veriler yer alฤฑr:
Fiyat tablosunda ลu veriler yer almaktadฤฑr:
Amaรง, Kitap tablosundaki ad sรผtununu ve Fiyat tablosundaki fiyat sรผtununu tek bir tabloda birleลtirmektir. Bu, aลaฤฤฑda gรถsterildiฤi gibi bir iรง birleลtirmeyle mรผmkรผndรผr:
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
Komut aลaฤฤฑdakini dรถndรผrรผr:
SOL DIล KATILMA
Bu birleลtirme, sol taraftaki tablodaki tรผm satฤฑrlarฤฑ ve yalnฤฑzca diฤer tablodaki birleลtirme koลulunun doฤru olduฤu satฤฑrlarฤฑ dรถndรผrรผr. Sรถzdizimi aลaฤฤฑdaki gibidir:
SELECT columns FROM table-1 LEFT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
OUTER anahtar sรถzcรผฤรผ isteฤe baฤlฤฑ olduฤundan kรถลeli parantez iรงine alฤฑnmฤฑลtฤฑr.
รrneฤin:
SELECT book.name, price.price FROM book LEFT JOIN price ON book.id = price.id;
Komut aลaฤฤฑdakini dรถndรผrรผr:
Yukarฤฑdaki tablodaki son kaydฤฑn solda eลleลen deฤeri yoktur. Bu nedenle NULL ile deฤiลtirildi.
SAฤ DIล BฤฐRLEลTฤฐRME
Bu birleลtirme, saฤ taraftaki tablodaki tรผm satฤฑrlarฤฑ ve yalnฤฑzca diฤer tablodaki birleลtirme koลulunun doฤru olduฤu satฤฑrlarฤฑ dรถndรผrรผr. Sรถzdizimi aลaฤฤฑdaki gibidir:
SELECT columns FROM table-1 RIGHT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
OUTER anahtar sรถzcรผฤรผ isteฤe baฤlฤฑ olduฤundan kรถลeli parantez iรงine alฤฑnmฤฑลtฤฑr.
รrneฤin:
SELECT book.name, price.price FROM book RIGHT JOIN price ON book.id = price.id;
Komut aลaฤฤฑdakini dรถndรผrรผr:
Bunun nedeni, saฤdaki tablodaki tรผm satฤฑrlarฤฑn diฤer tablodaki satฤฑrlarla eลleลtirilmiล olmasฤฑdฤฑr. Eฤer satฤฑrlardan bazฤฑlarฤฑ eลleลmeseydi, ilk sรผtunda NULL'lar olurdu.






































































