2. Fundamentos de SQL

Contenido

1. Creaci贸n de una Base de Datos

Antes de empezar a almacenar datos en una Base de Datos, primero necesitamos crear la estructura adecuada para organizar esos datos. Esto implica crear la Base de Datos en s铆 misma y luego definir las tablas que contendr谩n la informaci贸n. A continuaci贸n, te explico c贸mo se hace esto utilizando SQL.

1.1 Creaci贸n de una Base de Datos con CREATE DATABASE

Aunque en Oracle la creaci贸n de una base de datos normalmente se realiza a trav茅s de herramientas especializadas como Oracle Database Configuration Assistant (DBCA), puedo mostrarte un ejemplo hipot茅tico de c贸mo ser铆a la sintaxis del comando `CREATE DATABASE` en Oracle SQL.

Para crear una nueva Base de Datos, utilizamos la sentencia `CREATE DATABASE`. Esto le indica al sistema de gesti贸n de bases de datos (DBMS) que queremos crear un nuevo contenedor para nuestras tablas y otros objetos de la Base de Datos.

Ejemplo1 : Sintaxis b谩sica

				
					CREATE DATABASE MiBaseDeDatos;

				
			

Esta sentencia crea una nueva Base de Datos llamada 芦MiBaseDeDatos芦. La mayor铆a de las veces, la creaci贸n de una nueva base de datos en Oracle se realiza mediante herramientas espec铆ficas de administraci贸n de bases de datos, como Oracle Database Configuration Assistant (DBCA), que proporcionan una interfaz gr谩fica o comandos espec铆ficos para guiar a trav茅s del proceso de creaci贸n de la base de datos de manera m谩s controlada y segura.

Ejemplo 2 :

				
					CREATE DATABASE MiBaseDeDatos
USER SYS IDENTIFIED BY sys_password --Creaci贸n usuario SYS
USER SYSTEM IDENTIFIED BY system_password --Creaci贸n usuario SYSTEM
				
			

En este ejemplo:

  • Se crea una nueva base de datos llamada `MiBaseDeDatos`.
  • Se establecen las contrase帽as para los usuarios `SYS` y `SYSTEM`.
Nota: Podemos introducir comentarios en nuestro c贸digo utilizando el doble guion () para comentar una 煤nica l铆nea o la barra invertida y el asterisco (/* …. */) para comentar varias l铆neas. Esto nos ayudar谩 en caso de querer crear alguna nota para un futuro o para facilitarle la comprensi贸n del c贸digo a otra persona que pueda revisarlo en un futuro.
				
					-- Esto es un comentario de una 煤nica linea

/* Este comentario
   abarca varias l铆neas */
				
			

1.2 Creaci贸n de una Base de Datos con SQL Developer

P谩gina de descarga oficial de SQL Developer

Los pasos para crear una nueva conexi贸n de base de datos en SQL Developer son muy simples:

  • Abre SQL Developer: Inicia la aplicaci贸n SQL Developer en tu computadora. Una vez que est茅 abierta, ver谩s la interfaz principal.
  • Navega a la pesta帽a 芦Connections禄 (Conexiones):聽 En la parte superior de la ventana de SQL Developer, hay una serie de pesta帽as. Haz clic en la pesta帽a 芦Connections禄 para ir al 谩rea de administraci贸n de conexiones.
  • Haz clic derecho en 芦Connections禄 y selecciona 芦New Connection禄 (Nueva Conexi贸n): En el panel izquierdo, ubicado en la secci贸n 芦Connections禄, haz clic derecho en el nodo 芦Connections禄 y selecciona 芦New Connection禄 (Nueva Conexi贸n) en el men煤 contextual que aparece. Se abrir谩 una nueva ventana o di谩logo para crear una nueva conexi贸n.

