Está en la página 1de 25

2022

TUTORIAL DE BD

ING. CARLOS PAZMIÑO


 Lenguaje SQL
 Comandos para la Manipulación de Bases de
Datos
 Comandos para la Manipulación de Información
 Operadores Lógicos
 Operadores de Comparación
 Funciones de Columna
 Concatenación de Datos y Uso de la Cláusula
As
 Consultas con Rangos de Fechas
 Funciones de Columna
 Ordenamiento de los Resultados de Consulta
(Order by)
 Consultas Agrupadas (Group by)
 Ejercicios con Diagramas
 SUBCONSULTAS
 Vistas en MySQL
 Funciones en MySQL
 Procedimientos almacenados
Lenguaje SQL

El lenguaje SQL es un lenguaje orientado a la manipulación de las bases de datos,


brindando una interface sencilla y amigable para el usuario, para poder utilizarlo se
debe tener conocimientos sobre la base de datos a manipular y sobre las
instrucciones propias del lenguaje. Este está compuesto por comandos, cláusulas,
operadores y funciones.

Comandos para la Manipulación de Bases de Datos

 Create: Sirve para crear tablas o un nuevo esquema de base de datos.

 Drop: Sirve para eliminar columnas, tablas o bases de datos.

 Alter: Se utiliza para modificar la estructura de una tabla, éste puede ser combinado con
otros comandos como: ADD, DROP, ADD PRIMARY KEY(), ADD FOREIGN KEY(), entre
otros.

 Describe: Muestra la estructura de las tablas de la base de datos.

 Show Tables: Muestra las tablas que pertenecen a la base de datos.

Comandos para la Manipulación de Información

 Select: Es utilizado para realizar consultas a la base de datos que cumplan con
alguna condición.
 Insert: Es utilizado para la inserción de información en la base de datos.
 Update: Se utiliza para la modificación o actualización de información en la base de
datos.
 Delete: Elimina registros de la base de datos.

Cláusulas

 From: Se utiliza para especificar la tabla o tablas de las cuales se va a


seleccionar los registros.

 Where: Es utilizado para determinar las condiciones que debe cumplir la


información seleccionada.

 Group By: Sirve para agrupar los registros seleccionados en grupos


específicos.

 Having: Expresa la condición que debe satisfacer cada grupo.

 Order By: Sirve para ordenar registros de acuerdo a algún campo específico.
Esta cláusula puede realizarse de forma ascendente o descendente
Operadores Lógicos

 And: Es el equivalente a “y”, devuelve valor de verdad solo si todas las


condiciones son verdaderas.

 Or: Es el equivalente a “o”, devuelve valor de verdad si al menos una de


las condiciones es verdadera.

 Not: Es el equivalente a negación, devuelve valor verdadero cuando la


condición es falsa y viceversa.

Operadores de Comparación

 <: Menor que.

 >: Mayor que.

 <>: Diferente.

 <=: Menor o igual que.

 >=: Mayor o igual que.

 =: Igual que.

 Between: Se utiliza para especificar un rango de valores.

 Like: Se utiliza para la comparación de un modelo

 In: Se utiliza para especificar registros de una base de datos.

Funciones de Columna

 Avg: Devuelve como resultado el promedio de un campo determinado.

 Count: Devuelve como resultado el número de registros que cumplen una


condición.

 Sum: Devuelve como resultado la suma de los valores de un campo determinado.

 Max: Devuelve el valor más alto de un campo determinado.

 Min: Devuelve el valor más bajo de un campo determinado.


Ejemplos:

En caso de que se desee ver únicamente los nombres y apellidos de los


empleados de la tabla empleado, se realizará la siguiente consulta:

SELECT nombre,
apellido FROM
empleado;

El resultado será el siguiente:

Concatenación de Datos y Uso de la Cláusula As

Cuando en el resultado de una consulta se desea mostrar la información


concatenada utilizamos la palabra CONCAT, y para crear una columna temporal en
la cual se mostrarán los resultados concatenados usamos la cláusula AS, la cual nos
permite definir un alias para almacenar los datos temporales.

La cláusula AS puede ser usada en las cláusulas GROUP BY, ORDER BY o


HAVING y puede aparecer tanto en SELECT como en FROM

El formato es el siguiente:

SELECT CONCAT(columna1,'separador',columna2) AS
columna_temporal FROM nombre_tabla;
Como separador entre las columnas concatenadas se puede usar la coma (,),
punto (.) O espacio ( ), éste debe estar siempre entre comilla simple.

