Kategoriler
SQL

MySQL ile Index Silmek

MySQL ‘de tabloların indexlerini silmek için DROP INDEX söz dizimi kullanılır. Bu ifade, indexi kaldırmak için bir ALTER TABLE deyimiyle eşleştirilir.

Söz Dizimi;
ALTER TABLE `table_name` DROP PRIMARY KEY;
ALTER TABLE `table_name` DROP INDEX `index_name`;

Örnek;
ALTER TABLE `orders` DROP PRIMARY KEY;
ALTER TABLE `orders` DROP INDEX `ID`;

Kategoriler
SQL

MySQL ile Index Değiştirmek

MySQL ‘de index değiştirmek için kullanılan bir söz dizimi yok. Index değiştirmek veya güncellemek için mevcut index silinip yeni bir index oluşturulur.

Söz Dizimi;
ALTER TABLE table_name DROP PRIMARY KEY, ADD PRIMARY KEY (`column_name`);
ALTER TABLE table_name DROP INDEX `column_name`, ADD UNIQUE `column_name` (`column_name`)
ALTER TABLE table_name DROP INDEX `column_name`, ADD INDEX `column_name` (`column_name`);

Örnek;

ALTER TABLE `orders` DROP PRIMARY KEY, ADD PRIMARY KEY (`KAYIT_ID`);
ALTER TABLE `orders` DROP INDEX `SIPARIS_ID`, ADD UNIQUE `SIPARIS_ID` (`SIPARIS_ID`);
ALTER TABLE `orders` DROP INDEX `CUSTOMER_ID`, ADD INDEX `CUSTOMER_ID` (`CUSTOMER_ID`);

Kategoriler
SQL

MySQL ile Index Eklemek

Indexler, belirli sütun değerlerine sahip satırları hızlı bir şekilde bulmak için kullanılır. Bir indeks olmadan, MySQL ilk satırla başlayıp ve ardından ilgili satırları bulmak için tüm tabloyu okur. Tablo ne kadar büyükse, maliyeti o kadar artar. Tabloda söz konusu sütunlar için bir index varsa, MySQL tüm verilere bakmak zorunda kalmadan veri dosyasının ortasında aranacak konumu hızla belirleyebilir. Bu, her satırı sırayla okumaktan çok daha hızlıdır.

MySQL indekslerinin çoğu (PRIMARY KEY, UNIQUE, INDEX ve FULLTEXT) B-trees ‘de saklanır. İstisnalar: Uzamsal veri türlerindeki indexler B-trees kullanır; MEMORY tabloları ayrıca hash indexlerini destekler; InnoDB, FULLTEXT indexleri için ters çevrilmiş listeler kullanır.

Söz Dizimi:
ALTER TABLE table_name ADD INDEX_TYPE `index_name` (column_name1, column_name2);
ALTER TABLE table_name ADD PRIMARY KEY(column_name);
ALTER TABLE table_name ADD UNIQUE(column_name);
ALTER TABLE table_name ADD INDEX(column_name);

Örnek:
ALTER TABLE orders ADD UNIQUE `index1` (SIPARIS_ID);
ALTER TABLE orders ADD INDEX `index2` (MUSTERI_ID,MUSTERI_NO);
ALTER TABLE orders ADD PRIMARY KEY(KAYIT_ID);
ALTER TABLE orders ADD UNIQUE(SIPARIS_ID);
ALTER TABLE orders ADD INDEX(MUSTERI_ID);

Kategoriler
SQL

MySQL ile Tablo Adını Değiştirmek

MySQL ‘de RENAME TABLE, bir veya daha fazla tabloyu yeniden adlandırır. Mevcut tablo için ALTER ve DROP ayrıcalıklarına ve yeni tablo için CREATE ve INSERT ayrıcalıklarına sahip olmanız gerekir.

Söz Dizimi;
RENAME TABLE `table_name` TO `new_table_name`;
RENAME TABLE `table_name` TO `new_table_name`, `table_name2` TO `new_table_name2`;
ALTER TABLE `old_table` RENAME `new_table`;

Örnek;
RENAME TABLE `tablo1` TO `tablo2`;
RENAME TABLE `tablo1` TO `tablo2`, `tablo3` TO `tablo4`;
ALTER TABLE `tablo1` RENAME `tablo2`;