Completa la informaci贸n de la conexi贸n:

  • Connection Name (Nombre de la Conexi贸n): Ingresa un nombre descriptivo para identificar esta conexi贸n en SQL Developer.
  • Username (Nombre de Usuario): Ingresa el nombre de usuario de tu base de datos.
  • Password (Contrase帽a): Ingresa la contrase帽a correspondiente al usuario.
  • Connection Type (Tipo de Conexi贸n): Selecciona el tipo de conexi贸n de la lista desplegable. Para Oracle, usualmente seleccionar谩s 芦Basic禄 (B谩sico).
  • Hostname (Nombre del Host): Ingresa la direcci贸n IP o el nombre del servidor donde se encuentra la base de datos.
  • Port (Puerto): Ingresa el n煤mero de puerto de la base de datos. El puerto predeterminado para Oracle es 1521.
  • SID (Identificador del Sistema): Ingresa el SID de la base de datos Oracle.
  • Service Name (Nombre del Servicio): Ingresa el nombre del servicio de la base de datos Oracle (si lo est谩s utilizando en lugar de SID).
  • Save Password (Guardar Contrase帽a): Opcionalmente, puedes seleccionar esta opci贸n para guardar la contrase帽a en la configuraci贸n de la conexi贸n. Esto facilitar谩 la conexi贸n en el futuro, pero ten en cuenta que podr铆a ser menos seguro.
  • Haz clic en 芦Test禄 (Probar): Una vez que hayas ingresado toda la informaci贸n requerida, puedes hacer clic en el bot贸n 芦Test禄 para probar la conexi贸n. Esto verificar谩 si los detalles que has proporcionado son v谩lidos y si puedes conectarte a la base de datos con ellos.
  • Haz clic en 芦Connect禄 (Conectar): Si la prueba de conexi贸n es exitosa, puedes hacer clic en 芦Connect禄 para establecer la conexi贸n con la base de datos. Si hay alg煤n error, revisa los detalles que has ingresado y corrige cualquier problema antes de intentar conectarte nuevamente.

1.3 Creaci贸n de una Base de Datos con SQL*plus

Para comenzar, abre una terminal en tu sistema y ejecuta el siguiente comando para iniciar SQL*Plus:

				
					sqlplus

				
			

Esto te pedir谩 que ingreses tus credenciales de inicio de sesi贸n de Oracle, como el nombre de usuario y la contrase帽a. Si est谩s utilizando Oracle Database Express Edition (XE) en tu sistema local, es posible que puedas iniciar sesi贸n utilizando el usuario predeterminado SYS o SYSTEM con su contrase帽a. Si es la primera vez que inicias sesi贸n la contrase帽a por defecto suele ser 芦oracle禄, 芦sys禄 o 芦system禄.

Una vez que hayas iniciado sesi贸n en SQL*Plus, puedes comenzar creando tu primera base de datos. Ejecuta el siguiente comando para abrir una nueva conexi贸n de base de datos:

				
					CONNECT / AS SYSDBA

				
			

Esto te dar谩 acceso a las funciones administrativas de la base de datos como el usuario SYSDBA.

Ahora, para crear tu primera base de datos, puedes ejecutar el siguiente conjunto de comandos SQL:

				
					CREATE DATABASE mi_primera_bd
  USER SYS IDENTIFIED BY contrase帽a_sys
  USER SYSTEM IDENTIFIED BY contrase帽a_system
  EXTENT MANAGEMENT LOCAL
  DATAFILE '/ruta/a/mi_primera_bd.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
  DEFAULT TEMPORARY TABLESPACE temp
  TEMPFILE '/ruta/a/temp.dbf' SIZE 50M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
  UNDO TABLESPACE undo
  DATAFILE '/ruta/a/undo.dbf' SIZE 50M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

				
			

En caso de no permitiros crear la base de datos, es posible que ya teng谩is una sesi贸n abierta con otra base de datos.

Podemos ver la base de datos actual utilizando la siguiente consulta:

				
					SELECT SYS_CONTECT('USERENV', 'BD_NAME') FROM DUAL;
				
			

Al realizar la consulta vemos como en mi caso estoy utilizando Oracle Database XE (Express Edition), es una versi贸n gratuita y ligera de Oracle Database que est谩 dise帽ada para desarrollo, pruebas y despliegue de aplicaciones de peque帽a escala. XE es una edici贸n espec铆fica de Oracle Database que proporciona muchas de las caracter铆sticas y funcionalidades de las ediciones comerciales de Oracle, pero con algunas limitaciones en t茅rminos de capacidad y escalabilidad.

1.3.1 Creaci贸n de un nuevo esquema en Oracle Database XE

En Oracle Database, un esquema es un contenedor l贸gico que agrupa objetos de base de datos como tablas, vistas, 铆ndices, procedimientos almacenados, etc. Crear un nuevo esquema te permite organizar y gestionar tus objetos de base de datos de manera m谩s eficiente. En esta gu铆a, te mostrar茅 c贸mo crear un nuevo esquema dentro de una base de datos Oracle Database Express Edition (XE) y los pasos necesarios para trabajar con 茅l.

