SETvariable_assignment[,variable_assignment] ...variable_assignment:user_var_name=expr| [GLOBAL | SESSION]system_var_name=expr| @@[global. | session.]system_var_name=expr
        SET inicializa distintos tipos de variables
        que afectan la operación del servidor o de su cliente. Puede
        usarse para asignar valores a las variables de usuario o de
        sistema.
      
        El comando SET PASSWORD para asignar
        contraseñas de cuenta se describen en
        Sección 13.5.1.5, “Sintaxis de SET PASSWORD”.
      
La mayoría del sistema puede cambiarse en tiempo de ejecución. Las variables de sistema que pueden describirse dinámicamente se describen en Sección 5.3.3.1, “Variables de sistema dinámicas”.
        Nota: Las versiones antiguas de MySQL
        empleaban SET OPTION para este comando, pero
        su uso está obsoleto en favor de SET.
      
El siguiente ejemplo muestra las distintas sintaxis que puede usar para cambiar las variables.
        Una variable de usuario se escribe como
        @ y puede
        cambiarse como sigue:
      var_name
SET @var_name=expr;
Más información sobre variables de usuario se da en Sección 9.3, “Variables de usuario”.
        Se puede referir a las variables de sistema en comandos
        SET como var_name.
        El nombre puede ir precedido opcionalmente por
        GLOBAL o @@global. para
        indicar explícitamente que la variable es global, o por
        SESSION, @@session., o
        @@ para indicar que es una variable de
        sesión. LOCAL y @@local.
        son sinónimos para SESSION y
        @@session.. Si no hay modificador presente,
        SET asigna un valor a la variable de sesión.
      
        La sintaxis
        @@ para
        variables de sistema se soporta para hacer la sintaxis de MySQL
        compatible con otros sistemas de base de datos.
      var_name
        Si cambia varias variables de sistema en el mismo comando, la
        última opción GLOBAL o
        SESSION usada se usa para variables que no
        tienen modo especificado.
      
SET sort_buffer_size=10000; SET @@local.sort_buffer_size=10000; SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000;
        Si cambia una variable de sistema usando
        SESSION (por defecto), el valor queda en
        efecto hasta que la sesión actual finaliza o hasta que cambia
        la variable con un valor distinto. Si cambia la variable de
        sistema usando GLOBAL, que requiere el
        permiso SUPER , el valor se recuerda y se usa
        para nuevas conexiones hasta que el servidor se reinicia. Si
        quiere hacer un cambio de variable permanente, debe ponerlo en
        un fichero de opciones. Consulte Sección 4.3.2, “Usar ficheros de opciones”.
      
        Para evitar uso incorrecto, MySQL produce un error si usa
        SET GLOBAL con una variable que sólo puede
        ser usada con SET SESSION o si no especifica
        GLOBAL (o @@) cuando
        cambie una variable global.
      
        Si quiere cambiar una variable SESSION al
        valor GLOBAL o un valor
        GLOBAL al valor de compilación de MySQL por
        defecto, puede hacerlo con DEFAULT. Por
        ejemplo, los siguientes dos comandos son idénticos en cambiar
        los valores de sesión o max_join_size al
        valor global:
      
SET max_join_size=DEFAULT; SET @@session.max_join_size=@@global.max_join_size;
        Puede obtener una lista de la mayoría de variables de sistema
        con SHOW VARIABLES. (Consulte
        Sección 13.5.4.21, “Sintaxis de SHOW VARIABLES”.) Para obtener un nombre de
        variable específico, use una cláusula LIKE
        commo se muestra:
      
SHOW VARIABLES LIKE 'max_join_size'; SHOW GLOBAL VARIABLES LIKE 'max_join_size';
        Para obtener una lista de variables cuyos nombres coinciden con
        un patrón, use el comodín '%':
      
SHOW VARIABLES LIKE 'have%'; SHOW GLOBAL VARIABLES LIKE 'have%';
El comodín puede usarse en cualquier posición dentro del patrón para coincidir.
        Puede obtener el valor de un valor específico usando la
        sintaxis @@[global.|local.]var_name con
        SELECT:
      
SELECT @@max_join_size, @@global.max_join_size;
        Cuando recibe una variable con SELECT
        @@var_name (esto es,no especifica
        global., session., o
        local.), MySQL retorna el valor
        SESSION si existe y el valor
        GLOBAL en otro caso.
      
        La siguiente lista describe variables que tienen sintaxis no
        estándar o que no se describe en la lista de variables de
        sistema que se encuentra en
        Sección 5.3.3, “Variables de sistema del servidor”. Aunque estas
        variables no se muestran con SHOW VARIABLES,
        puede obtener sus valores con SELECT (con la
        excepción de CHARACTER SET y SET
        NAMES). Por ejemplo:
      
