Вы находитесь на странице: 1из 9

INSTITUTO TECNOLGICO SUPERIOR DE

APATZINGN


ASIGNATURA: ADMINISTRACIN DE BASES DE DATOS


TEMA: COMANDOS DE ACTIVACIN DE LOS MODOS DE OPERACIN


CARRERA: INGENIERA EN SISTEMAS COMPUTACIONALES


ALUMNO:
TAPIA LIRA JUAN DANIEL N CONTROL: 11020352



NOMBRE DEL PROFESOR: ISC. ANDRS RIVERA MONTOYA





APATZINGN, MICH. A 03 DE ABRIL DEL 2014
El modo SQL del servidor
MySQL server puede operar en distintos modos SQL, y puede aplicar estos modos
de forma distinta a diferentes clientes. Esto permite que cada aplicacin ajuste el
modo de operacin del servidor a sus propios requerimientos.
Los modos definen qu sintaxis SQL debe soportar MySQL y que clase de chequeos
de validacin de datos debe realizar. Esto hace ms fcil de usar MySQL en
distintos entornos y usar MySQL junto con otros servidores de bases de datos.
Puede especificar el modo SQL por defecto arrancando mysqld con la opcin --sql-
mode="modes". El valor puede dejarse en blanco (--sql-mode="") si desea
resetearlo.
En MySQL 5.0, tambin puede cambiar el modo SQL tras el tiempo de arranque
cambiando la varialbe sql_mode usando el comando SET [SESSION|GLOBAL]
sql_mode='modes' . Asignar la variable GLOBAL requiere el privilegio SUPER y
afecta las operaciones de todos los clientes que conecten a partir de entonces.
Asignar la variable SESSION afecta slo al cliente actual. Cualquier cliente puede
cambiar el valor de sql_mode en su sesin en cualquier momento.
modes es una lista de los diferentes modos separados por comas (',') . Puede
consultar el modo actual mediante el comando SELECT @@sql_mode. El valor por
defecto es vaco (sin modo seleccionado).

Los valores de los modos sql_mode ms importantes probablemente son los
siguientes:

ANSI
Cambia el comportamiento y la sintaxis para cumplir mejor el SQL.
STRICT_TRANS_TABLES
Si un valor no puede insertarse tal y como se da en una tabla transaccional, se
aborta el comando. Para tablas no transaccionales, aborta el comando si el valor
se encuentra en un comando que implique un slo registro o el primer registro de
un comando de varios registros. Ms detalles a continuacin en esta seccin.
(Implementado en MySQL 5.0.2)
TRADITIONAL
Hace que MySQL se comporte como un sistema de bases de datos SQL
``tradicional''. Una simple descripcin de este modo es `` da un error en lugar de
una alerta'' cuando se inserta un valor incorrecto en la
columna. Nota:INSERT/UPDATE aborta as que se detecta un error.

La siguiente lista describe todos los modos soportados:
ALLOW_INVALID_DATES
No hace un chequeo total de los datos en modo estricto. Chequea slo que los
meses se encuentran en el rango de 1 a 12 y que los das estn en el rango de
1 a 31. Esto es muy conveniente para aplicaciones Web donde obtiene un ao,
mes y da en tres campos distintos y quiere guardar exactamente lo que inserta
el usuario (sin validacin de datos). Este modo se aplica a
columnas DATE y DATETIME . No se aplica a columnas TIMESTAMP , que
siempre requieren una fecha vlida.