Paso 1: Conectar como usuario SYSDBA

Para realizar tareas administrativas como la creaci贸n de usuarios y la concesi贸n de permisos, necesitas conectarte como usuario SYSDBA. Abre SQL*Plus y conecta como usuario SYSDBA utilizando el siguiente comando:

				
					CONNECT / AS SYSDBA

				
			
Paso 2: Crear un nuevo esquema

Una vez conectado como SYSDBA, puedes crear un nuevo esquema utilizando el comando CREATE USER. Por ejemplo, para crear un nuevo esquema llamado mi_primera_bd, ejecuta el siguiente comando:

				
					CREATE USER mi_primera_bd IDENTIFIED BY contrase帽a;

				
			
Este comando crea un nuevo esquema con el nombre mi_primera_bd y establece una contrase帽a para 茅l.
Paso 3: Conceder permisos necesarios

Despu茅s de crear el nuevo esquema, necesitas conceder los permisos necesarios al nuevo usuario para que pueda realizar operaciones en la base de datos. Puedes hacerlo utilizando el comando GRANT. Por ejemplo, para conceder permisos de conexi贸n y recursos al nuevo esquema, ejecuta el siguiente comando:

				
					GRANT CONNECT, RESOURCE TO mi_primera_bd;
				
			
Este comando concede al usuario mi_primera_bd los permisos necesarios para conectarse a la base de datos y crear objetos de base de datos.
Paso 4: Crear objetos de base de datos en el nuevo esquema

Una vez que hayas creado el nuevo esquema y concedido los permisos necesarios, puedes conectarte al nuevo esquema y empezar a crear objetos de base de datos como tablas, vistas, etc. Por ejemplo, para crear una tabla dentro del nuevo esquema, puedes ejecutar los comandos SQL habituales de creaci贸n de tablas.

				
					CONNECT mi_primera_bd;
-- Tendremos que introducir la contrase帽a del usuario
				
			

2. Creaci贸n de Tablas:

Una vez que hemos creado la Base de Datos, podemos comenzar a definir las tablas que contendr谩n nuestros datos. Para crear una nueva tabla, utilizamos la sentencia CREATE TABLE, donde especificamos el nombre de la tabla y las columnas que contendr谩, junto con sus tipos de datos.

Las columnas son conocidas como los atributos de una tabla. Es importante recordar cerrar siempre los par茅ntesis y colocar las comas (,) o punto y comas (;) correspondientes, en caso de faltar o colocar alguna donde no toque, nos indicara un error a la hora de ejecutar la sentencia. Los atributos o columnas van siempre entre par茅ntesis y se utiliza la coma para separar los unos de los otros. La 煤ltima columna no llevar谩 coma detr谩s suya y al cerrar el par茅ntesis, indicaremos que la sentencia a finalizado con un punto y coma (;)

Ejemplo 1:

				
					-- SINTAXIS B脕SICA --
CREATE TABLE nombreTabla (
    ATRIBUTO1 TIPO_DE_DATO RESTRICCION,
    ATRIBUTO2 TIPO_DE_DATO,
    ATRIBUTO3 TIPO_DE_DATO,
);

				
			
				
					-- EJEMPLO --
CREATE TABLE Empleados ( -- Creamos la tabla Empleados
    ID INT PRIMARY KEY, -- NombreColumna = ID, TipoDeDato = INT, Restricci贸n = PRIMARY KEY
    Nombre VARCHAR(50),
    Edad INT,
    Salario DECIMAL(10, 2)
);

				
			

Esta sentencia crea una nueva tabla llamada 芦Empleados禄 con cuatro columnas: 芦ID禄 (INT = N煤mero entero), 芦Nombre禄 (Varchar(50) = Cadena de caracteres de hasta 50 caracteres), 芦Edad禄 (INT = N煤mero entero) y 芦Salario禄 (DECIMAL = N煤mero decimal con un m谩ximo de 10 d铆gitos, 2 de los cuales est谩n reservados para decimales).聽

La columna 芦ID禄 tambi茅n se define como clave primaria utilizando la cl谩usula PRIMARY KEY, lo que significa que contendr谩 valores 煤nicos para identificar cada fila de la tabla.

