0% encontró este documento útil (0 votos)
7 vistas120 páginas

3.SQL Con Heidisql

El documento proporciona un tutorial detallado sobre la instalación y uso de HeidiSQL, incluyendo pasos para descargar, instalar y conectar a bases de datos. También cubre la creación de bases de datos y tablas, así como el uso de SQL para realizar consultas y manipular datos. Se explican diversas cláusulas SQL como SELECT, WHERE, JOIN, y funciones de agregación como COUNT y SUM.

Cargado por

Miguel Jaller
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas120 páginas

3.SQL Con Heidisql

El documento proporciona un tutorial detallado sobre la instalación y uso de HeidiSQL, incluyendo pasos para descargar, instalar y conectar a bases de datos. También cubre la creación de bases de datos y tablas, así como el uso de SQL para realizar consultas y manipular datos. Se explican diversas cláusulas SQL como SELECT, WHERE, JOIN, y funciones de agregación como COUNT y SUM.

Cargado por

Miguel Jaller
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 120

Instalación de HeidiSQL

Ir a Google y escribir heidisql da clic en el primer enlace que te sale.


Instalación de HeidiSQL
Clic en Downloads
Instalación de HeidiSQL
Clic en Installer, 32/64 bit combined y esperamos a que descargue el
instalador y le damos clic para ejecutarlo.
Instalación de HeidiSQL
Aceptamos el acuerdo de licencia y clic en Siguiente.
Instalación de HeidiSQL
Deja la ruta por defecto y clic en Siguiente.
Instalación de HeidiSQL
Clic en Siguiente para crear accesos directos en el Menú de inicio
Instalación de HeidiSQL
Clic en Siguiente.
Instalación de HeidiSQL
Clic en Instalar.
Instalación de HeidiSQL
Esperamos a que termine la instalación.
Instalación de HeidiSQL
Clic en Finalizar.
Conexión a la BD
Clic en “Nueva” para crear una
nueva conexión, diligencie los
datos solicitados.

host / IP: 127.0.0.1


Usuario: root
Contraseña: contraseña
Puerto: 3306

127.0.0.1 es lo mismo que decir


localhost, ósea que la BD esta
instalada en nuestra PC y no
tiene que conectarse a ningún
lugar remoto en la Internet
para conectarse a la BD.

Clic en Guardar y luego clic en


Abrir.
Conexión a la BD
De inmediato estaremos dentro del entorno de desarrollo de Heidi SQL.
Conexión a la BD
En el panel de la izquierda estarán los objetos de Base de Datos, ósea todas las conexiones a la
bases de datos que tengamos creadas.

Por defecto, MySQL viene con esas BD preconfiguradas


que tienen tablas relacionadas al diseño de la BD.
Las BD que son propiamente del sistema son:

- Information_schema
- Mysql
- Performance_schema
- Sys

Las BD sakila y world son para practicar el lenguaje SQL.


Crear una BD
Para crear una nueva Base de Datos en Heidi SQL es tan sencillo como dar clic derecho sobre la
conexión en la que estamos trabajando actualmente, para este ejemplo la conexión se llama
MySQL, luego vamos a la opción Crear nuevo y escogemos Base de Datos.
Crear una BD
En el asistente que aparece Damos un nombre a la BD y escogemos el Collation que es el juego
de caracteres que usaremos en nuestra BD.

Si vamos a crear una BD que maneja texto o


información en leguaje de habla hispana, en
donde se usan eñes, tildes para el asentó, etc.
Entonces debemos seleccionar el Collation
adecuado para tal fin.

Por defecto Heidi SQL detecta el lenguaje del


sistema operativo y selecciona el Collation
apropiado para crear las BD, pero si se desea
se puede cambiar en este asistente.

Damos clic en Aceptar.


Crear una BD
Ya teniendo creada la BD barbershop
podemos ver que tiene algunas categorías para
crear objetos en esta misma.

Tablas, Vistas, Procedimientos, Funciones,


Disparadores y Eventos.

Tener en cuenta que no es lo mismo dar clic


