sábado, 27 de octubre de 2007

[Backup] Manual de MySQL de Maserox:


 Los "backup" son una serie de artículos, mensajes y posts que he ido escribiendo a lo largo de los años en las webs y blogs que he tenido y que estoy tratando de agrupar y recuperar para "la posteridad" en este blog.

Manual de MySQL de Maserox:
Este es un manual de MySQL escrito desde la experiencia personal. Como el resto de secciones de laIdea, pretende servir de "cuaderno de apuntes" para cualquiera que le encuentre utilidad, empezando por mí.

A lo largo de toda esta "hoja" he dividido las anotaciones en subsecciones, como es costumbre aquí en Maserox. Se pueden encontrar "enlaces", "consultas", "administración", "creación de tablas", etc...

Que aproveche!! :-)



Enlaces de interés sobre MySQL:

MySQL en la wikipedia
MySQL-Hispano
Manual de referencia de MySQL 5.0 en castellano
Tutorial básico de MySQL en MySQL-Hispano
Tutorial básico de MySQL - II en MySQL-Hispano
MySQL con Java en Linux en MySQL-Hispano
Tipos de datos en MySQL en MySQL-Hispano
Integridad referencial en MySQL en MySQL-Hispano
Almacenando contraseñas en MySQL en MySQL-Hispano
Zona de desarrolladores de la web de MySQL: Donde podréis encontrar todo tipo de enlaces e información relacionados con el desarrollo en MySQL. Desde enlaces a otras secciones, como por ejemplo a manuales de referencia, blogs, foros, listas de correo, etc... de MySQL, como a "vertientes" o "ramas" del tema como el trabajo de MySQL bajo PHP, bajo Java, etc... o también noticias relacioandas con la actualidad del "mundo" MySQL.
Enlace directo a la sección de documentación y manuales de MySQL (de la página oficial de MySQL).
Manual de referencia (en castellano) de MySQL Query Browser

Administración de MySQL:
Antes de nada recordar que no ha nada mejor que acudir al manual de referencia de algo para obtener información 100% útil y 100% vital bla bla bla... ya sabéis por dónde voy. Avisados quedáis...

Los primeros pasos en la administración de nuestro mysql inmediatamente después de su instalación, están relacionados con las contraseñas. Esa molesta pero necesaria tarea que es preocuparse mínimamente por la seguridad de las cosas.

Como (casi) siempre, el grado de paranoia que llevemos en estos temas irá relacionado con lo seria que vaya a ser la faena que realicemos, pero no está de más cuidar un poquito el tema de los accesos a las bases de datos que tengamos, digo yo...

En este punto, resulta de vital importancia leerse el punto 2.9 del manual de referencia de MySQL: Puesta en marcha y comprobación después de la instalación.

Si somos de los que tienen prisa, desinterés, desgana, o lo que sea, pues como mínimo mínimo (si, dos "mínimos", rollo énfasis en plan "hazme caso, joé") sería cosa de leerse el punto dedicado a Hacer seguras las cuentas iniciales de MySQL.

Ahí explican el tema de las cuentas de usuario anónimo (aunque no avisan de que hay sistemas que las eliminan automágicamente por si acaso...), y que la cuenta de administrador por defecto no tiene contraseña, por lo que es un poquillo importante hacerles caso y ponerle una rapidito...

Comandos
USE Seguido del nombre de una base de datos existente, permite cambiar la base de datos con la que se está trabajando.SHOW  Es un comando que da mucho de sí. Por ejemplo un SHOW DATABASES; muestra en una consulta las bases de datos existentes en el sistema (y visibles para el usuario que ejecuta el comando, claro).

Funciones
MySQL trae consigo una serie de funciones. Entre ellas: USER()En una consulta, devuelve el usuario que está conectado en ese momento.CURRENT_DATEEn una consulta, devuelve la fecha actual.


Consejos y recordatorios:

Cuando se crean tablas:
Ojo con los campos que permiten valores nulos y los que no
Si hay que definir restricciones con constraints y checks se definen, pero definirlas pa' na'... es tontería
Al definir claves ajenas (foreign keys) es bastante aconsejable (por no decir imprescindible) hacer uso de las sentencias ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION} y ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}. Yo, personalmente, suelo utilizarlas así:
ON UPDATE CASCADE
ON DELETE RESTRICT
que actualiza "en cascada" cuando se modifica una clave ajena en su tabla de origen, pero restringe la eliminación de un registro que esté utilizado en otra tabla.

Es como si tú le cambias el código de artículo a un producto: el código se actualiza en todos los registros, por ejemplo de facturas, donde aparezca el producto. Pero si intentas eliminar un producto que aparece en alguna factura no te lo permite.

Mi experiencia en el terreno de las BBDD no es suficiente para recomendar definir siempre una codificación de caracteres y confiar en ella para hacer uso de caracteres extendidos (tildes, eñes, etc...), pero bueno, pienso que nunca está de más definirsela, no?

Si queréis trabajar con claves ajenas y demás, tengo entendido (no se si será cierto) que es imprescindible trabajar con el Motor de almacenamiento INNODB, por su soporte para transacciones, integridad referencial, etc... Así pues un: ENGINE = INNODB al final de la definición de vuestras tablas y asunto solucionado!!


ERROR 1005: Can't create table (errno: 150)
Después de mucho goglear el asunto, mi problema era que una de las tablas la tenía por despiste como MyIsam, y la otra sí que era INNODB, pero conseguí una minilista de cosas a confirmar antes de tirar el ordenador por la ventana:
Ambas tablas son INNODB
El tipo de datos coincide
La clave ajena es la clave primaria
Escribís FOREIGN y no FOREING (típico!!)

No hay comentarios:

Publicar un comentario