Por ejemplo deseamos listar los nombres de los empleados de la compañía,


utilizando CONCAT y AS, el resultado sería el siguiente:

SELECT CONCAT(nombre, ' ', apellido) AS


empleados FROM empleado;

El resultado es:
Selección de Registros con Condiciones Específicas.

1) Se quiere obtener un solo registro como resultado, es necesario utilizar la


cláusula WHERE a continuación, deseamos consultar toda la información del
empleado con el número de cédula 15097882.

SELECT *
FROM empleado

WHERE cedula=‟15097882‟;

El resultado será el siguiente:

2) A continuación listaremos la cédula, nombre y apellido de los empleados que


trabajan en el dependencia sea Almacén y la edad sea mayor 56
SELECT cedula, nombre, apellido
FROM empleado
WHERE Dependencia=‟ALMACEN‟ and edad >53;

El resultado será el siguiente:


A continuación vamos a listar los empleados cuyo nombre tenga 6 caracteres y su
apellido contenga „a‟ en cualquier parte del apellido.

Consultas con Rangos de Fechas

EL SQL permite hacer cálculos con fechas, usando meses, años y días unidos o
separados.
BETWEEN es un operador muy útil a utilizar dentro de la cláusula WHERE, para
especificar un rango de valores inclusivos. Se utiliza normalmente con fechas pero
también se puede usar con strings y con números.

Por ejemplo vamos a listar todos los jefes que han ingresado desde el año 1980
hasta el año 1983.

SELECT nombre, apellido, jefe_fi


FROM empleado
WHERE YEAR(jefe_fi) BETWEEN 1979 AND 1983;

El resultado será el siguiente:


Funciones de Columna

En el lenguaje SQL se pueden realizar algunas funciones sobre las columnas de


una tabla, dependiendo del tipo de campo con el que se hayan definido.

SQL nos permite calcular el promedio de una columna, contar filas, sumar, mostrar el valor
mínimo o máximo de una columna. A continuación vamos a realizar algunos ejemplos de
funciones de columnas.

Contar el número de empleados que trabajan en la empresa.

SELECT COUNT(ci)
FROM empleado;

El resultado será el siguiente:

Sumar el número de edades de los empleados.


SELECT SUM(edad) as Edad
FROM empleado,
El resultado será el siguiente:
Edad ->397
Calcular la edad más alta de los empleados de la empresa.

El resultado será el siguiente:


Ordenamiento de los Resultados de Consulta (Order by)

En SQL es posible obtener una consulta ordenada por medio de la cláusula


ORDER BY y especificando el nombre de la columna por la cual se desea
obtener el orden; éste puede realizarse de forma ascendente o descendente.

Ahora vamos a listar todos los empleados de la empresa por orden alfabético
de sus apellidos.

SELECT apellido,
nombre FROM
empleado
ORDER BY apellido desc;

Consultas Agrupadas (Group by)

Construyamos una consulta que nos devuelva el total de empleados por sexo. Esto
se consigue con una nueva cláusula: GROUP BY, en consecuencia debemos añadir
una cuarta pregunta a las preguntas de construcción:

¿Qué datos nos piden?


El número de empleados.

¿Dónde están los datos?


En la tabla empleados

¿Qué requisitos deben cumplir los registros?


Ninguno, necesitamos que intervengan todos los registros.

¿Cómo debemos agrupar los datos?


Por sexo.
select SEXO , count(*) as EMPLEADOS
from EMPLEADOS
group by SEXO

Resultado es:

Ejercicio.

Planteemos la siguiente cuestión: ¿cuantos perros de cada sexo hay en total


actualmente en el centro?
Para construir la consulta SQL nos ayudamos de las preguntas de construcción:
¿Qué datos nos piden?
El número de perros.
¿Dónde están los datos?
En la tabla mascotas

¿Qué requisitos deben cumplir los registros?


Deben ser perros y estar de alta en el centro.

¿Cómo debemos agrupar los datos?


Por sexo.

select SEXO,count(*) as PERROS_VIGENTES


from MASCOTAS
where ESPECIE = 'P' and ESTADO = 'A'
group by SEXO
Ejercicios con Diagramas

