Manual reducido de MySQL

Funciones de un administrador

Las funciones de un administrador de bases de datos son:

  • Gestión del software: instalación del software, actualización del software, conexión de programas (por ej. ofimática) con el servidor de bases de datos.
  • Gestión de las bases de datos: creación de bases de datos, importación y exportación de datos, copias de seguridad y recuperación, optimización de las tablas, análisis de la integridad y reparación.
  • Gestión de los usuarios: creación de usuarios y bajas, asignación de permisos.
  • Gestión de los recursos: monitorización del rendimiento y el tamaño, gestión del espacio y asignación de quotas, configuración óptima del servidor.
  • Gestión de la seguridad: monitorización de los accesos, configuración segura del servidor.

Esquema interno Mysql

Ver la actividad del servidor: mysql> SHOW STATUS;

Ver la configuración del servidor: mysql> SHOW VARIABLES;

Instalar una base de datos de pruebas

Para las diferentes pruebas que haremos necesitaremos una base de datos. Podemos descargar una sencilla base de datos con tres tablas en:

http://downloads.mysql.com/docs/world.sql.gz

Para trabajar con la base de datos ‘world’ haremos lo siguiente:

1) Descomprimirla en nuestra carpeta personal. Obtendremos un fichero ‘world.sql’ con sentencias SQL que al ejecutarlo en el servidor creará las tablas de la base de datos.

2) Iniciar el cliente de MySQL: mysql -p -u root

3) Crear la base de datos y ponerla en uso

CREATE DATABASE world;

USE world;

4) Comprobar todo: SHOW TABLES;

Motores de almacenamiento

Motores de almacenamiento MySql

MySQL dispone de una docena de motores de almacenamiento propios, más los motores externos desarrollados por terceras partes que se pueden incorporar al servidor. Algunos de los más conocidos son: MyISAM, InnoDB, HEAP, NDB.

Nosotros usaremos MyISAM e InnoDB cuando trabajemos con tablas relacionadas.:

CREATE TABLE nombre_tabla (definición) ENGINE = nombre_motor;.

Si la tabla ya estuviese creada, podríamos modificarlar usando:

ALTER TABLE nombre_tabla ENGINE = nombre_motor;

Por ejemplo:

CREATE TABLE City (…) ENGINE=InnoDB;

para luego modificarlo usando:

ALTER TABLE City ENGINE=MyISAM;

Características del motor MyISAM:

  • No transaccional.
  • Bloqueos a nivel de tabla.
  • Muy rápido en lectura y escritura (excepto escrituras simultaneas en la misma tabla).
  • Bajo requerimiento de espacio en disco y memoria.
  • Es el motor por defecto de MySQL.
  • Es una buena elección cuando necesitamos velocidad, y tenemos pocas modificaciones simultaneas de la tabla.

Características del motor InnoDB:

  • Transaccional.
  • Bloqueos a nivel de registro.
  • Restricciones en claves foráneas.
  • Fácil recuperación de datos en caso de error.
  • Alta concurrencia más segura en escritura.
  • Deshacer transacciones a medias (“rollback”).

Consultas, borrados, inserciones y modificaciones

Primero unos conceptos:

  • FROM: Especifica la tabla de la cual se seleccionan los registros * clausula WHERE: Detalla las condiciones que han de reunir los registros resultantes
  • clausula GROUP BY: Separa los registros seleccionados en grupos específicos
  • clausula HAVING: Expresa la condición que debe cumplir cada grupo
  • clausula ORDER BY: Ordena los registros seleccionados de acuerdo a una ordenación específica

Listados en MySql

  • SELECT columnas FROM tabla
  • [WHERE condición]
  • [GROUP BY columna]
  • [ORDER BY columna [ ASC | DESC ]]
  • Se puede usar el comodín * para seleccionar todas las columnas, esto se llama consulta incondicional
  • Si por el contrario limitamos las columnas que van a salir, diremos que estamos haciendo una proyección
  • Alias: SELECT Population AS poblacion FROM City
  • Distintas: SELECT distinct Population FROM City
  • Agrupaciones: SELECT name FROM City group by population;

Vamos a crear una tabla especial para probar la clausula GROUP BY en conjunción con HAVING

mysql> CREATE TABLE muestras ( ciudad VARCHAR(40),fecha DATE, temperatura TINYINT);

mysql> INSERT INTO muestras (ciudad,fecha,temperatura) VALUES (‘Madrid’, ‘2005-03-17′, 23), (‘París’, ‘2005-03-17′, 16), (‘Berlín’, ‘2005-03-17′, 15), (‘Madrid’, ‘2005-03-18′, 25), (‘Madrid’, ‘2005-03-19′, 24), (‘Berlín’, ‘2005-03-19′, 18);

SELECT ciudad, MAX(temperatura) FROM muestras GROUP BY ciudad HAVING MAX (temperatura)>16;

Ejemplos:

SELECT * FROM City;

SELECT Name, Population FROM City

WHERE CountryCode=’ESP’ AND Population > 500000

SELECT CountryCode, SUM(Population)

FROM City GROUP BY CountryCode;

SELECT City.Name, Country.Name FROM City, Country

