Apuntes para trabajar con MySQL
Estos son algunas notas o apuntes que me sirven de referencia a la hora de trabajar con MySQL.
No pretendo que sean de uso básico, sino más bien de recordatorio cuando algo se olvida o no se recuerda exactamente su sintaxis.
Directorios habituales
- Programa: /usr/local/var/
- Datos: /usrl/local/mysql/data/ (o /var/lib/mysql/)
- mysqladmin variables; => Muestra variables y directorios.
Permiso base de datos
- mysql -h servidor -u usuario -p => Posteriormente nos pedirá el password. Conectar con el servidor (ip o nombre) a través del usuario.
- GRANT ALL ON basedatos TO usuario@localhost IDENTIFIED BY “password”; => Dar permisos a usuario con el password indicado sobre la base de datos indicada. Acceso solo desde localhost (normalmente es suficiente ya que si lo queremos para scripts PHP o similar se ejecutarán, seguramente en localhost).
- GRANT ALL ON basedatos TO usuario@% IDENTIFIED BY “password”; => Idem a anterior, pero % indica que se podrá conectar desde cualquier IP.
- GRANT ALL ON basedatos.* TO usuario@localhost IDENTIFIED BY “password”; => Dar permiso al usuario sobre las tablas de la base de datos.
- mysqladmin -u root password “nuevopassword”; => Asignar contraseña a root.
Trabajar con bases de datos
- mysql basedatos <crear-basedatos.sql; => Crear una base de datos a través de un fichero.
- mysqlshow; => Lista de bases de datos del servidor.
- mysqlshow basedatos; => Lista de tablas de la base de datos.
- mysqshow tabla; => Lista de campos (estructura) de la tabla.
- create database basedatos; => Crea una base de datos.
- show databases; => Muestra las bases de datos para el usuario actual.
Tipos de campos
- Enteros: TINYURL (1 byte, -128…127), SMALLINT (2 bytes, -32768…32767), MEDIUMINT (3 bytes), INT (4 bytes), BIGINT (8 bytes).
- Reales: FLOAT (4 bytes), DOUBLE (8 bytes).
- Cadenas: CHAR (cadena de longitud fija, si no se usa se rellena con espacios), VARCHAR (cadena de longitud variable).
- Fechas y horas: DATE (AAAA-MM-DD), TIME (hh:mm:ss), DATETIME (AAAA-MM-DD hh:mm:ss), TIMESTAMP (AAAAMMDDhhmmss).
Trabajo con tablas (SQL)
- SELECT … ORDER BY … LIMIT 10,5; => Mostrar 5 registros a partir del registro 10.
- SELECT COUNT(*) FROM tabla; => Mostrar cantidad de registros de una tabla.
- SELECT COUNT(DISTINCT campo) FROM tabla; => Mostrar cantidad de valores diferentes de un campo en una tabla.
- SELECT campo, COUNT(*) FROM tabla GROUP BY campo; => Mostrar un campo y la cantidad de veces que aparece en una tabla.
- SELECT MONTH(fecha) as Mes, MONTHNAME(fecha) as Nombre, COUNT(*) AS Cantidad FROM tabla GROUP BY Nombre ORDER BY Mes; => Dado un campo llamado fecha, mostrar el número de mes, el nombre de mes (en inglés) y la cantidad de registros para dicho mes.
- SELECT … FROM t1, t2 WHERE t1.id=t2.id; => Mostrar registros coincidentes de dos tablas.
Funciones
- TO-DAYS(”1997-04-11″) => 729490. Nos devuelve el entero asociado a la fecha.
- mysql_num_rows() => Cantidad de registros de una tabla.