Consultas.
1) Se necesita un listado de toda la información de los clientes
Select * from clientes
2) Se necesita un listado de los productos con el nombre del proveedor
Select * from productos, proveedores
Where prov_id=prod_provId
3) Se necesita un listado de aquellos clientes, con su nofactura, fecha, producto y
cantidades vendidas, de aquellos clientes cuya total de venta sea mayor $100,
ordenado por el total de venta de forma descendente.
select Ventas_NroFactura as Nofactura,Ventas_Fecha as Fecha,
Prod_Descripcion as producto,VD_Cantidad as Cantidad
from clientes,ventas, ventas_detalle, productos
where Cli_Id=Ventas_CliId and
Ventas_Id=VD_VentasId and
VD_ProdId=Prod_Id AND
Ventas_Total>'100'
ORDER by Ventas_Total desc
4) Se necesita un listado del total de ventas realizado por cliente (Agrupado) y de
aquellos clientes cuya total de venta sea mayor $100, ordenado por el total de
venta de forma descendente.
select sum(Ventas_Total) as TotalVenta, Cli_RazonSocial as Cliente
from clientes,ventas, ventas_detalle, productos
where Cli_Id=Ventas_CliId and
Ventas_Id=VD_VentasId and
VD_ProdId=Prod_Id AND
Ventas_Total>'100'
group by Cli_RazonSocial
ORDER by Ventas_Total desc
Este corresponde a la gestión académica de un centro de estudios (instituto con
grupos diurnos y nocturnos, o la universidad con titulaciones que se imparten en
horarios de mañana o tarde), de forma que el alumno se matricula de asignaturas
pero indicando en cuál de los grupos definidos para la misma.

Consultas.
5) Se necesita un listado de toda la información de las aulas
6) Select * from Aulas
7) Se necesita un listado de los nombres de los profesores, títulos, área, grupos
ordenados por su título de forma ascendente.
Select nom_profesor,titulo,área,grupo
from profesores as Profesor, grupos as grupo
where profesor.id_profesor=grupo.idprofesor
order by titulo asc
8) Se necesita un listado de los nombres de los profesores, títulos, área, grupos,
facultad, pero aquellos que cumplan con créditos mayores a 2 y de forma
ordenada por su título de forma ascendente.
Select nom_profesor,titulo,área,grupo
from profesores as Profesor, grupos as grupo, asignatura,programa
where profesor.id_profesor=grupo.idprofesor
and id_asignatura=grupo.id_asignatura
and id_programa=id_curso
order by titulo asc
SUBCONSULTAS

Una subconsulta es una sentencia select que aparece

dentro de otra sentencia select que llamaremos


consulta principal.
Se puede encontrar en la lista de selección, en la
cláusula where o en la cláusula HAVING de la consulta
principal.
Cuando se ejecuta una consulta que contiene una
subconsulta, la subconsulta se ejecuta por cada fila de la
consulta principal.
Se aconseja no utilizar campos calculados en las
subconsultas suelen ser más fáciles de interpretar por el
usuario.
En esta parte me voy a centrar en las consultas anidadas
dentro de la cláusula WHERE.
Una cláusula WHERE o HAVING con las condiciones
deseadas más uno de los operadores SQL anteriores (ANY,
ALL, SOME, IN, NOT IN, EXISTS o NOT EXISTS) u
operadores de comparación como "=", ">" o "<".
La subconsulta siempre deberá devolver el mismo tipo y
número de valores a comparar: no puede haber una
subconsulta que devuelva dos columnas para una
comparación con 1 columna.
Mostrar el cliente que tiene el máximo valor del total de la
factura.
En este ejemplo se usa una subconsulta correlacionada
con un operador "exists" en la cláusula "where" para
devolver una lista de cantidades y precio de costo que
compraron el artículo "TARUGOS Nº 10":

En este ejemplo se usa una subconsulta correlacionada


con un operador "not exists" en la cláusula "where" para
devolver una lista de cantidades y precio de costo que no
adquirieron el artículo "TARUGOS Nº 10":
Vistas en MySQL
Una vista almacena varias consultas que devuelven un conjunto
de resultados, conformándose como una tabla. Las vistas
funcionan exactamente igual que las tablas, por lo que en muchas
ocasiones se hace referencia a ellas como tablas virtuales. En
este artículo vamos a ver cómo crear y utilizar vistas MySQL.
¿Qué es una vista?

Una vista es una tabla virtual generada a partir de la ejecución


de varias consultas sobre una o más tablas. Una vista tiene la
misma estructura de filas y columnas que cualquier otra tabla
MySQL, se almacenan del mismo modo y no es posible que
existan dos con el mismo nombre.

Sintaxis de una vista


CREATE [OR REPLACE] VIEW nombre_vista [lista_columnas]

AS consulta

Si observas la sintaxis verás varios apartados:

 nombre_vista: Representa el nombre de la tabla virtual


que tendrá la vista.

 lista_columnas: Es el listado de columnas que creará la


vista.

 consulta: Se trata de una consulta SELECT que nos


devolvuelven los datos que forman de la vista.

También podemos ver el modificador opcional OR REPLACE.


Cuando se crea una vista con OR REPLACE, se creará la vista si
no existe una con el mismo nombre y, si existe, se reemplazará
por ésta.
Ventajas de utilizar una vista
La mayor ventaja de utilizar vistas se obtiene en forma de rendimiento, ya que
no estaremos generando constantemente una vista si ésta ya existe. Cuanto
más complejas sean las consultas que se deben ejecutar para obtener la vista,
mayor será la ganancia de rendimiento. Por otro lado, también puede suponer
una ventaja en términos de seguridad si no queremos que los usuarios puedan
obtener datos de las tablas originales sobre las que se crea la vista.

También podemos limitar los permisos de acceso a una vista a ciertos


usuarios. Una vista, en general, puede ayudarte a construir una interfaz
simplificada y abstracta a una base de datos compleja.

Ejemplo:
Funciones en MySQL

Las funciones almacenadas de MySQL nos permiten procesar y


manipular datos de forma procedural de un modo muy
eficiente. Podrás usarlas en las sentencias SQL
independientemente del lenguaje de programación del servidor
sobre el que se ejecuten las consultas.

La sintaxis de una función almacenada es la siguiente:


CREATE FUNCTION nombre_funcion(param1, param2,…)
RETURNS datatype
[NOT] DETERMINISTIC
sentencias_sql
Cómo crear una función almacenada
Ahora que hemos configurado una base de datos y una tabla, vamos a crear
una función almacenada. Haremos una que calcule el beneficio que se
obtiene por cada producto, que se llamará calcularBeneficio. Esta función
aceptará dos parámetros, que como no podría ser de otro modo son el precio
de compra (coste) y el de venta (precio) de un producto. El resultado de la
función simplemente será la resta del precio de venta y el de compra, dando
como resultado el beneficio obtenido con su venta.

Para crear la función, ejecuta estas sentencias SQL:

Cómo usar una función almacenada

Una vez hayas creado la función, podrás usarla directamente en


cualquier consulta. A modo de ejemplo, vamos a ejecutar esta
consulta sobre la tabla productos de la base de
datos base_ejemplo:
Procedimientos almacenados
Los procedimientos almacenados y funciones son nuevas
funcionalidades de la versión de MySQL 5.0. Un procedimiento
almacenado es un conjunto de comandos SQL que pueden
almacenarse en el servidor. Una vez que se hace, los clientes no
necesitan relanzar los comandos individuales pero pueden en su lugar
referirse al procedimiento almacenado.

Algunas situaciones en que los procedimientos almacenados pueden


ser particularmente útiles:

 Cuando múltiples aplicaciones cliente se escriben en distintos lenguajes


o funcionan en distintas plataformas, pero necesitan realizar la misma
operación en la base de datos.
 Cuando la seguridad es muy importante. Los bancos, por ejemplo, usan
procedimientos almacenados para todas las operaciones comunes. Esto
proporciona un entorno seguro y consistente, y los procedimientos
pueden asegurar que cada operación se loguea apropiadamente. En tal
entorno, las aplicaciones y los usuarios no obtendrían ningún acceso
directo a las tablas de la base de datos, sólo pueden ejecutar algunos
procedimientos almacenados.
 Los procedimientos almacenados pueden mejorar el rendimiento ya que se
necesita enviar menos información entre el servidor y el cliente. El intercambio
que hay es que aumenta la carga del servidor de la base de datos ya que la
mayoría del trabajo se realiza en la parte del servidor y no en el cliente.
Considere esto si muchas máquinas cliente (como servidores Web) se sirven a
sólo uno o pocos servidores de bases de datos.
 CREATE PROCEDURE obtenerProductosPorEstado(IN
nombre_estado VARCHAR(255))
 BEGIN
 SELECT *
 FROM productos
 WHERE estado = nombre_estado;
 END$$
El nombre del estado está contenido en el

parámetro nombre_estado que hemos definido como IN.

Suponiendo que quieras obtener los productos con

estado disponible, tendrías que invocar al procedimiento

de este modo:

CALL obtenerProductosPorEstado('disponible')
Este será el resultado:

También podría gustarte