La creaci贸n de una Base de Datos y tablas es el primer paso para comenzar a trabajar con datos en SQL. Utilizamos las sentencias CREATE DATABASE para crear la Base de Datos y CREATE TABLE para crear las tablas dentro de esa Base de Datos. Es importante definir cuidadosamente la estructura de nuestras tablas, especificando los nombres y tipos de datos de las columnas, as铆 como las restricciones como claves primarias si es necesario.

Ejemplo 2:

				
					CREATE TABLE Departamento
(codigo CHAR(5) NOT NULL,
nombre VARCHAR(100) NOT NULL,
director VARCHAR(50),
telefono CHAR(11),
CONSTRAINT departamento_pk PRIMARY KEY (codigo));
				
			

CREATE TABLE Departamento: Esta l铆nea indica que est谩s creando una nueva tabla llamada Departamento.

(codigo CHAR(5) NOT NULL,: Aqu铆 defines la primera columna de la tabla llamada codigo. Est谩 configurada como tipo CHAR(5), lo que significa que puede contener hasta 5 caracteres de longitud y ser谩 de tipo cadena de caracteres (car谩cter). NOT NULL indica que este campo no puede tener valores nulos, es decir, siempre debe tener un valor.

nombre VARCHAR(100) NOT NULL,: Esta l铆nea define la segunda columna de la tabla llamada nombre. Est谩 configurada como tipo VARCHAR(100), lo que significa que puede contener hasta 100 caracteres de longitud y ser谩 de tipo cadena de caracteres variable. Al igual que con codigo, NOT NULL indica que este campo no puede ser nulo.

director VARCHAR(50),: Aqu铆 defines la tercera columna de la tabla llamada director. Al igual que nombre, es de tipo VARCHAR, pero solo puede contener hasta 50 caracteres de longitud. No se incluye NOT NULL, lo que significa que puede tener valores nulos, lo que indica que no todos los departamentos necesariamente tienen un director.

telefono CHAR(11),: Esta l铆nea define la cuarta columna de la tabla llamada telefono. Est谩 configurada como tipo CHAR(11), lo que significa que puede contener hasta 11 caracteres de longitud y ser谩 de tipo cadena de caracteres (car谩cter). Similar a director, no se incluye NOT NULL, lo que indica que puede tener valores nulos, ya que no todos los departamentos pueden tener un tel茅fono asociado.

CONSTRAINT departamento_pk PRIMARY KEY (codigo));: Esta parte define una restricci贸n de clave primaria en la columna codigo. Esto significa que el valor en esta columna debe ser 煤nico para cada fila y no puede ser nulo. departamento_pk es el nombre de la restricci贸n de clave primaria.

Ejercicio N潞 1 : Mi primera tabla

Dise帽a y crea la siguiente tabla llamada 芦Camionero禄 en una base de datos Oracle:

Camionero: Esta tabla almacenar谩 informaci贸n sobre los camioneros contratados, incluyendo su identificaci贸n, nombre, tel茅fono, direcci贸n, poblaci贸n y salario.

<< Resoluci贸n >>

3. Tipos de datos en SQL

En SQL, los tipos de datos son una parte fundamental para definir la estructura de nuestras tablas y especificar qu茅 tipo de valores pueden contener las columnas de esas tablas. Aqu铆 te presento una breve explicaci贸n de los tipos de datos m谩s comunes en SQL.

3.1 Tipos de datos num茅ricos:

  • INTEGER o INT: Representa n煤meros enteros. Pueden ser positivos, negativos o cero.
  • FLOAT o REAL: Representa n煤meros de punto flotante (n煤meros decimales) con precisi贸n simple.
  • DOUBLE PRECISION o DOUBLE: Representa n煤meros de punto flotante con mayor precisi贸n que FLOAT.
Ejemplo:
				
					CREATE TABLE Ejemplo (
    ID INT,
    Precio FLOAT,
    Cantidad INT
);

				
			

3.2 Tipos de datos de caracteres:

  • CHAR(n): Almacena cadenas de caracteres de longitud fija, donde 芦n禄 especifica el n煤mero m谩ximo de caracteres.
  • VARCHAR(n): Almacena cadenas de caracteres de longitud variable, donde 芦n禄 especifica la longitud m谩xima permitida.
  • TEXT: Almacena cadenas de caracteres de longitud variable de tama帽o mucho mayor que VARCHAR.

