CURSO DE MYSQL
Contenido
PROGRAMAS A UTILIZAR
- Mysql Query Browser (My Structured Query Language->Lenguaje de Consulta) es un gestor de base de datos, lo cual nos permite almacenar y administrar información.
- Mysql workbench (My Structured Query Language->Lenguaje de Consulta) es un gestor de base de datos, lo cual nos permite almacenar y administrar información.
REQUISITOS BÁSICOS
CONCEPTOS BÁSICOS
¿ Qué es mysql ?
MySQL es el sistema gestor de bases de datos más popular de Internet. Es un proyecto
open source
que se encuentra disponible en la mayoría de los servidores y proyectos.
MYSQL sirve para almacenar y administrar datos en bases de datos relacionales.
MySQL es un sistema gestor de bases de datos relacionales potente y versátil, capaz
de
satisfacer la mayoría de los proyectos en la web.
¿ Qué es una base de datos ?
Una base de datos es el lugar o espacio donde se almacenan un conjunto de datos y
pueden ser
utilizados en cualquier momento, cuando el usuario lo solicite.
Una base de datos esta conformado por tablas que estan relacionadas
entre sí, y
cada tabla esta conformado por filas y columnas.
TIPO DE DATOS
En mysql para poder almacenar datos en una tabla, primero debemos
fijarnos en el
tipo de
datos que es; ya sea
(NUMERO-CADENA)
Existen varios tipos de datos para almacenar un valor pero los mas
principales son
char varchar int tinyint float double date longblob
COMENTARIOS
Los comentarios son bloques de codigo que no son interpretados al
ejecutar el
programa
/*
comentario
de varios
bloques de linea
*/
#comentario de una linea
LÍNEA DE COMANDOS
CREAR UNA NUEVA BASE DE DATOS
Para empezar a guardar datos en una BD primero necesitamos crear una base de datos.
Para empezar a guardar datos en una BD primero necesitamos crear una base de datos.
create database blog;
use blog;
ELIMINAR UNA BASE DE DATOS
DROP database blog;
CREAR UNA NUEVA TABLA
Como sabemos que los datos son almacenados en una tabla y por ello también se debe crear una tabla.
Como sabemos que los datos son almacenados en una tabla y por ello también se debe crear una tabla.
create table curso(
codigo char(3) not null,
nombre varchar(100) not null,
cantidad int not null
);
CAMBIAR NOMBRE DE UNA TABLA
alter table curso rename to nuevoCurso;
ELIMINAR UNA TABLA
drop table curso;
AGREGAR LLAVE PRIMARIA(primary key)
Una llave primaria es como una identificación. En mysql, las PK(primary key) se utilizan para asignar a un campo o columna de la tabla.
Al asignar una PK(primary key) a la columna, validamos que los datos no puedan repetirse en dicha columna; esto puede ser muy importante para poder evitar duplicidad de datos.
Otras de las ventajas de asignar una PK(primary key) a un campo es que podemos relacionar nuestra tablas con otras de la misma.
Una llave primaria es como una identificación. En mysql, las PK(primary key) se utilizan para asignar a un campo o columna de la tabla.
Al asignar una PK(primary key) a la columna, validamos que los datos no puedan repetirse en dicha columna; esto puede ser muy importante para poder evitar duplicidad de datos.
Otras de las ventajas de asignar una PK(primary key) a un campo es que podemos relacionar nuestra tablas con otras de la misma.
alter table curso
add constraint pk1 primary key(codigo);
AGREGAR LLAVE FORÁNEA(foreign key)
Una llave foránea se usa para unir dos o más tablas de la misma.
Para unir dos o mas tablas debemos tener en cuenta que las columnas de cada tabla deben ser del mismo de tipo de dato.
alter table cursoDetalle
add constraint fk1 foreign key(curso) references curso(codigo);
CAMBIAR NOMBRE DE UNA COLUMNA
Se recomienda no cambiar el nombre de la columna que contenga una
de las
llaves(PRIMARIA O FORÁNEA)
alter table curso
change column codigo codigoNuevo char(3) not null;
CAMBIAR TIPO DE DATO DE UNA COLUMNA
Se recomienda no cambiar el tipo de dato de la columna que contenga
una de las
llaves(PRIMARIA O FORÁNEA)
alter table curso
modify nombre varchar(200)not null;
AGREGAR UNA NUEVA COLUMNA
alter table curso
add column nuevaColumna int not null;
ELIMINAR UNA COLUMNA
alter table curso
drop column nuevaColumna,drop column nuevaColumna2;
INSERTAR DATOS EN UNA TABLA
insert into curso(codigo, nombre, cantidad)values('007','redes',20);
ACTUALIZAR DATOS DE UNA TABLA
update curso set nombre='diseño web', cantidad=50 where codigo='007';
ELIMINAR DATOS DE UNA TABLA
delete from curso where codigo='007';
SELECT - DISTINCT - ORDER BY
El comando select se utiliza para hacer consultas(mostrar
datos de
nuestra tabla).
El comando distinct se utiliza para hacer mostrar valores unicos sin duplicados.
El comando order by se utiliza para mostrar datos de forma ascendente o descendente.
El comando distinct se utiliza para hacer mostrar valores unicos sin duplicados.
El comando order by se utiliza para mostrar datos de forma ascendente o descendente.
#SELECT
select nombre from curso; #una columna
select * from curso; #todas las columnas
#DISTINCT
select distinct nombre from alumno;
select distinct nombre,dni from alumno;
#ORDER BY
select * from alumno order by nombre asc;
select * from alumno order by nombre desc;
WHERE
El comando where(donde) se utiliza prácticamente para
dar
condiciones a nuestra consulta
select * from alumno where nombre="juan";
select * from alumno where edad>=18;
AND - OR - NOT
El comando and se utiliza para poner 2 a más
condiciones. Ejecuta si se todas las condiciones son verdaderas
El comando or es similar al comando and. Con la unica diferencia de que este se ejecutará si uno de ellos cumple con la condición
El comando not se usa para negar una condición.
El comando or es similar al comando and. Con la unica diferencia de que este se ejecutará si uno de ellos cumple con la condición
El comando not se usa para negar una condición.
#AND
select * from alumno where nombre="juan" and edad>18;
#OR
select * from alumno where nombre="juan" or edad>18;
#NOT
select * from alumno where not edad<=18;
IN
El comando in se utiliza para determinar que los
datos se
encuentren entre los valores indicados
select * from alumno where edad in(18, 20, 21);
BETWEEN
El comando between se utiliza para determinar que los
datos se
encuentren entre un rango de valores
select * from alumno where edad between 10 and 20;
select * from alumno where carrera between "admin" and "computacion";
LIKE
El comando like se utiliza para poner
comodines
en una busqueda de datos
Por ejemplo necesito una consulta donde los nombres empiecen con la letra 'M'
Por ejemplo necesito una consulta donde los nombres empiecen con la letra 'M'
select * from alumno where carrera like'c%'; #comienza con 'c'
select * from alumno where carrera like'%n'; #termina con 'n'
select * from alumno where carrera like'%a%'; #contiene con 'a'
INNER - LEFT - RIGHT - FULL JOIN
El comando join nos permite asociar(unir) 2 o más tablas, en
base a una
columna que tengan en común
INNER JOIN
Esta comando busca coincidencias entre 2 tablas, en función a una columna que
tienen en
común. De tal modo que sólo la intersección se mostrará en los
resultados.
SELECT
articulo.nombre as 'producto',
fabricante.nombre as 'fabricante'
FROM
articulo
INNER JOIN fabricante ON articulo.cod_fab = fabricante.codigo
LEFT JOIN
A diferencia de un INNER JOIN, donde se busca una intersección
respetada
por ambas tablas,
con LEFT JOIN damos prioridad(ventaja) a la tabla de la
izquierda, y
buscamos en la tabla derecha.
Si no existe ninguna coincidencia para alguna de las filas de la tabla de la izquierda, de igual forma todos los resultados de la primera(IZQUIERDA) tabla se muestran.
Si no existe ninguna coincidencia para alguna de las filas de la tabla de la izquierda, de igual forma todos los resultados de la primera(IZQUIERDA) tabla se muestran.
SELECT
articulo.nombre as 'producto',
fabricante.nombre as 'fabricante'
FROM
articulo
LEFT JOIN fabricante ON articulo.cod_fab = fabricante.codigo
COUNT - AVG - SUM - MAX - MIN
COUNT :
El comando count se utiliza para contar
la cantidad de datos existentes en la tabla.
SELECT count(*) as total from articulo
AVG :
El comando avg se utiliza para calcular
el promedio de los valores numéricos.
SELECT avg(precio) as total from articulo
SUM :
El comando sum se utiliza para calcular
la suma total de los valores numéricos.
SELECT sum(precio) as total from articulo
MAX :
El comando max se utiliza para calcular
el valor máximo de los valores numéricos.
SELECT max(precio) as total from articulo
MIN :
El comando min se utiliza para calcular
el valor mínimo de los valores numéricos.
SELECT min(precio) as total from articulo
GROUP BY
El comando group by se utiliza para agrupar
las filas que
tienen los mismos valores.
También son llamados consultas agrupadas
También son llamados consultas agrupadas
SELECT * from articulo GROUP BY nombre
HAVING
El comando havingse puede/suele usar junto con GROUP
BY cuando
necesitamos que los resultados agrupados deban cumplir ciertas
condiciones que
veremos en los
ejemplos posteriores.
No se puede usar la cláusula WHERE con la columna agrupada por GROUP BY, se tiene que hacer con HAVING
No se puede usar la cláusula WHERE con la columna agrupada por GROUP BY, se tiene que hacer con HAVING
SELECT * from articulo GROUP BY precio HAVING precio>100
DIFERENCIA ENTRE WHERE Y HAVING
La clausula WHERE permite una condición para usar
cualquier
columna de una tabla
pero no permite usar alias o funciones agregadas. La clausula
HAVING permite
hacer condiciones
para usar una columna, alias o una funcion agregada.
Esto se debe a que la clausula WHERE filtra la data antes de ejecutar el select pero HAVING filtra los resultados despues de hacer el select
Esto se debe a que la clausula WHERE filtra la data antes de ejecutar el select pero HAVING filtra los resultados despues de hacer el select
CONSULTAS SQL
Consultas de una tabla
select nombre from curso; #una columna
select * from curso; #todas las columnas
Consultas de muchas tabla(consulta MULTITABLA)
Consulta donde necesito ver el nombre y precio del curso
select nombre, precio from curso
inner join cursoDetalle ON
curso.codigo=cursoDetalle.curso;
Consulta dentro de una consulta(SUBCONSULTAS)
Consulta donde necesito ver el nombre y precio del curso, pero donde el precio >
min(precio)
select nombre, precio from curso
inner join cursoDetalle ON
curso.codigo=cursoDetalle.curso
where precio>(select min(precio)from cursoDetalle );
PROCEDIMIENTOS ALMACENADOS
Los procedimientos alcenados son como las funciones; Son bloques de comandos que
ejecutan
una
acción y pueden ser reutilizados infinitas veces.
Para ejecutar un procedimiento alcenado primero debe ser invocado(LLAMADO). Para
llamar un
PA se
utiliza la palabra reservada call()
Registrar curso
delimiter $$
create procedure reCurso(in cod char(3),in nom varchar(200), in cant int )
begin
insert into curso(codigo, nombre, cantidad)values(cod,nom,cant);
end $$
call reCurso('003','programacion',150);
# eliminar un procedimiento
drop procedure reCurso;
Actualizar curso
delimiter $$
create procedure acCurso(in cod char(3),in nom varchar(200), in cant int )
begin
update curso set nombre=nom, cantidad=cant where codigo=cod;
end $$
call acCurso('003','ofimatica',150);
Eliminar curso
delimiter $$
create procedure elCurso(in cod char(3))
begin
delete from curso where codigo=cod;
end $$
call elCurso('003');
Listar cursos
delimiter $$
create procedure coCurso()
begin
select * from curso;
end $$
call coCurso;
Listar cursos segun el codigo
Procedimiento almacenado con parametros
delimiter $$
create procedure coCliente2(in cod char(3))
begin
select * from curso where codigo=cod;
end $$
call coCliente2('004');
IMPORTAR Y EXPORTAR SQL
Importar desde Mysql Workbench
Exportar desde Navicat
OTROS COMANDOS
Suma solo las horas de un campo tipo DATETIME
#ejemplo 1
select SEC_TO_TIME(SUM(TIME_TO_SEC(asistencia.salida))) as 'horas'
FROM asistencia
#ejemplo 2
select SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(asistencia.salida,asistencia.entrada)))) as 'horas'
FROM asistencia
Calcula la diferencia entre fechas(datetime) y devuelve el total de
Horas
#ejemplo 1
select TIMEDIFF(asistencia.salida,asistencia.entrada) as 'horas'
FROM asistencia