WHERE City.CountryCode=Country.Code

ORDER BY Country.Name;

Borrados en Mysql

  • DELETE FROM tabla
  • WHERE condición;

Ejemplos:

DELETE FROM City WHERE Name=’Marbella';

DELETE FROM City WHERE CountryCode=’ESP’ AND Population>500000; Insercion en Mysql

Insertar en MySQL

  • INSERT INTO tabla (columna1, columna2, …)
  • VALUES (valor1, valor2, …);

Ejemplos

INSERT INTO City (Name, CountryCode, District, Population)

VALUES (‘JoanBrossa’,’ESP’, ‘Katalonia’, 3500000);

INSERT INTO City SET Name=’JoanBrossa’, CountryCode=’ESP’, District=’Katalonia’, Population=3500000;

Actualizaciones

  • UPDATE tabla SET
  • columna1=valor1,
  • columna2=valor2,
  • [WHERE condición];

Ejemplos:

UPDATE City SET Population=5000000 WHERE Name=’JoanBrossa';

UPDATE City SET Population=5000000 WHERE Population>1000000;

Crear una Base de datos, una tabla y borrarlo todo

CREATE DATABASE escuela;

SHOW DATABASES;

USE escuela;

CREATE TABLE alumnos (

DNI int(8) NOT NULL,

Nombre char(35) default ”,

Nota int(2),

PRIMARY KEY (DNI));

DESCRIBE alumnos;

ALTER TABLE alumnos MODIFY Nota float(3,1);

DESCRIBE alumnos;

SHOW TABLES;

DROP TABLE alumnos;

DROP DATABASE escuela;

ADMINISTRACIÓN DE USUARIOS

Ver los usuarios:

SELECT User,Host,Password FROM mysql.user;

Crear un usuario:

CREATE USER usuario [IDENTIFIED BY ‘contraseña’]

Ejemplos:

CREATE USER Pepito IDENTIFIED BY ‘Griyo';

CREATE USER Anonimo@localhost;

CREATE USER Alumno@’192.168.0.%’ IDENTIFIED BY ‘Alumno';

Borrar un usuario:

DROP USER usuario

Ejemplos:

DROP USER Anonimo;

Cambiar el nombre de un usuario:

RENAME USER viejo_usuario TO nuevo_usuario

Ejemplos:

RENAME USER Pepito TO Pepito@127.0.0.1;

Cambiar la contraseña de un usuario:

SET PASSWORD FOR usuario = PASSWORD(‘contraseña’)

Ejemplos:

SET PASSWORD FOR Pepito = PASSWORD(‘Grillo’)

Ver los privilegios de un usuario:

SHOW GRANTS FOR usuario

Ejemplos:

SHOW GRANTS FOR root;

SHOW GRANTS FOR Pepito;

Otorgar privilegios a un usuario:

GRANT privilegios ON base_datos.tabla(columnas) TO usuario;

Ejemplos:

GRANT UPDATE, INSERT, SELECT ON world.City TO pepito@localhost;

GRANT UPDATE, INSERT, SELECT ON world.City TO fulanito@localhost IDENTIFIED BY ‘nuevapasswd’, tu@equipo.remoto.com;

GRANT UPDATE, INSERT, SELECT ON world.Country TO pepito@192.168.10.111, fulanito@’192.168.10.%’, menganito;

Eliminar privilegios de un usuario:

REVOKE privilegios ON base_datos.tabla(columnas) FROM usuario;

REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] …

Ejemplos:

REVOKE ALL ON *.* FROM pepito@localhost;

Todos los privilegios se guardan en las tablas ‘user’, ‘db’, ‘tables-priv’, ‘columns_priv’ y ‘host’ de la base de datos ‘mysql’.

Operadores

Como en todo lenguaje de programación, en mysql disponemos de distintos tipos de operadores para manipular los resultados de las consultas.

Comparadores, operadores y variables

Probar los siguientes ejemplos:

  • Select 1>1,1=1,1<1,1<>1;
  • Select ‘hola’=’adios’,’hola’=’hola’,’hola'<‘hola2′,’hola'<>’adios';
  • Select 1&1,1&0,1|0,1|1;
  • Select 1 and 1,1 and 0,1 or 0,1 or 1;
  • Select 1+1,1-0,1*0,1/1;
  • Select 1 and 1 + 1 and 0 * 1 or 0 + 1 or 1;
  • Set @hola=’hola';
  • Select @hola=’adios’,@hola=’hola’,@hola<‘hola2′,@hola<>’adios';

Operadores de Cadenas

  • Like, se usa para comparar cadenas Select ‘casa’ like ‘casa’
  • Not Like. distinto
  • Uso de comodines, Select ‘casa’ like ‘casa%’, Select ‘casa’ like ‘%casa?’

Funciones

Funciones de cadena en Mysql

Funciones de cadena en Mysql

Comprar cadenas Mysql

Funciones matemáticas MySQL

Funciones matemáticas MySQL

Funciones con fechas en MySQL

Funciones de fecha en Mysql

Funciones fecha2 en MySQL

Funciones de Grupo

Deja un comentario

Disculpa, debes iniciar sesión para escribir un comentario.