Ejemplo:

				
					CREATE TABLE Ejemplo (
    Nombre VARCHAR(50),
    Descripcion TEXT
);

				
			

Ejercicio N潞 2 : Tablas y atributos.

Dise帽a y crea las siguientes tablas en una base de datos Oracle:

  • Camionero: Esta tabla almacenar谩 informaci贸n sobre los camioneros contratados, incluyendo su identificaci贸n, nombre, tel茅fono, direcci贸n, poblaci贸n y salario. (Tabla creada en el ejercicio anterior.)
  • Paquete: Esta tabla registrar谩 los paquetes a entregar, con detalles como el c贸digo del paquete, descripci贸n, destinatario, direcci贸n del destinatario y el DNI del camionero asignado para su entrega.
  • Provincia: En esta tabla se almacenar谩n las provincias relacionadas con los paquetes, junto con su c贸digo y nombre, adem谩s del c贸digo del paquete asociado.
  • Camion: Aqu铆 se registrar谩n los camiones utilizados en el transporte, incluyendo su matr铆cula, modelo, tipo y potencia.
  • Camionero_Camion: Esta tabla establecer谩 la relaci贸n entre los camioneros y los camiones que conducen, mediante el registro de sus DNIs y las matr铆culas de los camiones asignados.
<< Resoluci贸n >>

3.3 Tipos de datos de fecha y hora:

  • DATE: Almacena fechas en formato ‘YYYY-MM-DD’.
  • TIME: Almacena horas en formato ‘HH:MM:SS’.
  • DATETIME o TIMESTAMP: Almacena fecha y hora en formato ‘YYYY-MM-DD HH:MM:SS’.

Ejemplo:

				
					CREATE TABLE Ejemplo (
    FechaNacimiento DATE,
    HoraRegistro TIMESTAMP
);

				
			

3.4 Otros tipos de datos:

  • BOOLEAN: Almacena valores de verdad, generalmente representados como TRUE o FALSE.
  • BLOB: Almacena grandes objetos binarios, como im谩genes o archivos.
  • ENUM: Permite especificar un conjunto de valores posibles para una columna.

Ejemplo:

				
					CREATE TABLE Ejemplo (
    Activo BOOLEAN,
    Foto BLOB
);

				
			

Recuerda que la elecci贸n del tipo de dato adecuado es importante para garantizar la integridad y eficiencia de tus datos. Especificar tipos de datos m谩s precisos y adecuados para tus columnas puede ayudar a optimizar el almacenamiento y el rendimiento de tus consultas.

Ejercicio N潞 3 : Tablas y atributos (Gesti贸n de empleados).

Dise帽a y crea las siguientes tablas en una base de datos Oracle:

  • Empleado: Esta tabla almacenar谩 informaci贸n b谩sica sobre los empleados de una empresa, incluyendo su identificaci贸n, nombre, apellido, fecha de contrataci贸n, salario y departamento al que pertenecen.
  • Proyecto: En esta tabla se registrar谩n los proyectos en los que est谩n involucrados los empleados, con detalles como el c贸digo del proyecto, nombre, descripci贸n y la fecha de inicio del proyecto.
  • Departamento: Aqu铆 se almacenar谩n los departamentos de la empresa, junto con su c贸digo, nombre y la ubicaci贸n f铆sica del departamento.
  • Asignaci贸n: Esta tabla establecer谩 la relaci贸n entre los empleados y los proyectos en los que participan, mediante el registro de sus identificaciones y los c贸digos de proyecto correspondientes.

4. Restricciones b谩sicas RIMARY KEY y FOREIGN KEY

Las claves primarias (PRIMARY KEY) y las claves externas (FOREIGN KEY) son restricciones en una base de datos relacional. En el contexto de una definici贸n de tabla, se las conoce como restricciones de integridad, ya que imponen reglas sobre los datos almacenados en la tabla para garantizar su consistencia y coherencia.

4.1 Clave Primaria (PRIMARY KEY)

La clave primaria (Primary Key en ingl茅s) es un concepto fundamental en las bases de datos relacionales. Representa un atributo o conjunto de atributos que identifican de manera 煤nica a cada fila en una tabla.

