Professional Documents
Culture Documents
Euclides Figueroa
efigueroah@gmail.com.ve
Dia I
Instalacin y configuracin de MySQL
Instalacin de MySQL en Linux
Opciones de configuracin
Engines de Bases de Datos
InnoDB
MyISAM
Otros
Ejecucin de MySQL
Inicio de MySQL
Detener a MySQL
Uso de mysqladmin
Uso del cliente mysql
Clientes Web
phpMyAdmin
Dia II
Diseo de bases de datos
Usando el Workbench
Tipos de datos de MySQL
Valores NULL y DEFAULT
ndices
Creacin de bases de datos y tablas
Insercin de datos
Seleccin de datos
Uso de condicionales
Uso de LIKE y NOT LIKE
Uniones
Dia III
Control de Usuarios
Seguridad de Equipos
Seguridad Bases de Datos
Seguridad de Usuarios
Dia III
Vistas (Views)
Dia IV
Procedimientos almacenados y funciones
Cursores
Constructores de control de flujo
Dia IV
Disparadores (triggers)
Sintaxis de CREATE TRIGGER
Sintaxis de DROP TRIGGER
Utilizacin de disparadores
Dia V
Optimizacin de rango
Index Merge Optimization
El MySQL-Administrator
Control del Servidor
ndices de Gestin
Administracin de Usuarios
Respaldos y Recuperacin de datos
Manejo de Logs
C y C++
Perl
Python
Java
PHP
Delphi
C#
Visual Basic
ASP C#
Navicat
EMS MySQL Manager
Squirrel SQL
ISQL Viewer
Database Manager Profesional
SQLyog
Aqua Data Studio
MyDB Studio
MySQL Front
SQLion
MySQL Maestro
MySQL Administrator
MySQL Query Browser
A travs de MySQL AB
# mysql
# mysql -u root
# mysql
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
La siguiente tabla muestra cada uno de los indicadores que podr ver
y sintetiza lo que dicen acerca del estado en que se encuentra mysql:
La siguiente tabla muestra cada uno de los indicadores que podr ver
y sintetiza lo que dicen acerca del estado en que se encuentra mysql:
SHOW TABLES
SHOW CREATE TABLE tbl_name
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
//Ejemplo
//Ejemplo
//Ejemplo
//Ejemplo
//Ejemplo
//Ejemplo
create nombre_base_de_datos
Crea una nueva base de datos llamada nombre_base_de_datos.
debug
Le dice al servidor que escriba informacin de depuracin en el
log de error.
drop nombre_base_de_datos
Borra la base de datos llamada nombre_base_de_datos y todas
sus tablas.
extended-status
Muestra las variables de estado del servidor y sus valores.
flush-status
Limpia las variables de estado.
flush-tables
Muestra todas las tablas.
flush-threads
Muestra la cach de threads.
kill id,id,...
Mata los threads (procesos activos) del servidor.
flush-hosts
Muestra toda la informacin en la cach del equipo.
flush-logs
Muestra todos los logs.
flush-privileges
Recarga las tablas de permisos (lo mismo que reload).
flush-hosts
Muestra toda la informacin en la cach del equipo.
flush-logs
Muestra todos los logs.
flush-privileges
Recarga las tablas de permisos (lo mismo que reload).
processlist
Muestra una lista de los threads activos del servidor. Esto es
como la salida del comando SHOW PROCESSLIST. Si se da la
opcin --verbose, la salida es como la de SHOW FULL
PROCESSLIST.
reload
Recarga las tablas de permisos.
refresh
Muestra todas las tablas y cierra y abre los Archivos de logs.
processlist
Muestra una lista de los threads activos del servidor. Esto es
como la salida del comando SHOW PROCESSLIST. Si se da la
opcin --verbose, la salida es como la de SHOW FULL
PROCESSLIST.
reload
Recarga las tablas de permisos.
refresh
Muestra todas las tablas y cierra y abre los Archivos de logs.
ping
Comprueba si el servidor est vivo. El estado retornado por
mysqladmin es 0 si el servidor est en ejecucin, 1 si no lo
est.
A partir de MySQL 5.0, el estado es 0 incluso en caso de un
error tal como Access denied, ya que esto significa que el
servidor est en ejecucin pero no ha admitido la conexin,
lo que no es lo mismo que el servidor no est en ejecucin.
shutdown
Detiene el servidor.
status
Muestra un mensaje de estado corto del servidor.
variables
Muestra las variables de sistema del servidor y sus valores.
version
Muestra informacin de la versin del servidor.
# mysql -p
# mysqlshow -p
# mysqladmin -p
Para buscar los autores que tienen al menos una "h" o una "k" o una
"w" tipeamos:
Para buscar los autores que no tienen ni "h" o una "k" o una "w"
tipeamos:
Para buscar los autores que tienen por lo menos una de las letras de
la "a" hasta la "d", es decir, "a,b,c,d", usamos:
6- Busque los apellidos que tienen por lo menos una de las letras de
la "v" hasta la "z" (v,w,x,y,z):
select * from agenda
where apellido regexp ;
Una librera que tiene almacenados los datos de sus libros en una
tabla llamada "libros" quiere donar a una institucin 5 libros
tomados al azar.
Problema:
Creamos la tabla:
create table alumnos(
documento char(8) not null,
nombre varchar(30),
domicilio varchar(30),
ciudad varchar(20),
estado varchar(20),
primary key(documento)
);
Problema:
Veamos el ejemplo:
select titulo,
if (precio>50,'caro','economico')
from libros;
select autor,
if (count(*)>1,'Ms de 1','1')
from libros
group by autor;
select editorial,
case count(*)
when 1 then 1
else 'mas de 1' end as 'cantidad'
from libros group by editorial;
case
when then
...
else end
select editorial,
case count(*)
when 1 then 1
when 2 then 2
when 3 then 3
else 'Ms de 3' end as 'cantidad'
from libros group by editorial;
select editorial,
case count(*)
when 1 then 1
when 2 then 2
when 3 then 3
else 'Ms de 3' end as 'cantidad'
from libros group by editorial order by cantidad;
select editorial,
case count(*)
when 1 then 1
when 2 then 2
when 3 then 3
else 'Ms de 3' end as 'cantidad'
from libros group by editorial order by cantidad;
Para obtener todos los datos del libro podemos emplear una variable
para almacenar el precio ms alto:
select @mayorprecio:=max(precio) from libros;
select l.titulo,l.autor,e.nombre
from libros as l
join editoriales as e
on l.codigoeditorial=e.codigo
where l.precio = @mayorprecio;
Por ejemplo, queremos ver todos los libros de la editorial que tenga el
libro ms caro. Debemos buscar el precio ms alto y almacenarlo
en una variable, luego buscar el nombre de la editorial del libro
con el precio igual al valor de la variable y guardarlo en otra
variable, finalmente buscar todos los libros de esa editorial:
La tabla "cantidadporeditorial":
-nombre: varchar(20),
-cantidad: smallint unsigned.
select e.nombre,count(l.codigoeditorial)
from editoriales as e
left join libros as l on e.codigo=l.codigoeditorial
group by e.nombre;
editorial cantidad
Emece 3
Paidos 1
Planeta 1
Plaza & Janes 0
codigo nombre
1 Planeta
2 Emece
3 Paidos
update libros
join editoriales
on libros.codigoeditorial=editoriales.codigo
set libros.editorial=editoriales.nombre;
update libros as l
join editoriales as e
on l.codigoeditorial=e.codigo
set l.codigoeditorial=9, e.codigo=9
where e.nombre='Emece';
delete libros
from libros
join editoriales
on libros.codigoeditorial=editoriales.codigo
where editoriales.nombre='Emece';
delete libros
FROM libros
left join editoriales
on libros.codigoeditorial=editoriales.codigo
where editoriales.codigo is null;
delete editoriales
from editoriales
left join libros
on libros.codigoeditorial=editoriales.codigo
where libros.codigo is null;
select encode('feliz','dia');
select decode('7','dia');
select @clave:=encode('Barcelona','ganador');
insert into usuarios values ('Maria Garcia',@clave);
START TRANSACTION;
COMMIT;
SAVEPOINT identifier
ROLLBACK TO SAVEPOINT identifier
3. Bloquea una tabla a la vez hasta que la sesin obtiene todos los
bloqueos.
parameter:
[ IN | OUT | INOUT ] param_name type
caracteristicas:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL
DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
Cuerpo de la Rutina:
procedimientos almacenados o comandos SQL vlidos
END;
|
DELIMITER ;
Sentencia IF
IF evaluacion THEN Sentencias
[ELSEIF evaluacion THEN Sentencias] ...
[ELSE Sentencias]
END IF
Sentencia CASE
CASE
WHEN Evaluacion THEN Sentencias
[WHEN Evaluacion THEN Sentencias] ...
[ELSE Sentencias]
END CASE
Sentencia LOOP
[begin_label:] LOOP
Sentencias
END LOOP [end_label]
Sentencia WHILE
[begin_label:] WHILE Evaluacion DO
Sentencias
END WHILE [end_label]
WHILE Evaluacion DO
Sentencias
END WHILE
Sentencia SELECT...INTO
SELECT ... INTO
CURSORES
Mysql soporta cursores simples dentro de procedimientos y funciones
almacenadas. La sintaxis es la de SQL empotrado. Los cursores
no son sensibles, son de slo lectura, y no permiten scrolling.
CURSORES
OPEN cursor_name
Este comando abre un cursor declarado prviamente.
CLOSE cursor_name
Este comando cierra un cursor abierto prviamente.
OPEN cursor1;
REPEAT
FETCH cursor1 INTO Var_a, Var_b;
IF NOT done THEN
INSERT INTO world.tablaresultado VALUES (Var_a,Var_b);
END IF;
UNTIL done END REPEAT;
CLOSE cursor1;
END
Creado por Euclides Figueroa Usando OpenOffice.org 135
SQL y PROCEDIMIENTOS
Disparadores (Triggers)
Un disparador es un objeto con nombre en una base de datos que se
asocia con una tabla, y se activa cuando ocurre un evento en
particular para esa tabla.
Disparadores (Triggers)
momento_disp es el momento en que el disparador entra en accin.
Puede ser BEFORE (antes) o AFTER (despues), para indicar que el
disparador se ejecute antes o despus que la sentencia que lo
activa.
Disparadores (Triggers)
sentencia_disp es la sentencia que se ejecuta cuando se activa el
disparador.
Disparadores (Triggers)
CREATE TRIGGER check_deposito BEFORE UPDATE ON cuentas
FOR EACH ROW
BEGIN
IF NEW.deposito < 0 THEN
SET NEW.deposito = 0;
ELSEIF NEW.deposito > 100000 THEN
SET NEW.deposito = 100000;
END IF;
END;