derecho sobre la conexión que dar clic derecho
sobre una BD, se mostraran distintas opciones
para ambos casos.
Crear una Tabla
Damos clic derecho sobre la categoría Tablas y vamos a la opción Crear nuevo y luego clic en
Tabla.
Crear una Tabla
Damos un nombre a la tabla y un comentario
opcional.

Clic en Agregar para crear nuevos campos en la tabla.


Crear una Tabla
Damos un nombre a cada campo, seleccionamos el tipo de datos de la lista desplegable de
opciones, damos un valor a la longitud del campo, tenemos las opciones para que el campo
inicie solo con números positivos “Sin signo”, la opción de permitir si un campo es “NULL”,
podemos seleccionar valores predeterminados para el campo o columna, por ejemplo
AUTOINCREMENT, un texto, un NULL, una expresión, etc.
Crear una Tabla
Damos clic derecho sobre el campo Cli_Id
para crearlo como llave primaria.
Escogemos la opción Crear nuevo índice y
damos clic en PRIMARY.
Crear una Tabla
Para finalizar la creación de la tabla damos clic en Guardar y vemos que se ha creado la tabla
clientes.
Crear una Tabla
Si seleccionamos la tabla, y vamos a una pestaña llamada Datos, podremos ver la información
que contiene la tabla, en este momento esta vacía porque no se ha ingresado información.
Crear una Tabla
Damos clic en el icono que se muestra en la imagen, Cargar archivo SQL y buscamos y
seleccionamos el archivo curso.sql

Seleccionamos el archivo y clic en Abrir y


decimos que Sí al mensaje.
Crear una Tabla
Encontraremos que el archivo curso.sql contiene una gran cantidad de instrucciones que están
listas para ser ejecutadas. Dar clic en la opción Ejecutar o presione F9.
Crear una Tabla
La BD curso se ha creado satisfactoriamente, expandir la categoría de Tablas para ver las tablas
que se han creado.
Lenguaje SQL
SQL – Structure Query Language: Lenguaje Estructurado de Consulta, se divide en 4 tipos de
instrucciones:

DDL – Data Definition Language: Conocido como DDL, permite crear y modificar la estructura
de una base de datos.

DML – Data Manipulation Language: Se utiliza para gestionar y manipular datos en una base
de datos relacional. Los comandos de DML se utilizan para insertar, actualizar, eliminar y
recuperar datos de una base de datos.

DCL – Data Control Language: Incluye una serie de comandos SQL que permiten al
administrador controlar el acceso a los datos contenidos en la base de datos.

TCL – Transaction Control Language: Son comandos SQL (COMMIT, ROLLBACK, etc.) que
permiten manejar transacciones en una base de datos relacional.
Instrucción SELECT
Con la sentencia SELECT podemos hacer todo tipo de consultas en una Base de Datos, para
escribir una consulta solo selecciona la BD y da clic en la pestaña que dice “Consulta*” como se
muestra en la imagen:

Observa todas las clausulas que podrimos utilizar en la sentencia SELECT.


Instrucción SELECT
Muestra todos los campos que contiene la tabla productos.

Para ejecutar una sentencia en Heidi SQL debes dar clic en el botón de color azul que se indica
en la imagen, o puedes presionar la tecla F9.

En términos de optimización, NO es recomendable usar el comodín (*)


