`ALTER TABLE' cambia la estructura de una tabla ya existente . Por ejemplo: tu puedes agregar o borra columnas, craer o borrar index, tambien se puede cambiar el tipo de columna ya existente y renombrar columnas en la misma tabla. ALTER [IGNORE] TABLE TBL_NAME ALTER_SPECIFICATION [, ALTER_SPECIFICATION] ... ALTER_SPECIFICATION: ADD [COLUMN] COLUMN_DEFINITION [FIRST | AFTER COL_NAME ] | ADD [COLUMN] (COLUMN_DEFINITION,...) | ADD INDEX [INDEX_NAME] [INDEX_TYPE] (INDEX_COL_NAME,...) | ADD [CONSTRAINT [SYMBOL]] PRIMARY KEY [INDEX_TYPE] (INDEX_COL_NAME,...) | ADD [CONSTRAINT [SYMBOL]] UNIQUE [INDEX_NAME] [INDEX_TYPE] (INDEX_COL_NAME,...) | ADD [FULLTEXT|SPATIAL] [INDEX_NAME] (INDEX_COL_NAME,...) | ADD [CONSTRAINT [SYMBOL]] FOREIGN KEY [INDEX_NAME] (INDEX_COL_NAME,...) [REFERENCE_DEFINITION] | ALTER [COLUMN] COL_NAME {SET DEFAULT LITERAL | DROP DEFAULT} | CHANGE [COLUMN] OLD_COL_NAME COLUMN_DEFINITION [FIRST|AFTER COL_NAME] | MODIFY [COLUMN] COLUMN_DEFINITION [FIRST | AFTER COL_NAME] | DROP [COLUMN] COL_NAME | DROP PRIMARY KEY | DROP INDEX INDEX_NAME | DROP FOREIGN KEY FK_SYMBOL | DISABLE KEYS | ENABLE KEYS | RENAME [TO] NEW_TBL_NAME | ORDER BY COL_NAME | CONVERT TO CHARACTER SET CHARSET_NAME [COLLATE COLLATION_NAME] | [DEFAULT] CHARACTER SET CHARSET_NAME [COLLATE COLLATION_NAME] | IMPORT TABLESPACE | TABLE_OPTIONS * Para usar `ALTER TABLE', es necesario que el usuario tenga los preivilegios en las tablas de `ALTER', `INSERT' y `CREATE' ejemplos: en la tabla t2 borrar las columna c y d; mysql> ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d; Para renombrar columna se utiliza; cambia el nombre de a por b mysql> ALTER TABLE t1 CHANGE a b INTEGER; Para cambiar el tipo de una columna pero no el nombre podemos utilizar el 'CHANGE' la sintaxis requiere el viejo y nuevo nombre aunque se llamen igual ejemplo: mysql> ALTER TABLE t1 CHANGE mat matricula BIGINT NOT NULL; sin embarga tambien se puede realizar lo siguiente donde solo modificas el tipo mysql> ALTER TABLE t1 MODIFY mat integer NOT NULL; Craer una tabla: mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10)); algunos ejemplo de de `ALTER TABLE'. Renombrar la tabla t1 por la tabla t2': mysql> ALTER TABLE t1 RENAME t2; Cambiar la columna `a' de tipo `INTEGER' por `TINYINT NOT NULL' (dejandole el mismo nombre), y cambiando la columna `b' de `CHAR(10)' a `CHAR(20)' y cambiando el nombre de `b' a `c': mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR (20); agregar un nuevo tipo `TIMESTAMP' y una columna llamada `d': mysql> ALTER TABLE t2 ADD d TIMESTAMP; Agregar un index en la columna `d' y la columna `a': mysql> ALTER TABLE t2 ADD INDEX (d), ADD INDEX (a); Borra la columna `c': mysql> ALTER TABLE t2 DROP COLUMN c; agregar una nueva columna llamda 'c' de tipo intger y `AUTO_INCREMENT' y la hacemos llave primaria mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (c); INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] TBL_NAME [(COL_NAME,...)] VALUES ({EXPR | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE COL_NAME=EXPR, ... ] O: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] TBL_NAME SET COL_NAME={EXPR | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE COL_NAME=EXPR, ... ] O: INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] TBL_NAME [(COL_NAME,...)] SELECT ... [ ON DUPLICATE KEY UPDATE COL_NAME=EXPR, ... ] mysql> INSERT INTO TBL_NAME () VALUES(); Para cuando el valor este duplicado: mysql> INSERT INTO table (a,b,c) VALUES (1,2,3) -> ON DUPLICATE KEY UPDATE c=c+1; mysql> UPDATE table SET c=c+1 WHERE a=1; Estas sentencais hacen lo mismo: mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); mysql> INSERT INTO table (a,b,c) VALUES (1,2,3) -> ON DUPLICATE KEY UPDATE c=3; mysql> INSERT INTO table (a,b,c) VALUES (4,5,6) -> ON DUPLICATE KEY UPDATE c=9; Nota: cuado utilice `ON DUPLICATE KEY UPDATE', el `DELAYED' es ignorado. BORRA INFORMACION: TABLAS SIMPLES: DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM TBL_NAME [WHERE WHERE_DEFINITION] [ORDER BY ...] [LIMIT ROW_COUNT] MultipleS-table : DELETE [LOW_PRIORITY] [QUICK] [IGNORE] TBL_NAME[.*] [, TBL_NAME[.*] ...] FROM TABLE_REFERENCES [WHERE WHERE_DEFINITION] mysql> DELETE FROM TBL_NAME WHERE L>0; DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp LIMIT 1 Es de uso exlusivo de varias tablas: para el primer ejemplo hace un match para las tablas que estan listadas antes de `FROM' y par el segundo ejemplo solo para los que etsan listados despues del 'FROM' y antes de l 'USING' DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id; O: DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;