Kategoriler
SQL

MySQL ile Tablo Silmek

MySQL ‘de veritabanı tablosunu silmek için DROP TABLE söz dizimi kullanılır. DROP TABLE, bir veya daha fazla tabloyu kaldırır. Her tablo için DROP ayrıcalığına sahip olmanız gerekir.

Söz Dizimi:
DROP TABLE table_name

Örnek:
DROP TABLE deneme_tablo

Birden fazla tabloyu silmek için bu sorguyu kullanın.

DROP TABLE `tablo1`, `tablo2`, `tablo3`;

Tablo eğer yoksa sorgu hata vereğinden, tablonun varlığını sorgulayarak kullanmak daha doğru olur.

DROP TABLE IF EXISTS `deneme_tablo`;
DROP TABLE IF EXISTS `tablo1`, `tablo2`, `tablo3`;

Bu sorgu tablo eğer varsa siler. Yoksa tablonun olmadığına dair bilgi döner.

Kategoriler
SQL

MySQL ile Tablo Değiştirmek

MySQL ‘de tablo güncellemek için ALTER TABLE söz dizimi kullanılır. ALTER TABLE söz dizimi, tabloda yapılacak ekleme, güncelleme ve silme işlemine göre şekil almaktadır.

Söz Dizimi:
ALTER TABLE `table_name` ADD `column_name` column_definition;
ALTER TABLE `table_name` CHANGE `current_column_name` `change_column_name` type_name column_definition;
ALTER TABLE `table_name` MODIFY `current_column_name` type_name column_definition;
ALTER TABLE `table_name` DROP `column_name`;

Örnek:
ALTER TABLE `deneme_tablo` ADD `sutun_isim` VARCHAR(50) NOT NULL;
ALTER TABLE `deneme_tablo` CHANGE `sutun_isim` `sutun_isim2` INT(10) NOT NULL;
ALTER TABLE `deneme_tablo` MODIFY`sutun_isim` INT(10) NOT NULL;
ALTER TABLE `deneme_tablo` DROP `sutun_isim`;

MySQL ‘de tablo düzenleme işleminde bir çok varyasyon mevcuttur. Bunlar şu şekilde;

Söz dizimine tablonun adının başına veritabanı adını ekleyebilirsiniz;
ALTER TABLE `deneme_db`.`deneme_tablo` ADD `sutun_isim` VARCHAR(50) NOT NULL;

Tabloya eklenecek sütün eğer tüm sutunların en başına eklenecek ise FIRST ifadesi eklenir:
ALTER TABLE `deneme_tablo` ADD `sutun_isim` VARCHAR(50) NOT NULL FIRST;

Mevcut sütünün sıralamasını en başa almak için;
ALTER TABLE `deneme_tablo` CHANGE `ID` `ID` INT(10) NOT NULL FIRST;

Eklenecek sütün istenilen bir sütünün sonuna eklenecek ise AFTER sütün_ad eklenir;
ALTER TABLE `deneme_tablo` ADD `sutun_isim` VARCHAR(50) NOT NULL AFTER `sutun1`;

Mevcut sütünün bir sütünün sonrasına taşımak için AFTER sütün_ad kullanılır;
ALTER TABLE `deneme_tablo` CHANGE `sutun_isim` `sutun_isim` INT(10) NOT NULL AFTER `sutun1`;

Sütunları Yeniden Adlandırma, Yeniden Tanımlama ve Yeniden Sıralama

CHANGE, MODIFY ve ALTER yan tümceleri, mevcut sütunların adlarının ve tanımlarının değiştirilmesini sağlar. Bu karşılaştırmalı özelliklere sahipler:

CHANGE: Bir sütunu yeniden adlandırabilir ve tanımını veya her ikisini birden değiştirebilir. MODIFY’den daha fazla kabiliyete sahiptir, ancak bazı işlemler için kolaylık pahasına. CHANGE, sütunun yeniden adlandırılmaması durumunda iki kez adlandırılmasını gerektirir. FIRST veya AFTER ile sütunları yeniden sıralayabilirsiniz.