En t茅rminos m谩s simples, la clave primaria es un identificador 煤nico para cada fila en una tabla. Ayuda a garantizar la integridad de los datos y facilita la identificaci贸n de registros individuales en una tabla.

Por ejemplo, para una tabla llamada 芦persona禄, podr铆amos asignar el atributo DNI como clave primaria, ya que cada DNI es 煤nico para cada persona. Otro ejemplo ser铆a una tabla llamada 芦paquete禄, al cual podemos asignar una columna llamada 芦id_paquete禄 o 芦codigo_paquete禄, que ser铆a la clave primaria o (PRIMARY KEY) para que identifique de forma 煤nica a cada paquete.

Caracter铆sticas de una clave primaria:

  1. Unicidad: Cada valor en la clave primaria debe ser 煤nico dentro de la tabla. No puede haber duplicados.

  2. No nulidad: Los valores de la clave primaria no pueden ser nulos. Cada fila debe tener un valor v谩lido en la clave primaria.

  3. Invariabilidad: Los valores de la clave primaria no deben cambiar, o al menos no deber铆an cambiar con frecuencia. Cambiar el valor de una clave primaria podr铆a causar problemas de integridad referencial en las tablas que hacen referencia a ella.

La definici贸n de la clave primaria se realiza durante la creaci贸n de la tabla (CREATE TABLE) mediante la sentencia PRIMARY KEY, donde se especifica qu茅 columna o conjunto de columnas actuar谩n como clave primaria.

Ejemplo:

En una tabla de 芦empleados, la columna id_empleado podr铆a definirse como la clave primaria, ya que cada empleado tendr铆a un identificador 煤nico.

				
					CREATE TABLE Empleado (
    id_empleado VARCHAR2(4) PRIMARY KEY,
    nombre VARCHAR2(30),
    apellido VARCHAR2(30),
    fecha_contratacion DATE,
    salario NUMBER(6,2),
    departamento VARCHAR2(30)
);

				
			

Ejercicio N潞 4 : Aplicaci贸n de restricciones b谩sicas (Tienda).

Identifica las posibles tablas, atributos, claves primarias y claves externas asociadas del siguiente escenario:

Estamos desarrollando una aplicaci贸n de gesti贸n de inventarios para una tienda en l铆nea que vende productos electr贸nicos. Los usuarios pueden ver los productos disponibles, agregarlos al carrito de compras y realizar pedidos. Cada producto tiene un nombre, una descripci贸n, un precio y una cantidad disponible en inventario. Tambi茅n se almacena informaci贸n sobre la categor铆a a la que pertenece cada producto. Para los clientes, la base de datos guarda el nombre, la direcci贸n de correo electr贸nico y el n煤mero de tel茅fono. Los pedidos contienen informaci贸n sobre los productos comprados, la cantidad de cada producto y la fecha del pedido.

Objetivos:

Identificar tablas, atributos, claves primarias y claves externas de una BD.

Donde:
  • Negrita –> Clave Primaria (Color amarillo).
  • Subrayado –> Clave externa (Color verde).

4.2 Clave externa (FOREIGN KEY)

La clave externa (Foreign Key en ingl茅s) es otro concepto importante en las bases de datos relacionales. Representa una relaci贸n entre dos tablas, donde la tabla que contiene la clave externa establece una relaci贸n con la tabla que contiene la clave primaria. En otras palabras, la clave externa en una tabla hace referencia a la clave primaria en otra tabla.

La clave externa se utiliza para mantener la integridad referencial entre las tablas. Esto significa que garantiza que cada valor en la columna de la clave externa de una tabla exista como un valor correspondiente en la columna de la clave primaria de la tabla relacionada.

Caracter铆sticas de una clave externa:

  1. Referencia a una clave primaria: La clave externa en una tabla hace referencia a la clave primaria en otra tabla.

  2. Garantiza integridad referencial: La clave externa asegura que no se puedan insertar valores que no existan en la tabla relacionada.

  3. Permite la creaci贸n de relaciones: Las claves externas permiten establecer relaciones entre diferentes tablas en la base de datos.

La definici贸n de la clave externa se realiza tambi茅n durante la creaci贸n de la tabla mediante la sentencia FOREIGN KEY. En la definici贸n de la clave externa, se especifica qu茅 columna o conjunto de columnas actuar谩n como clave externa y a qu茅 tabla y columna hace referencia.

Ejemplo:

