information schema - columns - ¿Qué representa la base de datos de esquema de información?
information_schema.columns sql server (1)
Puede pensar en el esquema de información como una "base de datos maestra" que contiene detalles sobre todas las otras bases de datos en el servidor, como los nombres y tipos de tablas, columnas y usuarios.
¿Qué es el esquema de información?
De la documentación de referencia:
INFORMATION_SCHEMA proporciona acceso a los metadatos de la base de datos.
Los metadatos son datos sobre los datos, como el nombre de una base de datos o una tabla, el tipo de datos de una columna o los privilegios de acceso. Otros términos que a veces se usan para esta información son diccionario de datos y catálogo del sistema.
INFORMATION_SCHEMA es la base de datos de información, el lugar que almacena información sobre todas las otras bases de datos que mantiene el servidor MySQL. Dentro de INFORMATION_SCHEMA hay varias tablas de solo lectura. En realidad son vistas, no tablas base, por lo que no hay archivos asociados con ellas.
¿Qué se almacena en el esquema de información?
Puede ver los tipos de cosas almacenadas en el esquema de información y la forma en que están organizados, viendo este diagrama (para MySQL 5.0) o este diagrama (para MySQL 5.1).
¿Qué pasa si modifico el esquema de información?
En realidad, information_schema es una colección de vistas de solo lectura. Como tal, debería ser imposible modificarlo y hacer cualquier daño. Sin embargo, las preguntas frecuentes de MySQL sobre este tema tienen esto que decir:
23.7.3: ¿Puedo agregar o modificar las tablas que se encuentran en la base de datos INFORMATION_SCHEMA?
No. Dado que las aplicaciones pueden depender de una cierta estructura estándar, esto no debe modificarse. Por este motivo, no podemos admitir errores u otros problemas que resulten de la modificación de tablas o datos de INFORMATION_SCHEMA.
Esto implica que si se encuentra en condiciones de modificar el esquema de información (lo que debería ser imposible y está en MySQL, pero otras implementaciones de SQL de proveedores podrían permitirlo), por lo menos debería elegir no hacerlo. Si pudiera dañar / modificar el esquema de información, estaría dañando la estructura real (por ejemplo, nombres de tablas, tipos de columnas) de sus otras bases de datos.
¿Cada usuario tiene su propia copia del esquema de información?
Cada usuario puede ver el esquema de información correspondiente a las tablas y bases de datos a las que tiene acceso. Algunos usuarios con derechos muy limitados seguirán viendo esquema de información, pero solo verán valores NULL para cualquier consulta de esquema de información. Sin embargo, es importante recordar que el esquema de información no es una base de datos real, sino simplemente una forma conveniente que proporciona SQL para que pueda seleccionar información sobre su (s) base (s) de datos y tablas.
De la documentación de referencia:
Cada usuario de MySQL tiene el derecho de acceder a estas tablas, pero solo puede ver las filas en las tablas que corresponden a los objetos para los cuales el usuario tiene los privilegios de acceso adecuados. En algunos casos (por ejemplo, la columna ROUTINE_DEFINITION en la tabla INFORMATION_SCHEMA.ROUTINES), los usuarios que no tienen privilegios suficientes verán NULL.
¿Dónde puedo encontrar más información?
- El artículo del Manual de referencia de MySQL sobre information_schema ( http://dev.mysql.com/doc/refman/5.0/en/information-schema.html )
- El artículo de preguntas frecuentes de MySQL sobre information_schema ( http://dev.mysql.com/doc/refman/5.0/en/faqs-information-schema.html )
Tengo una base de datos en mysql.
Pero cuando inicio sesión en phpMyAdmin, muestra otra base de datos llamada information_schema.
¿Es esa base de datos siempre presente con una base de datos?
Quiero decir, ¿hay una copia del esquema de información para cada base de datos presente en mysql o hay una base de datos llamada esquema de información por servidor mysql?
Si modifico esta base de datos de esquema de información, ¿cómo afectará eso a mi base de datos actual?