MySQL - ALTER Komutu

MySQL ALTER komutu, tablonuzun bir adını veya herhangi bir tablo alanını değiştirmek istediğinizde veya bir tablodaki mevcut bir sütunu eklemek veya silmek istediğinizde çok kullanışlıdır.

Adlı bir tablonun oluşturulmasıyla başlayalım testalter_tbl.

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> create table testalter_tbl
   -> (
   -> i INT,
   -> c CHAR(1)
   -> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field |  Type   | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|   i   | int(11) | YES  |     |   NULL  |       |
|   c   | char(1) | YES  |     |   NULL  |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Bir Sütunu Düşürme, Ekleme veya Yeniden Konumlandırma

Yukarıdaki MySQL tablosundan mevcut bir sütunu kaldırmak istiyorsanız, o zaman DROP ile birlikte fıkra ALTER komut aşağıda gösterildiği gibi -

mysql> ALTER TABLE testalter_tbl  DROP i;

Bir DROP Tabloda kalan tek sütun ise yan tümce çalışmayacaktır.

Bir sütun eklemek için ADD'yi kullanın ve sütun tanımını belirtin. Aşağıdaki ifade,i testalter_tbl sütunu -

mysql> ALTER TABLE testalter_tbl ADD i INT;

Bu ifadeyi yayınladıktan sonra testalter, tabloyu ilk oluşturduğunuzda sahip olduğu aynı iki sütunu içerecek, ancak aynı yapıya sahip olmayacaktır. Bunun nedeni, varsayılan olarak tablonun sonuna eklenen yeni sütunların olmasıdır. Bu nedenle olsa bilei başlangıçta mytbl'deki ilk sütun, şimdi sonuncusu.

mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field |  Type   | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|   c   | char(1) | YES  |     |   NULL  |       |
|   i   | int(11) | YES  |     |   NULL  |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Tabloda belirli bir konumda bir sütun istediğinizi belirtmek için, İLK düğmesini kullanarak ilk sütun yapın veya AFTER col_name yeni sütunun col_name'den sonra yerleştirilmesi gerektiğini belirtmek için.

Takip etmeyi dene ALTER TABLE ifadeler, kullanma SHOW COLUMNS her birinin ardından, her birinin nasıl bir etkiye sahip olduğunu görmek için -

ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;

FIRST ve AFTER belirteçleri yalnızca ADD cümlesiyle çalışır. Bu, bir tablo içindeki mevcut bir sütunu yeniden konumlandırmak istiyorsanız, önceDROP o ve sonra ADD yeni pozisyonda.

Bir Sütun Tanımını veya Adı Değiştirme (Değiştirme)

Bir sütunun tanımını değiştirmek için kullanın MODIFY veya CHANGE ALTER komutu ile birlikte yan tümce.

Örneğin, sütunu değiştirmek için c CHAR (1) 'den CHAR (10)' a, aşağıdaki komutu kullanabilirsiniz -

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

İle CHANGEsözdizimi biraz farklıdır. CHANGE anahtar sözcüğünden sonra, değiştirmek istediğiniz sütunu adlandırır, ardından yeni adı içeren yeni tanımı belirtirsiniz.

Aşağıdaki örneği deneyin -

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;

Şimdi dönüştürmek için DEĞİŞTİR'i kullanıyorsanız j itibaren BIGINT geri dön INT sütun adını değiştirmeden, ifade aşağıda gösterildiği gibi olacaktır -

mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

The Effect of ALTER TABLE on Null and Default Value Attributes- Bir sütunu DEĞİŞTİRİR veya DEĞİŞTİRİRKEN, sütunun BOŞ değerler içerip içermeyeceğini ve varsayılan değerinin ne olduğunu da belirtebilirsiniz. Aslında, bunu yapmazsanız, MySQL bu nitelikler için otomatik olarak değerler atar.

Aşağıdaki kod bloğu bir örnektir, burada NOT NULL sütunun değeri varsayılan olarak 100 olacaktır.

mysql> ALTER TABLE testalter_tbl 
   -> MODIFY j BIGINT NOT NULL DEFAULT 100;

Yukarıdaki komutu kullanmazsanız, MySQL tüm sütunlarda NULL değerleri dolduracaktır.

Bir Sütunun Varsayılan Değerini Değiştirme (Değiştirme)

Herhangi bir sütun için varsayılan değeri değiştirmek için ALTER komut.

Aşağıdaki örneği deneyin.

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field |  Type   | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|   c   | char(1) | YES  |     |   NULL  |       |
|   i   | int(11) | YES  |     |   1000  |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Herhangi bir sütundan varsayılan kısıtlamayı, DROP yan tümcesini kullanarak kaldırabilirsiniz. ALTER komut.

mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field |  Type   | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
|   c   | char(1) | YES  |     |   NULL  |       |
|   i   | int(11) | YES  |     |   NULL  |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Tablo Türünü Değiştirme (Değiştirme)

Kullanarak bir tablo türü kullanabilirsiniz. TYPEALTER komutu ile birlikte yan tümce. Değiştirmek için aşağıdaki örneği deneyin.testalter_tbl -e MYISAM tablo türü.

Mevcut tablo türünü öğrenmek için, SHOW TABLE STATUS Beyan.

mysql> ALTER TABLE testalter_tbl TYPE = MYISAM;
mysql>  SHOW TABLE STATUS LIKE 'testalter_tbl'\G
*************************** 1. row ****************
           Name: testalter_tbl
           Type: MyISAM
     Row_format: Fixed
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 25769803775
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2007-06-03 08:04:36
    Update_time: 2007-06-03 08:04:36
     Check_time: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

Bir Tabloyu Yeniden Adlandırma (Değiştirme)

Bir tabloyu yeniden adlandırmak için, RENAME seçeneği ALTER TABLE Beyan.

Yeniden adlandırmak için aşağıdaki örneği deneyin testalter_tbl -e alter_tbl.

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

INDEX komutunu oluşturmak ve bir MySQL dosyasına bırakmak için ALTER komutunu kullanabilirsiniz. Bir sonraki bölümde bu komut hakkında ayrıntılı olarak tartışacağız.