Instrucción SELECT
Si no necesito mostrar en una consulta todos los campos, para que usar el comodín (*).
Simplemente especifico en la consulta los campos que voy a necesitar y ejecuto la instrucción.
Instrucción SELECT
Muestra la Descripción y el Precio de la tabla productos y ordena los registros por el campo
Prod_Precio de manera descendente, ósea de mayor a menor.
Clausula WHERE
Muestra los campos Prod_Descripcion y Prod_Precio de la tabla productos donde los precios
sean mayor a cero.
Clausula WHERE
Muestra los campos Prod_Descripcion y Prod_Precio de la tabla productos donde los precios
sean mayor que 100 y menor que 200, y ordena los registros por el campo prod_precio de
forma descendente.
Clausula WHERE - Alias
Podemos usar un alias para las tablas y luego usarlo en las instrucciones SQL, después del
nombre de una tabla colocar una letra como alias, fíjate que ahora para especificar los campos
solo basta con colocar la letra p. y se mostraran los campos de la tabla productos para
seleccionarlos.
Clausula WHERE - Alias
Muestra todos los campos de la tabla ventas donde la fecha es mayor que el 2018-01-01 y
menor que el 2018-01-31.
Clausula WHERE – YEAR()
Muestra todos los campos de la tabla ventas donde en el campo Ventas_Fecha solo contenga
fechas con el año 2018.
Clausula WHERE – MONTH()
Muestra todos los campos de la tabla ventas donde en el campo Ventas_Fecha solo contenga
fechas mayores que el mes de junio del año 2018.
Clausula WHERE – BETWEEN()
Muestra todos los campos de la tabla ventas donde en el campo Ventas_Fecha contenga fechas
entre 2018-01-01 y 2018-01-31.
Clausula WHERE
Muestra todos los campos de la tabla ventas_detalle donde el campo VD_ProdId es igual a
1128.
Clausula WHERE – Unión de tablas
Podemos unir tablas con la clausula WHERE. Muestra todos los registros de las tablas ventas y
clientes donde Ventas_CliId sea igual a Cli_Id.
Clausula WHERE – Unión de tablas
Agregamos una tabla mas, la tabla ventas_detalle, y mostraremos en la consulta el VD.ProdId
donde v.Ventas_Id sea igual a vd.VD_VentasId.
Clausula WHERE – Unión de tablas
Agregamos otra tabla mas para mostrar el nombre o la descripción del producto, si se cumple la
condición de que vd.VD_ProdId es igual a p.Prod_Id.
Clausula WHERE – Unión de tablas
Podríamos unir una tabla mas, la de proveedores para ver el id y nombre del proveedor de cada
producto, agregamos la tabla proveedores a la consulta y la nueva condición que donde
p.Prod_ProvId sea igual a pr.Prov_Id.
Clausula ORDER BY
Podríamos ordenar el resultado de la consulta por algún campo, por ejemplo ordenaremos por
el campo Prod_Descripcion; por defecto se ordena de manera ascendente ASC.
Clausula ORDER BY
Ordenamos la misma consulta de manera descendente DESC, ósea de la Z a la A y de mayor a
menor en caso de existan valores numéricos.
Clausula ORDER BY
Podemos ordenar por varios campos, ordenamos la misma consulta por el campo Ventas_Fecha
de manera descendente DESC, y por el campo Prod_descripcion por defecto de manera
ascendente ASC.
Función COUNT()
Cuenta todos los registros de la tabla Ventas y colócale un alias al resultado llamado Registros.
Función COUNT()
Cuenta todas las Ventas en la fecha 2018-01-03.
Función SUM()
Suma el total de ventas cuando el año sea igual a 2018 y el mes sea igual a enero.
Función MIN()
Devuelve el valor de la venta mínima, cuando el año sea igual a 2018 y el mes sea igual a enero.
Función MAX()
Devuelve el valor de la venta máxima, cuando el año sea igual a 2018 y el mes sea igual a enero.
Función AVG()
Devuelve el valor de la venta promedio, cuando el año sea igual a 2018 y el mes sea igual a
enero.
Clausula GROUP BY
Selecciona todos los códigos de productos y crea una columna virtual llamada ventas, en donde
se cuente cuantas veces aparece el producto en la tabla ventas_detalle.
Clausula GROUP BY
Selecciona todos los códigos de productos y crea una columna virtual llamada ventas, en donde
se cuente cuantas veces aparece el producto en la tabla ventas_detalle.
Clausula GROUP BY
La misma consulta anterior pero le agregamos el campo Prod_Descripcion para visualizar de
una mejor manera los productos mas vendidos.
Clausula GROUP BY
Selecciona el total de ventas agrupado por año y por mes
Clausula HAVING
Con la clausula WHERE se utiliza para filtrar valores en los campos que tengamos después de la
sentencia SELECT, es decir; solo puede filtrar información de los campos que existen en las
tablas de nuestras BD.
Pero que pasa si queremos hacer filtros sobre esos resultados virtuales o temporales que nos
arroja una consulta, por ejemplo la siguiente consulta nos daba un resultado donde
agrupábamos los datos por año y mes, y teníamos un total por cada uno de esos grupos.
Clausula HAVING
Si quisiéramos filtrar por alguno de los campos calculados, por ejemplo por el Total que lo que
se esta haciendo en este campo es una suma, SUM( ), y queremos que solo nos muestre los
agrupamientos en donde los totales sean mayores a 1 millón, pensaríamos que lo podríamos
resolver con la clausula WHERE como se muestra a continuación:

