Curso de MySQL
Consultas, lista de correo 'C++ Con Clase' 'MySQL Con Clase' página de entrada Tabla de contenido Contactar con Webmaster
Curso Sentencias Funciones API C

SQL

Sentencias

ALTER TABLE ANALYZE TABLE BACKUP TABLE BEGIN BEGIN WORK CHECK TABLE CHECKSUM TABLE COMMIT CREATE DATABASE CREATE TABLE CREATE USER DELETE DESCRIBE DO DROP DATABASE DROP INDEX DROP TABLE DROP USER FLUSH GRANT HANDLER INSERT INSERT ... SELECT INSERT DELAYED JOIN KILL LOAD DATA LOCK TABLES OPTIMIZE TABLE RENAME TABLE REPAIR TABLE REPLACE RESET REVOKE ROLLBACK SELECT SET SET TRANSACTION SHOW SHOW CHARACTER SET SHOW COLLATION SHOW COLUMNS SHOW CREATE DATABASE SHOW CREATE TABLE SHOW CREATE VIEW SHOW DATABASES SHOW ENGINES SHOW ERRORS SHOW GRANTS SHOW INDEX SHOW INNODB STATUS SHOW KEYS SHOW LOGS SHOW PRIVILEGES SHOW PROCESSLIST SHOW STATUS SHOW TABLE STATUS SHOW TABLES SHOW VARIABLES SHOW WARNINGS START TRANSACTION TRUNCATE UNION UNLOCK TABLES USE

UPDATE

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]

O:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name [, tbl_name ...]
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]

UPDATE actualiza columnas de filas existentes de una tabla con nuevos valores. La cláusula SET indica las columnas a modificar y los valores que deben tomar. La cláusula WHERE, si se da, especifica qué filas deben ser actualizadas. Si no se especifica, serán actualizadas todas ellas. Si se especifica la cláusula ORDER BY, las filas se modificarán en el orden especificado. La cláusula LIMIT establece un límite al número de filas que se pueden actualizar.

La sentencia UPDATE soporta los modificadores siguientes:

Si se accede a una columna de "tbl_name" en una expresión, UPDATE usa el valor actual de la columna. Por ejemplo, la siguiente sentencia asigna a la columna "edad" su valor actual más uno:

mysql> UPDATE persondata SET edad=edad+1;

Las asignaciones UPDATE se evalúan de izquierda a derecha. Por ejemplo, las siguientes sentencias doblan el valor de la columna "edad", y después la incrementan:

mysql> UPDATE persondata SET edad=edad*2, edad=edad+1;

Si se asigna a una columna el valor que tiene actualmente, MySQL lo notifica y no la actualiza.

Si se actualiza una columna que ha sido declarada como NOT NULL con el valor NULL, se asigna el valor por defecto apropiado para el tipo de la columna y se incrementa en contador de avisos. El valor por defecto es 0 para tipos numéricoss, la cadena vacía ('') para tipos de cadena, y el valor "cero" para tipos de fecha y tiempo.

UPDATE devuelve el número de filas que se han modificado. A partir de la versión 3.22 de MySQL, la función de API C mysql_info devuelve el número de filas que han coincidido y actualizado, y el número de avisos que se han obtenido durante la actualización.

Desde la versión 3.23 de MySQL, se puede usar LIMIT row_count para restringir el rango de actualización. La cláusula LIMIT trabaja del modo siguiente:

Si se usa una cláusula ORDER BY, las filas serán actualizadas en el orden especificado. ORDER BY está disponible desde MySQL 4.0.0.

Desde la versión 4.0.4 de MySQL, también es posible realizar operaciones UPDATE que cubran múltiples tablas:

UPDATE items,month SET items.price=month.price
      WHERE items.id=month.id;

El ejemplo muestra una fusión interna usando el operador coma, pero un UPDATE multitabla puede usar cualquier tipo de fusión (join) permitido en sentencias SELECT, como un LEFT JOIN.

Nota: no es posible usar ORDER BY o LIMIT con UPDATE multitabla.

Si se usa una sentencia UPDATE multitabla que afecte a tablas InnoDB para las que haya definiciones de claves foráneas, el optimizador MySQL procesará las tablas en un orden diferente del de la relación padre/hijo. En ese caso, la sentencia puede fallar y deshará los cambios (roll back). En su lugar, se debe actualizar una tabla y confiar el las capacidades de ON UPDATE que proporciona InnoDB que harán que las otras tablas se modifiquen del modo adecuado.

Actualmente, no se puede actualizar una tabla y seleccionar desde la misma en una subconsulta.

(4.1.1)