mysql> SELECT @@AUTOCOMMIT; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+
            AUTOCOMMIT = {0 | 1}
          
            Pone el modo autocommit . Con valor 1,
            todos los cambios de una tabla toman efecto inmediatamente.
            Si se pone a 0, debe usar
            COMMIT para aceptar una transacción o
            ROLLBACK para cancelarla. Si cambia el
            modo AUTOCOMMIT de 0 a
            1, MySQL realiza un
            COMMIT automático de cualquier
            transacción abierta . Otra forma de comenzar una
            transacción es usar un comando START
            TRANSACTION o BEGIN. Consulte
            Sección 13.4.1, “Sintaxis de START TRANSACTION,
        COMMIT y ROLLBACK”.
          
            Si se pone a 1, todas las tablas
            temporales se almacenan en disco en lugar que en memoria.
            Esto es un poco lento, pero el error The table
             no
            ocurre para operaciones tbl_name is fullSELECT que
            requieran una tabla temporal grande. El valor por defecto
            para una nueva conexión es 0 (use tablas
            temporales en memoria). Normalmente, nunca debería
            necesitar usar esta variable, ya que MySQL 5.0 convierte
            automáticamente tablas en memoria a tablas en disco como se
            requiere. (Nota: Esta variable se
            llamaba préviamente SQL_BIG_TABLES.)
          
            CHARACTER SET
            {
          charset_name |
            DEFAULT}
            Esto mapea todas las cadenas desde y hacia el cliente con el
            mapeo dado. Puede añadir nuevos mapeos editando
            sql/convert.cc en la distribución
            fuente MySQL. En MySQL 5.0, SET CHARACTER
            SET cambia tres variables de sistema
            character_set_client y
            character_set_results se actualizan con
            el conjunto de caracteres dado, y
            character_set_connection al valor de
            character_set_database.
          
            El mapeo por defecto puede restaurarse usando el valor
            DEFAULT.
          
            Tenga en cuenta que la sintaxis para SET CHARACTER
            SET difiere de la de la mayoría de otras
            opciones.
          
            FOREIGN_KEY_CHECKS = {0 | 1}
          
            Con valor de 1 (por defecto), las claves
            foráneas para tablas InnoDB se chequean.
            Si se pone a 0, se ignoran. Deshabilitar
            el chequeo de clave foránea puede ser útil para recargar
            tablas InnoDB en un orden distinto que el
            requerido por sus relaciones padre/hijo, Consulte
            Sección 15.6.4, “Restricciones (constraints) FOREIGN KEY”.
          
            IDENTITY =
            
          value
            La variable es un sinónimo para la variable
            LAST_INSERT_ID . Existe por
            compatibilidad con otras bases de datos. Puede leer su valor
            con SELECT @@IDENTITY, y cambiarlo
            mediante SET IDENTITY.
          
            INSERT_ID =
            
          value
            Cambia el valor a ser usado por los comandos
            INSERT o ALTER TABLE
            al insertar un valor AUTO_INCREMENT .
            Esto se usa principalmente con el lob binario.
          
            LAST_INSERT_ID =
            
          value
            Cambia el valor a ser retornado de
            LAST_INSERT_ID(). Esto se almacena en el
            log binario cuando usa LAST_INSERT_ID()
            en un comando que actualice una tabla. Cambiar esta variable
            no actualiza el valor retornado por la función de la
            mysql_insert_id() API de C.
          
            NAMES {'
          charset_name' |
            DEFAULT}
            SET NAMES cambia tres variables de
            sesión de sistema character_set_client,
            character_set_connection, y
            character_set_results al conjunto de
            caracteres dado. Cambiar
            character_set_connection a
            charset_name también cambia
            collation_connection a la colación por
            defecto para charset_name.
          
            El mapeo por defecto puede restaurarse usando un valor de
            DEFAULT.
          
            Tenga en cuenta que la sintaxis para SET
            NAMES difiere de la usada para la mayoría de
            otras opciones.
          
            SQL_NOTES = {0 | 1}
          
            Con el valor 1 (por defecto), advertencias del nivel
            Note se registran. Con valor 0, las
            advertencias Note se suprimen.
            mysqldump incluye la salida para cambiar
            esta variable a 0 así que recargar el fichero volcado no
            produce advertencias para eventos que no afectan a la
            integridad de la operación de recarga.
            SQL_NOTES se añadió en MySQL 5.0.3.
          
            SQL_AUTO_IS_NULL = {0 | 1}
          
            Con valor 1 (por defecto), puede
            encontrar el último registro insertado para una tabla que
            contiene una columna AUTO_INCREMENT
            usando el siguiente constructor:
          