Me dice que no conoce el campo ‘Total’, y es porque no


podemos usar la clausula WHERE en los campos calculados.
Clausula HAVING
Para filtrar sobre los resultados que ya me generaron el SELECT y el FROM y sobre el
agrupamiento que me hace el GROUP BY, utilizamos la clausula HAVING.
Clausula HAVING
Tomamos otro ejemplo donde consultábamos la cantidad de unidades vendidas de cada uno de
los artículos, y quisiéramos filtrar sobre ese resultado solo los registros en donde ventas sea
mayor a 500.
Clausula HAVING
Podemos hacerlo también mediante la clausula HAVING.
Clausula IN / NOT IN
Si hacemos un SELECT sobre la tabla productos para que nos muestre todos los campos y
registros que hay actualmente en esta tabla, obtendríamos el resultado que vemos a
continuación.
Clausula IN / NOT IN
Pero si solo quisiéramos ver un grupo especifico de registros porque no deseo verlos todos,
podríamos pensar en usar la clausula WHERE con el operador lógico OR como se muestra a
continuación:
Clausula IN / NOT IN
Si usamos la clausula IN en lugar de WHERE y no tener que hacer todas esas comparaciones
lógicas, podríamos escribir la consulta como se muestra a continuación.
Clausula IN / NOT IN
Si en vez de usar IN ahora usamos NOT IN, la consulta nos traerá todos los registros de la tabla
excepto los registros (1,2,3,4).
Ejercicio
Seleccionar los campos Prod_Id y Prod_Descripcion de
la tabla productos que nunca han sido vendidos.

Nota: Para poder saber si un producto ha sido vendido,


este producto debe aparecer por lo menos una vez en la
tabla ventas_detalle.
Respuesta
La solución es realizar una subconsulta que primero nos permita traer todos los productos que
aparezcan por lo menos una vez en la tabla ventas_detalle y que estos códigos de producto
sean únicos y no se repitan, para esto usamos la función DISTINCTROW.

Ya teniendo lo anterior, pasamos ese resultado como parámetro la clausula NOT IN de la


primera consulta, y así podríamos saber cuales de esos códigos de productos NO están en la
tabla ventas_detalle o también podríamos decir que nunca han sido vendidos ni una sola vez.
Ejercicio
Seleccionar los campos Cli_Id y Cli_RazonSocial de la
tabla clientes que están registrados como clientes en la
BD pero que nunca han realizado ni una sola compra.
Respuesta
Hacemos una subconsulta en la tabla ventas, con la función DISTINCTROW para evitar
duplicados, y el resultado se lo pasamos como parámetro a la clausula NOT IN de la consulta a
la tabla clientes.
Clausula LIKE
Selecciona los campos Id, Descripcion, Color y Precio de la tabla productos, donde el texto del
campo Descripcion contenga en cualquier parte el texto ‘TARUGO’.
Clausula LIKE
Selecciona los campos Id, Descripcion, Color y Precio de la tabla productos, donde el texto del
campo Descripcion contenga en cualquier parte el texto ‘NEGRO’.
Clausula LIKE
Selecciona los campos Id, Descripcion, Color y Precio de la tabla productos, donde el texto del
campo Descripcion contenga en cualquier parte el texto ‘NEGRO’ o el campo Color contenga
en cualquier parte el texto ‘NEGRO’.
Clausula LIKE
Podemos simplificar la consulta utilizando una función llamada CONCAT( ) para concatenar los
dos campos, y si en ese texto concatenado existe la palabra NEGRO en cualquier posición,
entonces nos mostrara un resultado.
Clausula JOIN (Unión de Tablas)
Que podamos unir tablas con la clausula WHERE no significa que sea la mejor manera o la
manera mas profesional de hacerlo.

