`ALTER TABLE` cambia la estructura de una tabla ya existente . Por

Anuncio
`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;
Descargar