En una tabla llamada 芦Asignaci贸n禄 de asignaciones de proyectos, la columna id_empleado podr铆a definirse como una clave externa (FOREIGN KEY) que hace referencia (REFERENCES) a la columna id_empleado en la tabla 芦Empleado芦.

				
					CREATE TABLE Empleado (
    id_empleado VARCHAR2(4) PRIMARY KEY, 
    nombre VARCHAR2(30),
    salario NUMBER(6.2);
);

CREATE TABLE Proyecto (
    cod_proyecto VARCHAR2(4) PRIMARY KEY, 
    nombre VARCHAR2(30),
    presupuesto NUMBER(6.2);
);

CREATE TABLE Asignacion (
    id_empleado VARCHAR2(4),
    cod_proyecto VARCHAR2(4),
    --Calve externa que relaciona nuestra columna id_empleado con la columna id_empleado de la tabla Empleado
    FOREIGN KEY (id_empleado) REFERENCES Empleado(id_empleado),
    --Calve externa que relaciona nuestra columna cod_proyecto con la columna cod_proyecto de la tabla Proyecto
    FOREIGN KEY (cod_proyecto) REFERENCES Proyecto(cod_proyecto) 
);

				
			

En este ejemplo, las columnas id_empleado y cod_proyecto en la tabla Asignacion se definen como claves externas que hacen referencia a las claves primarias correspondientes en las tablas Empleado y Proyecto, respectivamente. Esto establece una relaci贸n entre las tablas y garantiza la integridad referencial entre ellas.

Ejercicio N潞 5 : Identificaci贸n de tablas, atributos y restricciones.

Identifica las posibles tablas, atributos, claves primarias y claves externas asociadas del siguiente escenario:


Estamos realizando una aplicaci贸n de pel铆culas en streaming donde los usuarios pueden examinar el cat谩logo de pel铆culas y seleccionar los productos que deseen.
Cada pel铆cula tiene un t铆tulo, a帽o, g茅nero y descripci贸n. Tambi茅n conserva la informaci贸n del director y de la distribuidora de cualquier pel铆cula.
Para los directores, la base de datos conserva el nombre, la fecha de nacimiento, la biograf铆a y la URL de su p谩gina personal.
Para las distribuidoras, la base de datos conserva el nombre, el CIF, el n煤mero de tel茅fono, el email y la URL de su sitio web.

Objetivos:

Identificar tablas, atributos, claves primarias y claves externas de una BD.

Donde:
  • Negrita –> Clave Primaria (Color amarillo).
  • Subrayado –> Clave externa (Color verde).
<< Resoluci贸n >>

Ejercicio N潞 6 : Aplicaci贸n de restricciones (Paqueter铆a).

Se pide a帽adir sobre las tablas creadas anteriormente las restricciones de clave primaria
y clave externa utilizando ALTER TABLE, para ello seguir las indicaciones del grafo
relacional siguiente:

  • CAMIONERO (dni, nombre, tel茅fono direcci贸n, poblaci贸n, salario)
  • PAQUETE (cod_paquete, descripci贸n, destinatario, direcci贸n_destinatario,
    dni_camionero)
  • PROVINCIA (cod_provincia, nombre, cod_paquete)
  • CAMION (matr铆cula, modelo, tipo, potencia)
  • CAMIONERO_CAMION (dni, matricula)
Donde:
  • Negrita –> Clave Primaria
  • Subrayado –> Clave externa.
<< Resoluci贸n >>

Ejercicio N潞 7 : Creaci贸n de tablas y aplicaci贸n de restricciones.

Tomando como referencia el modelo relacional, se solicita crear las sentencias SQL de creaci贸n de tablas y sus restricciones:

  1. Crear las tablas especificadas en el grafo relacional, teniendo en cuenta las reglas de nomenclatura en la creaci贸n de las mismas.
  2. Seleccionar el tipo de dato m谩s adecuado para cada una de las columnas que conforman cada una de las tablas.
  3. Establecer las restricciones de clave primaria en cada una de las tablas.
  4. Establecer las restricciones de clave externa que sean necesarias.
  • ASIENTO(NUMEO_ASIENTO, ID_AVION, CARACTER脥STICAS)
  • AVION (ID_AVION, NOMBRE, DESCRIPCI脫N, FECHA)
  • BILLETE (COD_BILLETE, NOMBRE, APELLIDOS, NUMERO_ASIENTO, ID_AVION)