La mejor manera de unir tablas es con la clausula JOIN, como se muestra en la imagen a
continuación en donde unimos la tabla productos con la tabla ventas_detalle.
Clausula JOIN (Unión de Tablas)
Podemos usar mas de un JOIN en una consulta, miremos el ejemplo a continuación:

La anterior consulta dará como resultado un gran volumen de información con campos de todas
las tablas unidas.
Clausula JOIN (Unión de Tablas)
Dentro de los JOIN podemos agregar mas condiciones, como el ejemplo que se muestra a
continuación que solo traerá:

- los registros que tengan costos superiores a 2000 en el campo VD_Costo de la tabla
ventas_detalle.
- Proveedores que comiencen por el carácter ‘C’ en el campo Prov_Nombre de la tabla
proveedores.
- Y que tenga fechas de venta superiores al 2018-02-15 en el campo Ventas_Fecha de la tabla
Ventas.

Es prácticamente imposible realizar consultas tan precisas con un WHERE, por eso usamos los
JOIN.
Clausula LEFT & RIGHT JOIN
En este ejemplo seleccionamos los campos que se muestran en la imagen, y hacemos un JOIN de
la tabla productos con la tabla ventas_detalle. Lo importante de este ejemplo es que tenemos
que saber que estamos uniendo productos(1) con ventas_detalle(2), entonces podríamos decir
que estamos uniendo la tabla 1 con la tabla 2.
Clausula LEFT & RIGHT JOIN
En el resultado que nos muestra la consulta anterior, tenemos que saber que hay productos que
no saldrán en la consulta porque no tienen unidades vendidas, es decir que solo saldrán
productos que tengan al menos una unidad vendida en la tabla ventas_detalle.
Clausula LEFT & RIGHT JOIN
Ahora supongamos que queremos que en la consulta si o si nos aparezcan todos los productos
así no tengan ni una sola unidad vendida. Es aquí donde nos funcionaria un LEFT JOIN.

La tabla de la izquierda (LEFT) es productos y la tabla de la derecha (RIGHT) es ventas_detalle.


Clausula LEFT & RIGHT JOIN
LEFT JOIN me indica que la tabla que esta a la izquierda tiene prioridad por encima de la(s)
tabla(s) que estén después del JOIN, ósea a la derecha.
En este caso significa que se van a mostrar todos los productos de la parte izquierda y solamente
en los que haya coincidencia en la parte derecha.

En el resultado en pantalla, los productos que nunca han tenido ventas o unidades vendidas,
saldrán en NULL.
Clausula LEFT & RIGHT JOIN
En el caso contrario, que pasaría si aplicamos un RIGHT JOIN a esta misma consulta. Ahora la
tabla de la derecha (ventas_detalle) es la principal y tiene prioridad sobre la tabla de la izquierda
(productos).

Traerá todos los registros que tenga ventas_detalle y solo traerá de la tabla productos los
registros en donde exista una coincidencia entre los campos que están en la clausula ON. Y si no
hay coincidencias entonces pondrá todo en NULL de la tabla izquierda.
Clausula LEFT & RIGHT JOIN
Ahora queremos saber cuales son esos productos que han tenido ventas, y que tienen registros
en la tabla ventas_detalle (derecha), pero que esos productos no han sido registrados en la tabla
de productos (izquierda). Tenemos que hacer el GROUP BY sobre la tabla principal, que en este
momento es ventas_detalle y lo hacemos a través del campo VD_ProdId.
Funciones de MySQL
Utilizamos la función IF para mostrar un texto si una condición se cumple o no.
Funciones de MySQL
También podríamos hacer lo mismo que en el ejemplo anterior pero con la función CASE.

