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.
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
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 matemáticas MySQL
Funciones con fechas en MySQL
Funciones de Grupo
Originally posted 2011-01-05 18:15:25.