Donde:
  • Negrita –> Clave Primaria (Color amarillo).
  • Subrayado –> Clave externa (Color verde).
<< Resoluci贸n >>

5. Manipulaci贸n de Datos con SQL

La manipulaci贸n de datos en SQL implica realizar diversas operaciones para insertar, consultar, actualizar y eliminar datos en una Base de Datos. A continuaci贸n, te presento una explicaci贸n de cada una de estas operaciones:

5.1 Inserci贸n de datos:

La inserci贸n de datos se realiza utilizando la sentencia INSERT INTO, que permite agregar nuevos registros a una tabla.

Sintaxis:

				
					INSERT INTO nombre_de_la_tabla (columna1, columna2, ...)
VALUES (valor1, valor2, ...);

				
			

Ejemplo: En el siguiente ejemplo se muestra como crear un nuevo registro en la table 芦Empleados禄 con los datos 芦Nombre = Alberto禄,聽 DNI=禄99887766E禄 禄 y 芦Salario = 2500.00禄. Con聽 la sentencia INSERT INTO especificamos en que tabla queremos crear el nuevo registro y cuales son los atributos que vamos a introducir, y con la sentencia VALUES especificamos los valores de los atributos en el mismo orden en el que los hemos especificado anteriormente.

				
					INSERT INTO Empleados (DNI, Nombre, Salario)
VALUES ('99887766E', 'Alberto', 2500.00);

				
			

Ejercicio N潞 8 : Inserci贸n de datos en tablas existentes

A continuaci贸n, se te proporcionar谩n una serie de valores para cada tabla de una base de datos ya creada. Tu tarea es insertar estos datos en las tablas del ejercicio anterior聽(tablas del ejercicio 5) utilizando la sentencia INSERT INTO.

Las tablas y sus atributos son las siguientes:

  1. CAMIONERO (dni, nombre, tel茅fono, direcci贸n, poblaci贸n, salario)
  2. PAQUETE (cod_paquete, descripci贸n, destinatario, direcci贸n_destinatario, dni)
  3. PROVINCIA (cod_provincia, nombre, cod_paquete)
  4. CAMION (matr铆cula, modelo, tipo, potencia)
  5. CAMIONERO_CAMION (dni, matr铆cula)

A continuaci贸n se presentan los valores que deber谩s insertar en cada tabla:

CAMIONERO:

  • (12345678A, ‘Juan P茅rez’, ‘123456789’, ‘Calle Principal 123’, ‘Ciudad A’, 2000.00)
  • (987654321, ‘Mar铆a L贸pez’, ‘987654321’, ‘Avenida Central 456’, ‘Ciudad B’, 1800.50)

PAQUETE:

  • (1001, ‘Electrodom茅sticos’, ‘Pedro Garc铆a’, ‘Calle Secundaria 456’, 123456789)
  • (1002, ‘Libros’, ‘Ana Mart铆nez’, ‘Plaza Mayor 789’, 987654321)

PROVINCIA:

  • (1, ‘Provincia A’, 1001)
  • (2, ‘Provincia B’, 1002)

CAMION:

  • (‘ABC123’, ‘Volvo’, ‘Carga’, 300)
  • (‘DEF456’, ‘Mercedes’, ‘Pasajeros’, 250)

CAMIONERO_CAMION:

  • (123456789, ‘ABC123’)
  • (987654321, ‘DEF456’)
<< Resoluci贸n >>

5.2 Consultas:

Las consultas se realizan utilizando la sentencia SELECT, que permite recuperar datos de una o m谩s tablas seg煤n ciertos criterios.

Sintaxis:

				
					SELECT columnas FROM nombre_de_la_tabla WHERE condiciones;

				
			

5.2.1 Ver todas las tablas de una sesi贸n

Para ver todas las tablas existentes en una base de datos en SQL*Plus, puedes utilizar la vista del diccionario de datos llamada USER_TABLES. Esta vista muestra todas las tablas propias del usuario actual. Aqu铆 tienes c贸mo puedes consultarla:

				
					SELECT table_name FROM user_tables;

				
			

5.2.2 Ver todas las columnas de una tabla

Si por ejemplo, queremos mostrar todas las columnas de una tabla, podemos hacer a referencia a todas las columnas utilizando el asterisco * :

				
					SELECT * FROM nombre_tabla;