Pero este ejemplo no estaría del todo bien, que pasaría si tenemos mas de un Estado, por
ejemplo 1=Habilitado, 0=Deshabilitado y 2=Por habilitar.
Esta sentencia nos diría que todo lo que es 1 le pondrá Habilitado, y a todo lo demás le pondrá
Deshabilitado, porque no estamos evaluando por ninguna parte el estado (2).
Funciones de MySQL
Que pasaría si tenemos mas de dos estados, por ejemplo 1=Habilitado, 0=Deshabilitado y 2=Por
habilitar, en este caso usaríamos la función CASE END.
Funciones de MySQL
También podríamos agregar subconsultas la función CASE END. Note que cuando el producto
efectivamente tiene Status=1 y si no se ha vendido nada de ese producto, mandara un NULL.
Funciones de MySQL
Soluciones el problema encerrando toda la función anterior dentro de otra nueva función que se
llama IFNULL( ), y le indicamos que si hay un valor NULL lo reemplace con un Cero(0).
Funciones de MySQL
Usamos la función SUBSTR para extraer un carácter de una cadena de caracteres, y le indicamos
a la función CASE que hacer en caso de que se cumpla una o mas condiciones:
Funciones de MySQL
Algunas funciones que nosotros podemos ejecutar en el motor de BD sin necesidad de
mencionar alguna tabla, ósea son SELECT que NO van a tener un FROM.
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Funciones de MySQL
Instrucción INSERT
Para trabajar con la instrucción INSERT crearemos primero una tabla llamada alumnos con los
campos que se muestran en la siguiente imagen.
Instrucción INSERT
Insertamos el primer registro en la tabla alumnos.
Instrucción INSERT
Podemos hacer un volcado en la tabla alumnos insertando varios registros en la misma consulta.
Instrucción UPDATE
Antes de usar la instrucción UPDATE insertaremos unos registros de ejemplo en la tabla
productos para luego actualizarlos.
Instrucción UPDATE
Actualizamos el campo Prod_Descripcion del registro 6990.
Instrucción UPDATE
Podemos actualizar varios campos a la vez, esta vez lo haremos con el registro 6991.
Instrucción DELETE
La instrucción DELETE se utiliza para eliminar registros existentes en una tabla.
Instrucción DELETE
Es posible eliminar todas las filas de una tabla sin eliminar la tabla en sí. Esto significa que la
estructura, los atributos y los índices de la tabla permanecerán intactos.
Resumen
Estas son las estructuras básicas de las tres instrucciones, INSERT, UPDATE y DELETE.
Subconsultas
Las subconsultas son consultas que se encuentran dentro de otra consulta más grande en una
base de datos. Estas subconsultas se utilizan para obtener un conjunto de datos específico que
se utilizará como parte de la consulta principal. Las subconsultas se pueden aplicar en diferentes
partes de una consulta, como en las cláusulas WHERE, JOIN, HAVING, etc.

Una subconsulta también puede ser insertada en cualquiera de las tres partes de un SELECT, en
la lista de campos, en las tablas o en las condiciones.
Subconsultas
Tenemos la siguiente consulta en donde deseamos saber cual seria la cantidad total vendida de
cada uno de los productos, pero dicha cantidad se encuentra en otra tabla llamada
ventas_detalle.

¿ Cual seria la solución para esta consulta ?


Subconsultas
Una posible solución seria utilizar un JOIN con la tabla ventas_detalle y agrupar por el código
del producto para así obtener el resultado, como se muestra a continuación:
Subconsultas en la <lista de campos>
La otra forma seria realizando una subconsulta dentro de la lista de campos del SELECT, como
se muestra a continuación:
Subconsultas en la <lista de campos>
Podríamos agregar una subconsulta mas como otro campo del SELECT, y así determinar cual fue
el producto que genero mayores ingresos.
Subconsultas en las <tablas>
Para obtener los productos con mas 100 unidades vendidas podríamos ejecutar la siguiente
consulta haciendo un JOIN con la tabla ventas_detalle.
Subconsultas en las <tablas>
En la parte del JOIN podríamos también ejecutar una subconsulta.
Subconsultas en las <condiciones>
Finalmente también podemos usar subconsultas en la parte donde colocamos las condiciones.

También podría gustarte