WHERE auto_increment_column IS NULL
Este comportamiento lo usan algunos programas ODBC, como Access.
            SQL_BIG_SELECTS = {0 | 1}
          
            Con valor 0, MySQL aborta los comandos
            SELECT que probablemente tardarán mucho
            tiempo (esto es, comandos para los que el optimizador estima
            que el número de registros examinados excede el valor de
            max_join_size). Esto es útil cuando un
            comando WHERE no aconsejable se ejecuta.
            El valor por defecto para una nueva conexión es
            1, que permite todos los comandos
            SELECT .
          
            Si cambia la variable de sistema
            max_join_size a un valor distinto a
            DEFAULT,
            SQL_BIG_SELECTS se pone a
            0.
          
            SQL_BUFFER_RESULT = {0 | 1}
          
            SQL_BUFFER_RESULT fuerza los resultados
            de los comandos SELECT a poner en tablas
            temporales. Esto ayuda a MySQL a liberar los bloqueos de
            tabla rápidamente y pueden ser beneficioso en caso que
            tarde un largo tiempo para enviar resultados al cliente.
          
            SQL_LOG_BIN = {0 | 1}
          
            Con valor 0, no se realiza logueo en el
            log binario para el cliente. El cliente debe tener el
            permiso SUPER para cambiar esta opción.
          
            SQL_LOG_OFF = {0 | 1}
          
            Con valor 1, no se realiza logueo en el
            log de consultas generales para el cliente. El cliente debe
            tener el permiso SUPER para cambiar esta
            opción.
          
            SQL_LOG_UPDATE = {0 | 1}
          
            Esta variable está obsoleta, y es mapea a
            SQL_LOG_BIN.
          
            SQL_QUOTE_SHOW_CREATE = {0 | 1}
          
            Con valor 1, SHOW CREATE
            TABLE entrecomilla los nombres de tabla y
            columnas. Si se pone a 0, se desactiva el
            entrecomillado. Esta opción está activada por defecto,
            así que la replicación funciona para tablas con nombres de
            tabla y columna que no lo requieren. Consulte
            Sección 13.5.4.5, “Sintaxis de SHOW CREATE TABLE”.
          
            SQL_SAFE_UPDATES = {0 | 1}
          
            Con valor 1, MySQL aborta comandos
            UPDATE o DELETE que no
            usan una clave en la cláusula WHERE o
            LIMIT . Esto hace posible cazar los
            comandos UPDATE o
            DELETE donde las claves no se usan
            apropiadamente y que probablemente cambiarían o borrarían
            un gran número de registros.
          
            SQL_SELECT_LIMIT =
            {
          value | DEFAULT}
            El máximo número de registros a retornar desde comandos
            SELECT . El valor por defecto para una
            nueva conexión es “unlimited.” Si cambia este
            límite, el valor por defecto puede restaurarse usando un
            valor SQL_SELECT_LIMIT de
            DEFAULT.
          
            Si un SELECT tiene una cláusula
            LIMIT el LIMIT tiene
            preferencia sobre el valor de
            SQL_SELECT_LIMIT.
          
            SQL_SELECT_LIMIT no se aplica a comandos
            SELECT ejecutados en rutinas almacenadas.
            Tampoco se aplica a comandos SELECT que
            no producen un conjunto de resultados a ser retornado al
            cliente. Esto incluye comandos SELECT en
            subconsultas, CREATE TABLE ... SELECT, y
            INSERT INTO ... SELECT.
          
            SQL_WARNINGS = {0 | 1}
          
            Esta variable controla si comandos INSERT
            de un registro producen una cadena de información si hay
            una advertencia. Por defecto es 0. Cambie el valor a 1 para
            producir una cadena de información.
          
            TIMESTAMP =
            {
          timestamp_value |
            DEFAULT}
            Cambia la hora del cliente. Se usar para obtener la fecha y
            hora original si usa el log binario para restaurar
            registros. timestamp_value debe ser un
            Unix epoch timestamp, no un timestamp de MySQL.
          
            UNIQUE_CHECKS = {0 | 1}
          
            Con valor 1 (por defecto), se realizan
            chequeos en tablas InnoDB para índices
            secundarios. Con valor 0, no se hacen
            chequeos de valores únicos para entradas de índices
            insertados en el búffer de inserción de InnoDB. Si sabe
            con certeza que sus datos no contienen violaciones de
            valores únicos, puede ponerlo a 0 para acelerar
            importaciones de tablas grandes a InnoDB.
          
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

