Es un campo (o combinación de campos) que identifica de manera única cada registro en una tabla.
Nos asegura una integridad de los datos y evita la duplicación o inconsistencia de ellos.
Debe ser única.
No puede contener valores nulos.
Solo existe una PK por tabla
CREATETABLEestudiantes (
id_estudiante INTEGERPRIMARY KEY AUTOINCREMENT,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
edad INTEGERNOT NULL,
correo VARCHAR(255) NOT NULL,
telefono VARCHAR(50) NOT NULL,
direccion VARCHAR(255) NOT NULL,
);
Clave Foránea (FK)
Establece una relación entre dos tablas en una base de datos.
La clave foránea en una tabla hace referencia a la clave primaria de otra tabla, creando así una relación entre ellas.
Garantiza la integridad referencial, lo que significa que no se pueden agregar registros que hagan referencia a valores inexistentes en la tabla relacionada.
Puede haber múltiples claves foráneas en una tabla, y pueden apuntar a la misma tabla o a diferentes tablas
Un registro en una tabla se relaciona con exactamente un registro en otra tabla, y viceversa.
Se utiliza cuando la información en una tabla está estrechamente vinculada a otra tabla y cada registro tiene una correspondencia única en la otra tabla.
La establecemos mediante la inclusión de la clave primaria de una tabla como clave foránea en la otra tabla
CREATETABLEusers (
id INTPRIMARY KEY,
nameVARCHAR(50),
email VARCHAR(50),
passwordVARCHAR(50)
);
CREATETABLEprofiles (
id INTPRIMARY KEY,
bio VARCHAR(50),
photo VARCHAR(50),
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
Relación Uno a Muchos (One-to-Many)
Un registro en una tabla se relaciona con varios registros en otra tabla.
Cada registro en la segunda tabla solo se relaciona con un registro en la primera tabla.
Se establece colocando la clave primaria de la tabla “uno” como clave foránea en la tabla “muchos”.
CREATETABLEusers (
id INTPRIMARY KEY,
nameVARCHAR(50),
email VARCHAR(50),
passwordVARCHAR(50)
);
CREATETABLEposts (
id INTPRIMARY KEY,
title VARCHAR(50),
body VARCHAR(50),
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
Relación Muchos a Muchos (Many-to-Many)
Varios registros en una tabla pueden relacionarse con varios registros en otra tabla.
Para representar esta relación, se requiere una tabla adicional, conocida como tabla de unión o tabla de enlace, que vincula las dos tablas principales.
La tabla de enlace contiene las claves primarias de ambas tablas y puede contener atributos adicionales relacionados con la relación.
Nota: La forma vista para crear una relación many to many se denomina forma explícita. Existe también la forma implícita o cascada
CREATETABLEusers (
id INTPRIMARY KEY,
nameVARCHAR(50),
email VARCHAR(50),
passwordVARCHAR(50)
);
CREATETABLEroles (
id INTPRIMARY KEY,
nameVARCHAR(50)
);
CREATETABLEuser_roles (
user_id INT,
role_id INT,
PRIMARY KEY (user_id, role_id),
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (role_id) REFERENCES roles(id)
);
JOIN
INNER JOIN: Devuelve solo los registros que tienen coincidencias en ambas tablas.
LEFT JOIN: Devuelve todos los registros de la tabla izquierda y los registros coincidentes de la tabla derecha. Si no hay coincidencias, se devuelven valores NULL para los campos de la tabla derecha.
RIGHT JOIN: Devuelve todos los registros de la tabla derecha y los registros coincidentes de la tabla izquierda. Si no hay coincidencias, se devuelven valores NULL para los campos de la tabla izquierda.
FULL JOIN: Devuelve todos los registros de ambas tablas, coincidentes o no. Si no hay coincidencias, se devuelven valores NULL para los campos no coincidentes.
Funciones
AGGREGATE:
COUNT(*): devuelve el número de filas que coinciden con un criterio específico.
AVG(column): devuelve el valor promedio de una columna numérica.
SUM(column): devuelve la suma total de una columna numérica.
MAX(column): devuelve el valor más grande de la columna seleccionada.
MIN(column): devuelve el valor más pequeño de la columna seleccionada.
STRING:
CONCAT(exp1, exp2): concatena dos o más expresiones juntas.
LENGTH(string): devuelve la longitud de la cadena.
UPPER(string): devuelve la misma cadena en mayúscula.
LOWER(string): devuelve la misma cadena en minúscula.
NUMERIC:
RANDOM(): devuelve un número aleatorio entre 0 y 1.
ROUND(number, decimals): devuelve el número decimal de entrada redondeado a la posición decimal definida más cercana.
FLOOR(number): devuelve el número decimal de entrada redondeado hacia abajo.
CEIL(number): devuelve el número decimal de entrada redondeado hacia arriba.
DATE:
EXTRACT(field from columna): recupera un campo como un año, mes y día a partir de un valor de fecha/hora.