[Manual] SQL
[Manual] SQL
To get the AVG, MAX, MIN, and COUNT for each movie in the database.
SELECT MovieId,
COUNT(*)
AVG(Score)
MAX(Score)
MIN (Score)
FROM Review
GROUP BY MovieId;
SELECT continent,
COUNT(country)
FROM countries
GROUP BY continent;
We can also use operators in conjunction with other statements to extract valuable
information.
To list the movies with average score greater than 7.0.
HAVING filter results, like WHERE does, but they are used in different ways:
WHERE set conditions on a field, whereas HAVING sets conditions on groupings.
SELECT MovieId,
COUNT(*)
AVG(Score)
MAX(Score)
MIN(Score)
FROM Review
GROUP BY MovieId
HAVING AVG(Score) > 7.0
ORDER BY AVG(Score) DESC;
We can also use the Alias keyword to adjust the column titles in the output so that they are
more representative of the data; aliases are designated by the AS keyword.
SELECT MovieId,
COUNT(*) AS Number_of_reviews,
AVG(Score) AS Average_Score,
MAX(Score) AS Max_Score
MIN(Score) AS Min_Score
FROM Review
GROUP BY MovieId
HAVING Average_Score < 8.0
ORDER BY Average_Score DESC;
No todos los datos necesarios para realizar un análisis están contenidos en una sola
tabla, por lo que es necesario combinar datos relacionados de varias tablas.
Para determinar los datos necesarios y en que formato existen se debe comprender el
esquema de la base de datos, el cual, es la definición de cómo se organizan los datos
dentro de la estructura de las tablas dentro de una base de datos.
Tabla: Organización de datos en un formato de filas y columnas similar a una hoja de
cálculo. Cada fila representa un registro único y cada columna un campo dentro del
registro.
Campo: Atributo específico de un registro individual. Los nombres de los campos se
presentan por los encabezados de las columnas de la tabla.
Registro: Casa una de las filas de una tabla. Es una colección de atributos que
pertenecen a un ítem.
También define las claves de registro, las relaciones que existen entre las tablas y los
tipos de datos de los campos dentro de cada tabla.
Keys
La clave principal es un atributo único para cada registro. Cuando tenemos una
columna en una tabla que usa la clave principal de otra taba para apuntar a ese registro
específico se denomina clave externa.
Clave principal (PK)
Un campo (columna) en una tabla que contiene identificadores únicos para cada registro
dentro de la tabla. Combinación de varias columnas (ID20230831C) que hacen que una
fila sea única en una tabla.
Clave externa (FK)
Una columna o una combinación de columnas en una tabla que corresponde a la clave
principal en otra tabla.
Relaciones de bases de datos
Ejemplo: Una película puede tener múltiples filas de Ingreso Bruto correspondientes a los
diferentes meses, y una fila de Ingreso Bruto puede tener múltiples filas de Ingreso Bruto
País en el mismo mes. Eso se denomina una relación de uno a muchos. En cambio, una
película puede tener muchos actores y un actor puede estar en muchas películas, por lo
que, la relación es de muchos a muchos. Una película se puede financiar con un solo
préstamo y un este solo se puede aplicar a una película, lo que se denomina una relación
uno a uno.
Uno a muchos: Una relación entre entidades (registros) donde un registro de una tabla
se relaciona con varios registros de la segunda tabla. Por el contrario, un registro de la
segunda tabla solo puede estar relacionado con un registro de la primera tabla.
Uno a uno: Una relación entre entidades donde un registro en una tabla solo se relaciona
con un único registro en la segunda tabla y viceversa.
Muchos a muchos: Una relación entre entidades donde varios registros de una taba se
relacionan con varios registros de otra tabla.
Tipos de datos
En la base de datos, describen el formato de los datos contenidos en una columna.
CHAR (size): Abreviatura de “tamaño de carácter”. Una cadena de caracteres de longitud
fija (basada en la base de datos) que puede contener números, letras o caracteres
especiales en cualquier combinación. La longitud máxima suele ser de 255 caracteres.
VARCHAR (size): Abreviatura de “tamaño de carácter variable”. Una cadena de
caracteres de longitud variable que puede contener números, letras o caracteres
especiales hasta una longitud máxima.
TEXT: Una cadena que normalmente se usa para manejar contenido de texto de formato
largo.
INT: Abreviatura de “entero”. Un campo numérico que sólo puede contener números
enteros positivos o negativos.
DECIMAL: Un campo numérico que contiene un número exacto de coma fija o un número
decimal.
FLOAT: Un campo numérico que contiene un número de punto flotante.
DATETIME: Una combinación de fecha y hora que viene en muchos formatos
estandarizados. Formato de ejemplo: AAAA-MM-DD hh:mm:ss
Existe una relación de uno a muchos entre las dos tablas porque un conductor puede
tener muchas órdenes, pero una orden solo puede tener un controlador.
ON: Define los atributos a unir a las tablas. Si la clave foránea está formada por más de
un atributo, será necesario definir más de una condición de union. Por ejemplo, en la tabla
Gross_Income, el PK está formado por 3 atributos, para unirlo a la tabla
Gross_Income_Country se utiliza la cláusula ON:
SELECT gi.movieId, gi.year, gi.month, gic.Country, gic.Amount
FROM Gross_Income AS gi
JOIN Movie AS m
ON m.movieId = gi.movieId
JOIN Gross_Income_Country AS gic
ON gi.movieId = gic.movieId AND gi.year = gic.year AND gi.month = gic.month
Habitualmente se utilizan claves primarias y claves externas para unir las tablas, aunque,
se puede utilizan cualquier columna que contenga el mismo tipo de datos para realizar la
union entre tablas.
Tipos de uniones
La sintaxis de la declaración JOIN depende del tipo de union que se solicita.
Ejemplo:
SELECT bike_sales.Trans_ID, bike_sales.Model, bike_sales.Sale_Price,
bike_models.Cost
FROM bike_sales
INNER JOIN bike_models
ON bike_sales.Model = bike_models.Model;
Externa completa: FULL OUTER JOIN
Devuelve todas las filas de ambas tablas. Si la condición de unión no se cumple para
algunos valores, se reemplazan con un valor NULL en la salida.
Ejemplo:
SELECT bike_sales.Trans_ID, bike_sales.Model, bike_sales.Sale_Price,
bike_models.Cost
FROM bike_sales
FULL JOIN bike_models
ON bike_sales.Model = bike_models.Model;
Externa derecha: RIGTH JOIN
Devuelve todos los registros de la tabla derecha y solo los registros coincidentes de la
tabla izquierda.
Ejemplo:
SELECT bike_sales.Trans_ID, bike_sales.Model, bike_sales.Sale_Price,
bike_models.Cost
FROM bike_sales
RIGTH JOIN bike_models
ON bike_sales.Model = bike_models.Model;
Externa izquierda: LEFT JOIN
Devuelve todos los registros de la tabla de la izquierda y solo los registros coincidentes de
la tabla derecha.
Ejemplo:
SELECT bike_sales.Trans_ID, bike_sales.Model, bike_sales.Sale_Price,
bike_models.Cost
FROM bike_sales
LEFT JOIN bike_models
ON bike_sales.Model = bike_models.Model;
Uniones Naturales
Ocurren cuando hay una columna o columnas que existen en ambas tablas con
exactamente el mismo nombre de campo y tipo de datos, sin necesidad de que los
campos sean claves primarias o externas en ninguna de las tablas.
NATURAL JOIN: Fusión de dos tablas con base en campos comunes que existen en
ambas tablas. A diferencia de la expresión INNER JOIN que puede tener columnas
duplicadas, solo incluye una instancia de las columnas comunes. Se recomienda utilizar
INNER JOIN definiendo los atributos a utilizar para unir ambas tablas.
Ejemplo:
SELECT bike_sales.Trans_ID, bike_sales.Model, bike_sales.Sale_Price,
bike_models.Cost
FROM bike_sales
NATURAL JOIN bike_models
Funciones de gestión de SQL: Administración de bases de datos.
Lenguaje de manipulación de datos (DML)
INSERT: Agregar un registro de datos a una tabla existente.
DELETE: Elimina datos de una tabla.
UPDATE: Modifica un registro de datos existente.
SET: Se utiliza con UPDATE para especificar que actualizar.
LOCK: Bloquea una tabla.
Ejemplo:
INSERT into Movie
VALUES (3456, ‘The Godfather’, 1932);