MySQL časť pätnásta - použitie ALTER TABLE
Dátum: 27. March 2001
Vec: MySQL

ALTER TABLE nám umožňuje meniť štruktúru už existujúcej tabuľky. Okrem toho pomocou tohto príkazu môžeme pridávať, mazať jednotlivé stĺpce, vytvárať a mazať indexy, meniť typy a vlastnosti existujúcich stĺpcov (položiek). Je dovolené pomocou tohto príkazu tiež premenovávať položky v tabuľkách a samozrejme i celé tabuľky.



Najskôr si ukážme ako vypadá syntax príkazu ALTER TABLE.

ALTER [IGNORE] TABLE tbl_name alter_specifikacia [, alter_spec ...]

alter_specifikacia:
         ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
alebo    ADD [COLUMN] (create_definition, create_definition,...)
alebo    ADD INDEX [index_name] (index_col_name,...)
alebo    ADD PRIMARY KEY (index_col_name,...)
alebo    ADD UNIQUE [index_name] (index_col_name,...)
alebo    ADD FULLTEXT [index_name] (index_col_name,...)
alebo	 ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
            [reference_definition]
alebo    ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
alebo    CHANGE [COLUMN] old_col_name create_definition
alebo    MODIFY [COLUMN] create_definition
alebo    DROP [COLUMN] col_name
alebo    DROP PRIMARY KEY
alebo    DROP INDEX index_name
alebo    RENAME [TO] new_tbl_name
alebo    ORDER BY col
alebo    table_options

Ukážme si teraz na reálnych príkladoch použitie ALTER TABLE a začnime s vytvorením jednoduchej tabuľky, na ktorej si ukážeme využitie tohto príkazu.

mysql> CREATE TABLE table_A (meno CHAR(10), vek INTEGER);
Query OK, 0 rows affected (0.04 sec)

Tabuľka bude potom vypadať nasledovne:

mysql> DESCRIBE table_A;
+-------+---------+------+-----+---------+-----+---------------------+
| Field | Type    | Null | Key | Default |Extra| Privileges          |
+-------+---------+------+-----+---------+-----+---------------------+
| meno  | char(10)| YES  |     | NULL    |     | select,insert,update|
| vek   | int(11) | YES  |     | NULL    |     | select,insert,update|
+-------+---------+------+-----+---------+-----+---------------------+
2 rows in set (0.00 sec)

V prvom rade si skúsme premenovať tabuľku table_A na tabuľku table_B:

mysql> ALTER TABLE table_A RENAME table_B;

Teraz sa skúsme pohrať priamo s položkami tabuľky. Stľpec "meno" premenujeme na "prve_meno" a zmenime jeho typ z CHAR(10) na CHAR(22). Okrem toho zmenime typ položky "vek" na TINYINT NOT NULL bez zmeny názvu položky.

mysql> ALTER TABLE table_B MODIFY vek TINYINT NOT NULL, 
CHANGE meno prve_meno CHAR(22);
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

Skúsme si teraz pridať do našej tabuľky "table_B" jeden nový stĹpec s názvom "datum_nar" a typom DATE.

mysql> ALTER TABLE table_B ADD datum_nar DATE;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

Pridanie príznaku "PRIMARY KEY" na položku "prve_meno" urobime nasledovne (pred tým musíme samozrejme zmeniť typ položky na NOT NULL, pretože inak jej nepridáme príznak primárného kľúča):

mysql> ALTER TABLE table_B MODIFY prve_meno CHAR(22) NOT NULL; Query OK, 1 row affected (0.03 sec) Records: 1 Duplicates: 0 Warnings: 0

A teraz už môžeme pridať príznak primárneho kľúča na položku "prve_meno":

mysql> ALTER TABLE table_B ADD PRIMARY KEY (prve_meno);

Na záver si skúsme pomocou ALTER TABLE odobrať z tabuľky "table_B" stĺpec "datum_nar":

mysql> ALTER TABLE table_B DROP COLUMN datum_nar;

To by sme teda mali, naša výsledná tabuľka má len málo spoločné s našou pôvodnou tabuľkou, ktorú sme si vytvorili na začiatku tohto článku :-)

mysql> DESCRIBE table_B;
+-----------+-----------+----+---+--------+------+---------------------+
| Field     | Type      |Null|Key| Default|Extra | Privileges          |
+-----------+-----------+----+---+--------+------+---------------------+
| prve_meno | char(22)  |    |PRI|        |      | select,insert,update|
| vek       | tinyint(4)|    |   | 0      |      | select,insert,update|
+-----------+-----------+----+---+--------+------+---------------------+
2 rows in set (0.00 sec)




Tento článok je z Developer.sk
http://www.developer.sk/

URL pre tento príspevok je:
http://www.developer.sk//article.php?sid=192