ANSI_QUOTES
Trata '"' como un identificador delimitador de carcter (como '`) y no como un
delimitador de cadenas de caracteres. Puede usar '`' para delimitar
identificadores en modo ANSI. Con ANSI_QUOTES activado, puede usar doble
delimitadores para delimitar una cadena de caracteres literales, ya que se
interpreta como un identificador.

ERROR_FOR_DIVISION_BY_ZERO
Produce un error en modo estricto (de otra forma una advertencia) cuando
encuentra una divisin por cero (o MOD(X, 0)) durante un INSERT o UPDATE, o
en cualquier expresin (por ejemplo, en una lista de select o clusula WHERE)
que implica datos de tablas y una divisin por cero. Si este modo no se da,
MySQL retorna NULL para una divisin por cero. Si se usa INSERT
IGNORE o UPDATE IGNORE, MySQL genera una advertencia de divisin por
cero, pero el resultado de la operacin es NULL.

HIGH_NOT_PRECEDENCE
La precedencia del operador NOT se trata tal que expresiones como NOT a
BETWEEN b AND c se parsean como NOT (a BETWEEN b AND c). Antes de
MySQL 5.0.2, la expresin se parseaba como (NOT a) BETWEEN b AND c. El
antiguo comportamiento de mayor-precedencia puede obtenerse permitiendo el
modo SQL HIGH_NOT_PRECEDENCE .

mysql> SET sql_mode = '';
mysql> SELECT NOT 1 BETWEEN -5 AND 5;
-> 0
mysql> SET sql_mode = 'broken_not';
mysql> SELECT NOT 1 BETWEEN -5 AND 5;
-> 1
IGNORE_SPACE
Permite nombres entre el nombre de funcin y el carcter '(. Esto fuerza que
todos los nombres de funcin se traten como palabras reservadas. Como
resultado, si quiere acceder a cualquier base de datos, tabla, o nombre de
columna que sea una palabra reservada, debe delimitarla. Por ejemplo, y como
hay una funcin USER () , el nombre de la tabla user en la base de datos mysql y
la columna User en esa table se reseva, as que debe delimitarla:

SELECT "User" FROM mysql."user";

NO_AUTO_CREATE_USER
Previene que GRANT cree automticamente nuevos usuarios si de otra forma se
hara, a no ser que se especifique un usuario.

NO_AUTO_VALUE_ON_ZERO
NO_AUTO_VALUE_ON_ZERO afecta el tratamiento de las
columnas AUTO_INCREMENT. Normalmente, genera el siguiente nmero de
secuencia para la columna insertando NULL o 0 en
ella. NO_AUTO_VALUE_ON_ZERO suprime este comportamiento para 0 de
forma que slo NULL genera el siguiente nmero de secuencia.
Este modo puede ser til si 0 se ha almacenado en una tabla con
columnas AUTO_INCREMENT. (Esta no es una prctica recomendada, de todos
modos.) Por ejemplo, si vuelca la tabla con mysqldump y posteriormente la
recarga, normalmente MySQL genera un nuevo nmero de secuencia cuando
encuentra los valores 0 , resultando en una tabla con distinto contenido que la
que fue volcada. Activar NO_AUTO_VALUE_ON_ZERO antes de recargar el
fichero con el volcado resuelve el problema. En MySQL 5.0, mysqldump incluye
automticamente en su salida un comando
permitiendo NO_AUTO_VALUE_ON_ZERO.



NO_BACKSLASH_ESCAPES
Desactiva el uso del carcter de barra invertida ('\') como carcter de escape en
cadenas de caracteres. Con este modo activado, la barra invertida se convierte
en un carcter ordinario como cualquier otro.

NO_DIR_IN_CREATE
Cuando crea una tabla, ignora todas las directivas INDEX DIRECTORY y DATA
DIRECTORY. Esta opcin es til en servidores de replicacin esclavos.

NO_ENGINE_SUBSTITUTION
Evita la substitucin automtica de motor de almacenamiento cuando el motor
deseado no est disponible o compilado.
NO_FIELD_OPTIONS
No muestra opciones especficas para columnas de MySQL en la salida
de SHOW CREATE TABLE. Este modo se usa con mysqldump en modo de
portabilidad.

NO_KEY_OPTIONS
No muestra opciones especficas para ndices de MySQL en la salida de SHOW
CREATE TABLE. Este modo se usa con mysqldump en modo de portabilidad.

NO_TABLE_OPTIONS
No muestra opciones especficas para tablas (tales como ENGINE) en la salida
de SHOW CREATE TABLE. Este modo se usa con mysqldump en modo de
portabilidad.

NO_UNSIGNED_SUBTRACTION
En operaciones de resta, no marca el resultado como UNSIGNED si uno de los
operandos no tiene signo. Note que esto hace que UNSIGNED BIGINT no sea
100% usable en todos los contextos.

NO_ZERO_DATE
En modo estricto, no permite '0000-00-00' como fecha vlida. Puede insertar
fechas 0 con la opcin IGNORE. Cuando no est en modo estricto, la fecha se
acepta pero se genera una advertencia.

NO_ZERO_IN_DATE
En modo estricto, no acepta fechas la parte del mes o da es 0. Se usa con la
opcin IGNORE, inserta una fecha'0000-00-00' para cualquiera de estas fechas.
Cuando no est en modo estricto, la fecha se acepta pero se genera una
advertencia.

ONLY_FULL_GROUP_BY
No permite consultas que en la parte del GROUP BY se refieran a una columna
que no se seleccione.

PIPES_AS_CONCAT
Trata || como un concatenador de columnas de caracteres (lo mismo
que CONCAT ()) en lugar de como sinnimo de OR.

REAL_AS_FLOAT
Trata REAL como un sinnimo de FLOAT en lugar de sinnimo de DOUBLE.

STRICT_ALL_TABLES
Activa el modo estricto para todos los motores de almacenamiento. Rechaza los
datos invlidos. Detalles adicionales a continuacin.

STRICT_TRANS_TABLES
Habilita el modo estricto para motores de almacenamiento transaccionales, y
cuando sea posible tambin para los no transaccionales. Detalles adicionales a
continuacin.
El modo estricto controla cmo MySQL trata los valores de entrada invlidos o no
presentes. Un valor puede ser invlido por distintas razones. Por ejemplo, puede
tener un tipo de datos incorrecto para la columna, o puede estar fuera de rango. Un
valor no est presente cuando el registro a insertarse no tiene un valor para una
columna que no tiene la clusula DEFAULT explcita en su definicin.
Para tablas transaccionales, se genera un error para valores invlidos o no
presentes en un comando con los
modos STRICT_ALL_TABLES o STRICT_TRANS_TABLES habilitados. El
comando se aborta y deshace.

PARA REALIZAR CONSTRUIR LA PRACTICA DE COMMIT Y ROLLBACK
REALIZAREMOS LO SIGUIENTE:

1. Abriremos el WampServer que tenemos instalado en la mquina.







2. Entraremos a la consola de MySQL de la siguiente manera:








3. Usaremos una base de datos ya creada para la realizacin de la practica:


4. Primeramente comprobaremos si algn modo est activado, con el comando
select @@sql_mode; :

Como observamos no est ningn modo activado, por lo regular MySQL no
tienen ninguno activado.

Si requerimos activar un modo, lo podemos realizar con el comando set session
sql_mode=<nombre-del-modo>; para determinar cul es el modo que ocupamos,
entrar a la siguiente pgina: https://dev.mysql.com/doc/refman/5.0/es/server-
sql-mode.html en ella se encuentran todos los modos soportados por MySQL.

5. A modo de prctica activaremos un modo llamado ansi el cual tiene como
funcionalidad Cambiar el comportamiento y la sintaxis para cumplir mejor el
SQL.


6. Verificamos si se activ el modo:


Como se puede observar ya est activado el modo ansi que anteriormente
ejecutamos.
7. Desactivaremos el modo ansi con el siguiente comando, set session
sql_mode='';

Algo que mencionar que es muy importante, que solo uno modo puedes estar activo,
no pueden haber ms de uno.
En la primera parte del documento est redactado cada uno de los modos que
soporta MySQL y su funcionalidad o descripcin, el mtodo de activacin y
desactivacin es el mismo, cabe mencionar que si se tiene un modo activado, y se
activa otro modo sin ser desactivado el anterior, no pasa nada activa el que se est
ejecutando.

Conclusin
Es muy agradable poder utilizar los modos de MySQL y tienen una utilidad bastante
buena en cuanto a rapidez y eficacia. Cada modo tiene su funcionalidad o
descripcin, con ello en s, cada modo es importante para el funcionamiento que
requeramos tener, en si para mi es bastante eficaz utilizar los modos, ya sea para
realizar restricciones o mandar mensajes de error.