MODIFY: Bir sütun tanımını değiştirebilir ancak adını değiştiremez. Bir sütun tanımını yeniden adlandırmadan değiştirmek için CHANGE daha kullanışlıdır. FIRST veya AFTER ile sütunları yeniden sıralayabilirsiniz.

ALTER: Yalnızca bir sütun varsayılan değerini değiştirmek için kullanılır.

CHANGE, standart SQL için bir MySQL uzantısıdır. MODIFY, Oracle uyumluluğu için bir MySQL uzantısıdır.

Kategoriler
SQL

MySQL ile Tablo Oluşturmak

MySQL ile veritabanında tablo oluşturmak için CREATE TABLE söz dizimi kullanılır. Sadece CREATE TABLE söz dizimi kullanmak yeterli değildir. En az bir adet kolon ismi (veri tipi ile beraber) eklemek gerekir. Ayrıca tabloların depolama motorları mevcuttur. Bu motorlar verilerin tabloya nasıl yazılacağına, okunacağına, güncelleneceğini karar veren modüldür. innoDB ve MyISAM, MySQL de en çok kullanılan motorlardır.Söz diziminden motoru eklemez iseniz tabloya varsayılan motor tanımlanır. MySQL ‘de varsayılan depolama motoru innoDB ‘dir.

Söz Dizimi:
CREATE TABLE table_name (`column_name` data_type);
CREATE TABLE table_name (`column_name` data_type NOT NULL) ENGINE=engine_name DEFAULT CHARSET=charset_name COLLATE=collation_name;

Örnek:
CREATE TABLE denemetablo (`KOLON_ADI` INT NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE denemetablo (`ID` INT(10) NOT NULL AUTO_INCREMENT) ENGINE=innoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

SHOW CREATE TABLE ile adlandırılmış tabloyu oluşturan CREATE TABLE ifadesini gösterebilirsiniz.

SHOW CREATE TABLE table_name
Kategoriler
SQL

MySQL ile Veritabanı Adını Değiştirmek

MySQL veritabanı adını değiştirmek için mevcut söz dizimi yok. RENAME DATABASE söz dizimi 5.1.7 versiyonunda eklenmişti. Fakat tehlikeli olduğu görüldüğü (bu ifadenin kullanılması veritabanı içeriğinin kaybına neden olabilir) için 5.1.23 versiyonunda kaldırıldı. Veritabanının adını değiştirmek için üç adımda işlem yapmanız gerekir.

  1. Adım: Yeni bir veritabanı oluşturun.
    CREATE DATABASE yeniDB;
  2. Adım: Eski veritabanındaki tabloları yeni veritabanına taşıyın. Taşıma işlemi (RENAME TABLE söz dizimi ile) tablonun adını değiştirerek yapılır.
    RENAME TABLE eskiDB.tablo TO yeniDB.tablo;
    Birden fazla tablonuz var ise aşağıdaki söz dizimini kullanın:
    RENAME TABLE eskiDB.tablo TO yeniDB.tablo, eskiDB.tablo2 TO yeniDB.tablo2;
  3. Adım: Eski veritabanını silin.
    DROP DATABASE eskiDB;

Kategoriler
SQL

MySQL ile Veritabanı Silmek

Bir veritabanını silmek için DROP DATABASE kullanılır. Veritabanı ile beraber içindeki tabloları da siler.

Söz Dizimi:
DROP DATABASE databasename

Örnek:
DROP DATABASE denemeDB

Veritabanının olup olmadığını kontrol ederek de kullanabilirsiniz:
DROP DATABASE IF EXISTS denemeDB

Kategoriler
SQL

MySQL ile Veritabanı Değiştirmek

Bir veritabanının genel özelliklerini değiştirmek için ALTER DATABASE kullanılır.

Söz Dizimi:
ALTER DATABASE databasename
ALTER DATABASE databasename CHARACTER SET charset_name COLLATE collation_name

Örnek:
ALTER DATABASE denemeDB

Veritabanının karakter setini ve karşılaştırmasını değiştirmek için aşağıdaki söz dizimini kullanın:
ALTER DATABASE denemeDB CHARACTER SET utf8 COLLATE utf8_general_ci veya ALTER DATABASE denemeDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci