240625 - Implementación de BdD
Clase
Práctica
- Apunte de DML es el capítulo 5 (no el 4)
Código sql
-- Describe los tipos de las columnas en la tabla
describe agencia_personal.empresas;
-- Muestra los datos de la tabla
select *
from empresas;
-- -- Práctica 1
-- Mostrar la estructura de la tabla Empresas. Seleccionar toda al info de la misma
describe empresas;
select *
from empresas;
-- Select distinct = Selección, seguida de una proyección (se come los registros repetidos)
select distinct anio_contrato, mes_contrato
from comisiones
order by anio_contrato, mes_contrato;
-- Acá no hay repetidos, no hace falta el distict
select nro_contrato, anio_contrato, mes_contrato
from comisiones
order by anio_contrato, mes_contrato;
-- Usamos el ordenamiento (asc)endente y (desc)endente
-- Podemos renombrar el display de las columnas con el AS o con las comillas
select nro_contrato as ID_Contrato, anio_contrato "Año de contratación", mes_contrato "Mes de contratación", importe_comision * 1.10 as "10% Aumento"
from comisiones
order by nro_contrato asc, anio_contrato asc, mes_contrato desc;
-- Filtramos con WHERE y los operadores lógicos
select nro_contrato as ID_Contrato, anio_contrato "Año de contratación", mes_contrato "Mes de contratación", importe_comision * 1.10 as "10% Aumento"
from comisiones
where nro_contrato >= 1 and nro_contrato <=4
order by nro_contrato asc, anio_contrato asc, mes_contrato desc;
-- Filtramos una forma más fancy de hacer el where (el between) y lo podemos negar
select nro_contrato as ID_Contrato, anio_contrato "Año de contratación", mes_contrato "Mes de contratación", importe_comision * 1.10 as "10% Aumento"
from comisiones
where nro_contrato not between 1 and 4
order by nro_contrato asc, anio_contrato asc, mes_contrato desc;
-- Podemos chequear por valores puntuales
select nro_contrato as ID_Contrato, anio_contrato "Año de contratación", mes_contrato "Mes de contratación", importe_comision * 1.10 as "10% Aumento"
from comisiones
where nro_contrato in(1,2,5)
order by nro_contrato asc, anio_contrato asc, mes_contrato desc;
-- Seleccionar clientes
-- "Like" matchea los strings: el % actúa como wildcard, el _ actúa como wildcard para 1 char.
-- En regex: '%' equivale a /*/, '_' equivale a /./
select nombre, apellido
from personas
where apellido like "g%"
order by apellido, nombre;
select nombre, apellido
from personas
where nombre like "juan%"
order by apellido, nombre;
select nombre, apellido
from personas
where nombre like "stefania";
select *
from comisiones
where fecha_pago is Null;
-- --Funciones
-- Concatenar
select concat(apellido, ", ", nombre) as "Nombre completo"
from personas;
-- ifNull
select nro_contrato, anio_contrato, mes_contrato, ifnull(fecha_pago, "Sin pago")
from comisiones
Teoría: DDL
- SQL tiene varios sub-lenguajes a los que pertenecen los comandos:
- DDL: Definición de datos
- @ Usado por el DBA para plasmar el modelo
- Vimos
create
,drop
- Tambien está
alter
(modifica tabla),truncate
(borra una tabla y la recrea) - Tiene impacto sobre el diccionario de datos, A.K.A information schema
- DML: Manipulación de datos
- @ Usado por el usuario
- Vimos
select
,insert
,delete
,update
- DCL: Administración de seguridad
- @ Usado por el DBA
- TCL: Manejo de transacciones
- @ Usado por el usuario
- DDL: Definición de datos
- SQL es un lenguaje declarativo: Le decimos qué hacer, pero no cómo
DER Ferretería
- Cuando creo una FK creo integridad referencial
- FK Restriction:
- ! Nunca usar cascade on delete
- Generalmente: cascade on update, restrict on delete
Tipos de datos
- Decimal vs float
- Para hacer cálculos: usar decimal, necesita que se le especifique la cantidad de dígitos y de puntos decimales
- Para gráficas, usar float
- Fechas
- Usar date.
- Usar datetime sin paréntesis
- Siempre hay DDL en los parcialitos
Ejercicios / Ejemplos / Tarea
- Hacer DER de Agencia de Personal
Hoja de práctica
![[]]