Fundamentos de base de datos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4191183/base-de-datos.jpg)
Yhoan Galeano
Web Developer
Algo de mi vida
Soy egresado del SENA, en la tecnología de ADSI del año 2011.
He trabajado en múltiples emprendimientos y he fallado muchas veces, pero agradezco hacerlo porque eso me ha enseñado muchísimo.
En este momento me encuentro emprendiendo (les confieso que he intentado mucho) con algunos amigos y visionamos que para el año 2018 estemos generando empleos formales a muchas personas
Consejo:
"No te preocupes por la vida, nadie sale vivo de ella."
Mariano Ponceliz
![](https://caritasdefieltro.files.wordpress.com/2012/12/galleta-shrek.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017480/60fc801748bd844ce50343eb7c42e99a.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017481/prt_500x500_1465315251.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017483/desarrollo-aplicaciones-web.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017482/como-crear-app-movil-2.jpg)
Ahora conozcamonos un poco
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017869/pasted-from-clipboard.png)
Actividad de socialización
- Dibujar su escudo y darle un nombre
- Dividirlo en 3 secciones (Personal, Profesional, Cultural) e identificarlas con símbolos
- Un animal que los identifique
- Contarle al compañero a su derecha el significado de su escudo, símbolos y porque se identifica con ese animal.
- El compañero lo presenta ante el grupo con su escudo y animal.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017874/pasted-from-clipboard.png)
Ejemplo
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017883/pasted-from-clipboard.png)
SQL
Bases de datos
![](https://dmsosw.files.wordpress.com/2013/08/archivo.jpg)
Conjunto finito y estructurado de datos
Conjunto de información organizada que cumple con un objetivo común.
Bases de datos
![](https://i2.wp.com/programacion.net/files/article/20151216011249_database.jpg?resize=350%2C200)
Sin embargo, hablando desde el punto de vista tecnológico, estas bases de datos deben estar almacenas de manera persistente en un medio electrónico
Tipos
- Relacionales
- No relacionales
- Orientada a objetos
- Multidimensionales
- Objeto Relacional
Sistema Gestor de Bases de datos
(SGBD)
Software que permite manipular bases de datos.
Algunos SGBD ya obsoletos
![](http://cdn1.macworld.co.uk/cmsdata/reviews/3612548/excel_icon_thumb800.jpg)
![](https://image.freepik.com/iconos-gratis/txt-archivo-de-texto-simbolo-extension_318-45317.jpg)
![](https://raw.githubusercontent.com/mastayoda/gremlin-importer/master/images/csv-file-format-extension.png)
- Redundancia de información
- Inconsistencia de datos
- Inseguridad
- Difícil acceso y mantenimiento
Algunos SGBD modernos y características
- Reutilización de datos
- Control de redundancia
- Estandarización
- Simplicidad
- Integridad (Correctos y completos)
- Seguridad y Privacidad
- Mantenimiento
- Persistencia
- Atomicidad (Fallos)
- Capacidad de Acceso
- Versatilidad en la representación de información
![](https://raw.githubusercontent.com/docker-library/docs/01c12653951b2fe592c1f93a13b4e289ada0e3a1/postgres/logo.png)
![](http://4.bp.blogspot.com/-vJROmycumKY/UjsOfxHUOuI/AAAAAAAAABw/37EJDPvZm3c/s1600/logo-oracle-large.jpg)
![](http://1.bp.blogspot.com/-EqlQEKXbpVY/UjsdWO1WE9I/AAAAAAAAACY/ga2gNarxTPc/s1600/mysql_logo.png)
![](http://programacion.net/files/article/20160105010142_sql-server.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/SQLite370.svg/1200px-SQLite370.svg.png)
![](https://viblo.asia/uploads/f968d471-6d01-4d27-b067-8212de31dfb9.png)
![](http://3.bp.blogspot.com/-Ix85v0VprM8/Uv5MYLeNESI/AAAAAAAAJMo/6byKJmT4tx0/s1600/redis318x260_1.png)
¿Que debo tener en cuenta para seleccionar alguno de estos SGBD?
¿Como seleccionar el SGBD?
![](https://raw.githubusercontent.com/docker-library/docs/01c12653951b2fe592c1f93a13b4e289ada0e3a1/postgres/logo.png)
![](http://4.bp.blogspot.com/-vJROmycumKY/UjsOfxHUOuI/AAAAAAAAABw/37EJDPvZm3c/s1600/logo-oracle-large.jpg)
![](http://1.bp.blogspot.com/-EqlQEKXbpVY/UjsdWO1WE9I/AAAAAAAAACY/ga2gNarxTPc/s1600/mysql_logo.png)
![](http://programacion.net/files/article/20160105010142_sql-server.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/SQLite370.svg/1200px-SQLite370.svg.png)
![](https://viblo.asia/uploads/f968d471-6d01-4d27-b067-8212de31dfb9.png)
![](http://3.bp.blogspot.com/-Ix85v0VprM8/Uv5MYLeNESI/AAAAAAAAJMo/6byKJmT4tx0/s1600/redis318x260_1.png)
Factores No Técnicos
- Costo del Software (Licencias)
- Costo del Hardware
- Costo del Mantenimiento
- Costos del personal (DBA)
Factores Técnicos
- Fiabilidad
- Recuperación - Fallos
- Seguridad
- Capacidad
- Herramientas
¿Como esta compuesta una base de datos?
Objetos en una base de datos
- Tablas
- Vistas
- Procedimientos Almacenados
- Funciones
- Triggers
- Usuarios
- Roles
Tablas
Las bases de datos contienen cientos o miles de tablas y cada tabla se compone de filas y columnas.
Juan | Perez | M | 21 |
Maria | Castañeda | F | 25 |
Diana | Lopez | M | 14 |
Nombre | Apellido | Genero | Edad |
---|
Juan | Perez | M | 21 |
Maria | Castañeda | F | 25 |
Diana | Lopez | M | 14 |
Nombre | Apellido | Género | Edad |
---|
Fila o registro |
---|
Columna
Nombre columna
Dato
Celda
Cada columna puede tener un tipo de dato diferente de las demás.
SQL
Structured Query Language
Lenguaje de interacción con bases de datos que permite...
- Añadir
- Borrar
- Recuperar
- Editar
- Organizar
- Proteger
...información en una base de datos.
SQL no pertenece a un único SGBD, cada uno de ellos realiza una extensión del mismo.
![](http://inbigisland.com/wp-content/uploads/2014/07/Dontforget.png)
T-SQL
También conocido como Transact Sql, es una extensión de Sql aplicado al SGBD de MIcrosoft.
PL/SQL
Es una extensión de Sql aplicado al SGBD de Oracle.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4191185/oracle-logo.png)
PLPG-SQL
Es una extensión de SQL aplicado al SGBD de PostgreSQL.
![](http://evilnapsis.com/wp-content/uploads/2016/02/postgresql.png)
¿Cuales son las fases para diseñar una base de datos?
Fases del diseño de las bases de datos
- Diseño conceptual
- Diseño Lógico
- Diseño Físico
Diseño Conceptual
Modelo Entidad Relación - MER
Diseño Lógico
Modelo Relacional - MR
![](http://2.bp.blogspot.com/-C2I6PRxnxlo/TjW5D7fJY9I/AAAAAAAAADQ/_0mH9CaDfTQ/s1600/modelo%255B3%255D.jpg)
Diseño Físico
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4214303/pasted-from-clipboard.png)
DDL, DML, DCL, TCL
Para comenzar, vamos a identificar la importancia de estas fases del diseño para ser DBAS
Paso 1
Crear el diseño conceptual
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4214339/er.png)
Paso 2
Traducimos el diseño conceptual (MER) en un diseño lógico (MR)
Traducción del MER al MR
Entidades, Atributos Simples
Relaciones y Atributos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017857/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017858/pasted-from-clipboard.png)
Traducción del MER al MR
Entidades, Atributos Opcionales
Relaciones y Atributos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017859/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017860/pasted-from-clipboard.png)
Traducción del MER al MR
Entidades, Atributos Compuestos
Relaciones y Atributos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017852/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017853/pasted-from-clipboard.png)
Traducción del MER al MR
Entidades, Atributos Multivaluados
Relaciones y Atributos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017854/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017861/pasted-from-clipboard.png)
Traducción del MER al MR
Entidades, Atributos Multivaluados, Claves Primarias y Claves Foráneas
Relaciones y Atributos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017863/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017864/pasted-from-clipboard.png)
Cardinalidad
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017893/pasted-from-clipboard.png)
Cardinalidad
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017894/pasted-from-clipboard.png)
Cardinalidad
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017895/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017897/pasted-from-clipboard.png)
Pero...
Para que este proceso sea exitoso, debemos tener en cuenta unos conceptos muy importantes.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4206056/m01fsb.jpg)
Normalización
La normalización de bases de datos es un proceso que consiste en designar y aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional. Las bases de datos relacionales se normalizan para: Evitar la redundancia de los datos.
Ventajas de la normalización
- Las actualizaciones se consiguen realizar con un número mínimo de operaciones (mejorando la eficiencia de la base de datos y reduciendo la posibilidad de que aparezcan inconsistencias)
- Se reduce al mínimo el espacio de almacenamiento necesario para la base de datos (reduciendo los costes de operaciones en base de datos)
- Las relaciones realizadas con las correctas formas normales permiten que la integridad de los datos no se vea afectada.
Actividad por grupos
- Normalización y características, términos, clave primaria, clave foránea o secundaria
- Reglas de CODD 0-6
- Reglas de CODD 7-12
- Formas normales 1-3
- Formas normales FNBC - 4
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4214377/141ea5b66d650576a7f6d2418bcf15e4.jpg)
Hagamos un ejercicio
Se requiere un sistema de información que permita gestionar la información de los Arriendos/Alquileres de las viviendas.
Este sistema debe contener la información del propietario de la(s) vivienda(s) y la información que se debe contemplar para dicho propietario es: identificación, nombre completo, teléfonos de contacto y opcionalmente el correo electrónico. La(s) vivienda(s) deben tener la información de: código de la vivienda, dirección, la cual está compuesta por: calle y número, la vivienda debe tener además una descripción y la cantidad de habitantes. Cada vivienda se encuentra ubicada en una ciudad y dicha ciudad pertenece a un departamento/estado. Se debe tener la información de los arriendos/alquileres los cuales tendrán la información de: fecha de inicio, fecha de fin, valor mensual. Y también se requiere conocer la información del (los) inquilino(s), la información de este debe ser: identificación, nombre completo y teléfonos.
Ahora si...
... Podemos pasar a nuestro diseño físico mas tranquilos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4214384/thumbs-up-gif.gif)
Paso 3
Crear nuestro diseño físico
Tipos de sentencias SQL
Data Definition Language
Definen la estructura de la base de datos.
![](http://blog.encorebusiness.com/wp-content/uploads/2014/08/Lock-Key-Security.png)
Data Control Language
Definen el acceso y permisos de la base de datos.
![](https://americanredcross.github.io/Guides/CaerusGeo/img/icon_paper.png)
Data Manipulation Language
Definen los datos contenidos en la base de datos.
DDL
DCL
DML
Transaction Control Language
Controlan las transacciones hechas a la base de datos
TCL
DDL
Crear, modificar o eliminar objetos.
- CREATE
- ALTER
- DROP
DCL
Controla y administra quien accede a los objetos de la base de datos.
- GRANT
- REVOKE
DML
Obtener, agregar, modificar o eliminar información contenida en los objetos de la base de datos.
- SELECT
- INSERT
- UPDATE
- DELETE
Estas sentencias pueden ser filtradas por la clausula WHERE
TCL
Administra las transacciones hechas a objetos en la base de datos.
- BEGIN TRANSACTION
- COMMIT TRANSACTION
- ROLLBACK TRANSACTION
DDL
CREATE DATABASE nombre_base de datos
CREATE DATABASE TiendaDiscoStu;
Crea nuevos objetos en la base de datos.
CREATE
CREATE
DDL
CREATE TABLE nombre_tabla
(
nombre_columna1 tipo_de_dato(tamaño),
nombre_columna2 tipo_de_dato(tamaño),
nombre_columna2 tipo_de_dato(tamaño),
....
);
CREATE
DDL
ALTER TABLE nombre_tabla
ALTER|ADD|DROP OBJETO nombre_columna tipo_de_dato (tamaño)
Altera la estructura de objetos en la base de datos.
CREATE
ALTER
ALTER
DDL
DROP TABLE nombre_tabla
Elimina objetos en la base de datos.
CREATE
ALTER
DROP
DROP
CREATE
ALTER
DROP
DDL
GRANT PRIVILIGIES (Ejm: INSERT | UPDATE | DELETE | SELECT ) ON nombre_objeto
TO nombre_usuario
Permite a usuarios leer/escribir sobre los objetos de la base de datos.
GRANT
DCL
GRANT
CREATE
ALTER
DROP
DDL
REVOKE PRIVILIGIES ON nombre_objeto TO nombre_usuario
Niega a usuarios leer/escribir sobre los objetos de la base de datos.
GRANT
REVOKE
DCL
REVOKE
CREATE
ALTER
DROP
DDL
SELECT nombre_columna1, nombre_columna2, nombre_columna3 FROM nombre_tabla
SELECT nombres, apellidos, genero FROM artistas;
Obtiene la información de un objeto en la base de datos.
GRANT
REVOKE
DCL
SELECT
DML
SELECT
Usando "*" para traer todas las columnas
SELECT * FROM artistas;
CREATE
ALTER
DROP
DDL
SELECT nombre_columna1, nombre_columna2, nombre_columna3 FROM nombre_tabla WHERE nombre_columna2 [Operador de Comparación] valor2
SELECT nombres, apellidos, genero
FROM artistas
WHERE genero = 'Rock';
GRANT
REVOKE
DCL
SELECT
DML
Usando WHERE
CREATE
ALTER
DROP
DDL
INSERT INTO nombre_tabla
VALUES (valor1,valor2, valor3,...)
INSERT INTO artistas
VALUES(1018456789,'Chayan Emilio','Lopez',
'El chayan',3000,'Romantico');
Inserta información en un objeto en la base de datos.
GRANT
REVOKE
DCL
SELECT
INSERT
DML
INSERT
CREATE
ALTER
DROP
DDL
UPDATE nombre_tabla SET nombre_columna1 [Operador de Asignación] valor1
UPDATE artistas SET sueldo = 200;
Actualiza la información de un objeto en la base de datos.
GRANT
REVOKE
DCL
SELECT
INSERT
UPDATE
DML
UPDATE
CREATE
ALTER
DROP
DDL
UPDATE nombre_tabla SET nombre_columna1 [Operador de Asignación] valor1 WHERE nombre_columna2 [Operador de Comparación] valor2
UPDATE artistas SET sueldo = 200
WHERE genero = 'Reggaeton';
GRANT
REVOKE
DCL
DML
Usando WHERE
SELECT
INSERT
UPDATE
CREATE
ALTER
DROP
DDL
DELETE FROM nombre_tabla
DELETE FROM artistas;
Borra información de un objeto en la base de datos.
GRANT
REVOKE
DCL
SELECT
INSERT
UPDATE
DELETE
DML
DELETE
CREATE
ALTER
DROP
DDL
DELETE FROM nombre_tabla WHERE nombre_columna2 [Operador Comparativo] valor2
DELETE FROM artistas
WHERE nombre_artistico = 'Trigresa del oriente';
GRANT
REVOKE
DCL
DML
Usando WHERE
SELECT
INSERT
UPDATE
DELETE
Tipos de datos
Numericos exactos
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017903/pasted-from-clipboard.png)
Fecha y hora
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017904/pasted-from-clipboard.png)
Cadenas de caracteres
![](https://s3.amazonaws.com/media-p.slid.es/uploads/282655/images/4017905/pasted-from-clipboard.png)
Entre otros.
Operadores (PLPG-SQL)
- Aritméticos
- Lógicos
- De asignación
- De comparación
Entre otros.
Aritméticos
Operador | Significado |
---|---|
+ | Suma |
- | Resta |
* | Multiplicación |
/ | División |
% | Módulo o resíduo |
Lógicos
Operador | Significado |
---|---|
AND | TRUE si ambas expresiones booleanas son TRUE. |
BETWEEN | TRUE si el operando está dentro de un intervalo. |
IN | TRUE si el operando es igual a uno de la lista de expresiones. |
LIKE | TRUE si el operando coincide con un patrón. |
NOT | Invierte el valor de cualquier otro operador booleano. |
OR | TRUE si cualquiera de las dos expresiones booleanas es TRUE. |
Los más usados
De asignación
El signo igual (=) es el único operador de asignación de Transact-SQL.
=
De comparación
Operador | Significado |
---|---|
= | Igual a |
> | Mayor que |
< | Menor que |
>= | Mayor o igual que |
<= | Menor o igual que |
<> O != | No es igual a, Diferente de |
Funciones integradas (PLPG-SQL)
- De agregado
- De conversión
- De Fecha y hora
- Matemáticas
- De cadena
Funciones integradas que proporcionan ayuda para trabajar con la información de la base de datos.
(Las más usadas)
De agregado
Función | Descripción | Uso |
---|---|---|
AVG(nombre_columna) | Devuelve el promedio de los valores de un grupo. Se omiten los valores NULL. | SELECT AVG(monto) FROM Ventas |
MIN(nombre_columna) | Devuelve el valor mínimo de la expresión | SELECT MIN(TasaImpuesto) Ventas; |
COUNT(nombre_columna) | Devuelve el número de elementos de un grupo | SELECT COUNT(DISTINCT Nombre) FROM Empleados; |
MAX(nombre_columna) | Devuelve el valor máximo de la expresión | SELECT MAX(TasaImpuesto) FROM Ventas; |
SUM(nombre_columna) | Devuelve la suma de todos los valores o solo de los valores DISTINCT de la expresión | SELECT SUM(Total) FROM Ventas; |
(Las más usadas)
De conversión
Función | Descripción | Uso |
---|---|---|
CAST(expresión AS tipo_dato) | Convierte una expresión de un tipo de datos en otro | SELECT CAST(236 AS nvarchar); |
(Las más usadas)
De fecha y hora
Función | Descripción | Uso |
---|---|---|
NOW() | Devuelve un valor datetime que contiene la fecha y hora del equipo en el que la instancia de SQL Server se está ejecutando. El ajuste de zona horaria no está incluido. | SELECT NOW(); |
DATE_PART(Parte, Expresión) | Devuelve la parte especificada de una expresión (fecha). | SELECT date_part('year',TIMESTAMP '2017-01-01'); |
(Las más usadas)
Matemáticas
Función | Descripción | Uso |
---|---|---|
SQRT(dato) | Devuelve la raíz cuadrada del valor de tipo flotante especificado | SELECT SQRT(9); |
CEILING(dato) | Devuelve un valor numérico, redondeado a la longitud o precisión especificadas | SELECT CEILING(12.34) |
POWER(dato,potencia) | Devuelve el valor de la expresión especificada elevado a la potencia especificada. | SELECT POWER(2,3); |
(Las más usadas)
De cadena
Función | Descripción | Uso |
---|---|---|
CONCAT(cadena1,cadena2,...) | Devuelve una cadena que es el resultado de concatenar dos o más valores de cadena | SELECT CONCAT('Hola','que','tal'); |
SUBSTRING(cadena,indice_inicio,numero_indices_desplazamiento) | Devuelve parte de una expresión de caracteres, binaria, de texto o de imagen en SQL Server. | SELECT SUBSTRING('abcdef', 2, 3); |
REPLACE(dato,valor_a_reemplazar,valor_reemplazo) | Reemplaza todas las instancias de un valor de cadena especificado por otro valor de cadena. | SELECT REPLACE('primer texto','primer','reemplazado'); |
LENGTH(cadena) | Devuelve el número de caracteres de la expresión de cadena especificada, excluidos los espacios en blanco finales | SELECT LENGTH('Texto de prueba'); |
(Las más usadas)
De cadena
Función | Descripción | Uso |
---|---|---|
UPPER(cadena) | Devuelve una expresión de caracteres convertidos a mayúsculas | SELECT UPPER('Pedro'); |
LOWER(cadena) | Devuelve una expresión de caracteres convertidos a minúsculas | SELECT LOWER('Juan'); |
RTRIM(cadena) | Remueve los espacios en blanco al final de una cadena | SELECT RTRIM('Buenos días '); |
LTRIM(cadena) | Remueve los espacios en blanco al principio de una cadena | SELECT LTRIM(' buenas tardes'); |
(Las más usadas)
SELECT nombre_columna1, nombre_columna_2 FROM nombre_tabla LIMIT numero_filas
SELECT * FROM Artistas LIMIT 8;
Clausula LIMIT
SELECT nombre_columna1 AS 'nombre_alias1',nombre_columna2 AS 'nombre_alias2' FROM nombre_tabla
SELECT genero AS 'Genero Artistico'
FROM artistas;
ALIAS
Son palabras que pueden reemplazar el nombre de columnas o tablas en una consulta sin alterar su estructura como tal.
SELECT nombre_columna1 ,nombre_columna2 FROM nombre_tabla WHERE nombre_columna1 IN (consulta_select)
SELECT * FROM artistas
WHERE Pais IN
(SELECT NombrePais FROM Paises
WHERE Continente = 'América');
SUBCONSULTAS
Consultas anidadas en otras consultas.
Se pueden incluir en:
- SELECT
- FROM
- WHERE
SELECT nombre_columna1 ,nombre_columna2 FROM nombre_tabla WHERE nombre_columna1 ORDER BY nombre_columna
SELECT * FROM artistas
WHERE genero = 'Jazz'
ORDER BY FechaEntrada;
ORDER BY
Ordenar datos dentro de una cláusula SELECT, puede tener las siguientes variaciones:
- ASC
- DESC
SELECT funcion_agregado FROM nombre_tabla WHERE nombre_columna1 GROUP BY nombre_columna_agrupar
SELECT count(*) FROM
artistas
GROUP BY genero
GROUP BY
Agrupar datos dentro de una cláusula SELECT que contenga una función de agregado.
nombre_columna PRIMARY KEY,
id INT PRIMARY KEY,
LLaves primarias
Campo o combinación de campos que identifica de forma única a cada fila de una tabla.
Incluida dentro de la sentencia CREATE de una tabla.
ALTER TABLE artistas WITH CHECK ADD
CONSTRAINT FK_GENERO FOREIGN KEY (GENERO_ID)
REFERENCES Generos (ID)
LLaves foráneas
Identifican una columna o grupo de columnas en una tabla que se refiere a una columna o grupo de columnas en otra tabla.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/366432/images/2153896/visual_sql_joins_orig.jpg)
Fundamentos de programación - SQL - Especialización
By Yhoan Andres Galeano Urrea
Fundamentos de programación - SQL - Especialización
Fundamentos de SQL
- 1,962