¡El equipo continúa avanzando en su desarrollo software!
En todo el recorrido por el recurso hasta ahora hemos superado con éxito las dos primeras fases de desarrollo de nuestro proyecto software, y ahora afrontamos la siguiente fase: La Implementación.
El equipo ha recopilado toda la información de lo que el cliente necesita, ha especificado los requisitos y ha realizado un diseño de la estructura que soportará los datos. Es la hora de meterse de lleno en el código de la programación.
En esta sección, por tanto, aprenderás un nuevo lenguaje de programación. Un lenguaje para la creación y manejo de bases de datos relacionales llamado SQL. No te preocupes por la complejidad, tienes a tu disposición a todo el equipo y el apoyo del profesorado para salir triunfante.
4. Herramienta en mano: el equipo implementa
1. El superpoder resolutivo: la lógica del equipo
En esta nueva fase hay que elegir las herramientas adecuadas: un entorno de desarrollo que facilite el trabajo y un lenguaje de programación apropiado para el tipo de software a construir. Esta elección dependerá tanto de las decisiones de diseño tomadas como del entorno en el que el software deba funcionar.
El lenguaje con el que crearás la base de datos debe permitir obtener informaciones de todas las tablas creando para ello las relaciones necesarias entre ellas.
Para entender mejor cómo este lenguaje debe combinar los datos a la hora de recorrer las diferentes tablas, os proponemos primero crear las instrucciones en nuestro lenguaje natural, explicando de manera lógica lo que necesitáis para dar respuesta a las preguntas planteadas sobre la siguiente base datos: el sistema de gestión de alquileres de películas en un videoclub. Observad las tablas que componen esta base de datos:
Películas
| Película | Título | Tema | Año | País | Precio |
|---|---|---|---|---|---|
| 1 | Two Much | Comedia | 1995 | España | 3 |
| 2 | Tesis | Suspense | 1996 | España | 3 |
| 3 | Desperado | Acción | 1995 | EEUU | 3,5 |
| 4 | Una casa de locos | Comedia | 2002 | Francia | 4 |
| 5 | Apolo 13 | Historia | 1995 | EEUU | 2,5 |
Clientes
| Socio | Nombre | Fecha_alta | Telefono | DNI | Direccion |
|---|---|---|---|---|---|
| 1 | María López Perdigón | 14/09/2014 | 685369896 | 27711498D | Granada, 12 2ºA |
| 2 | Pedro Ramos Lucena | 13/10/2017 | 954236742 | 27148934G | Albricias, 23 2ºB |
| 3 | Lucas Dobla Marcial | 02/12/2015 | 723568974 | 23451267Q | Miraduero, 46 |
| 4 | Lucía Cabrera Pérez | 24/02/2018 | 677158523 | 28565225C | Avda. El Puerto, 9, 7ºA |
Alquiler
| Socio | Película | Fecha_alquiler | Fecha_devolucion |
|---|---|---|---|
| 4 | Desperado | 15/07/2020 | 16/07/2020 |
| 1 | Two Much | 23/04/2022 | 26/04/2022 |
| 3 | Apolo 13 | 03/11/2022 | |
| 2 | Tesis | 07/08/2021 | 09/08/2021 |
A continuación debéis trabajar estas tablas en el grupo y anotar los pasos concretos que daríais para dar solución a las siguientes consultas:
- ¿En qué orden crearíais las tablas en la base de datos?
- ¿Por qué es necesario seguir el orden de creación de las tablas para la inserción de los datos en las tablas?
- Explicad qué relaciones existentes entre las tablas utilizaríais para obtener:
- Consultar los préstamos que han tenido una duración superior a dos días, visualizando el nombre del socio y el título de la película.
- Mostrar el nombre y el número de teléfono de socios que tienen películas en su casa.
- Cuánto dinero ha gastado María López Perdigón en el videoclub.
Explicadlo paso a paso en el grupo clase.
2. Para definir una buena solución
El lenguaje SQL está compuesto por elementos que se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. Vamos a ver que el propio lenguaje nos aporta tipos de comandos concretos según la operación a realizar.
Existen dos tipos de comandos SQL:
- Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.
- Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.
Comenzamos por las operaciones del Lenguaje de Definición de Datos (DDL), que permiten crear y definir nuevas bases de datos, campos e índices. ¡Conócelos!
CREATE
Las sentencias del DDL utilizan unos verbos que se repiten para los distintos objetos. Por ejemplo para crear un objeto nuevo el verbo será CREATE y a continuación el tipo de objeto a crear.
CREAR LA BASE DE DATOS
Al crear una base de datos sólo hay que darle un nombre, Los nombres de base de datos deben ser únicos y tendrán 128 caracteres máximo.
SINTAXIS
CREATE DATABASE nombre_base_de_datos;
EJEMPLO
CREATE DATABASE clientesDeEmpresa;
CREAR TABLAS
Al crear una tabla también lo hacemos dándole un nombre. Se crea en la base de datos actual y ocurre un error si la tabla existe o si la base de datos no existe.
SINTAXIS
CREATE TABLE nombre_tabla
("columna 1" "tipo_de_datos_para_columna_1",
"columna 2" "tipo_de_datos_para_columna_2",
... ,
[parámetros de la tabla]);
CREATE TABLE CLIENTE (
DNI VARCHAR2(10),
NOMBRE VARCHAR2(20),
FECHA_NAC DATE NOT NULL,
TFNO VARCHAR2(10),
APELLIDOS VARCHAR2(100),
CONSTRAINT CLIENTE_PK PRIMARY KEY (DNI)
)
DROP
Para eliminar un objeto utilizaremos el verbo DROP (DROP TABLE, DROP INDEX…).
BORRAR LA BASE DE DATOS
DROP DATABASE borra todas las tablas en la base de datos y borra la base de datos. Hay que ser muy cuidadoso con este comando. Retorna el número de tablas que se eliminan. El comando borra del directorio de base de datos los ficheros y directorios que se crean durante operaciones normales.
SINTAXIS
DROP DATABASE [IF EXISTS] db_name;
EJEMPLO
DROP DATABASE IF EXISTS mi_vieja_base_de_datos;
BORRAR TABLAS
Con el comando de borrado se pueden borrar una o más tablas. DROP TABLE no puede utilizarse para eliminar una tabla a la que se hace referencia en una restricción FOREIGN KEY (clave ajena). Primero habrá que eliminar la restricción FOREIGN KEY de la tabla a la que se hace referencia.
SINTAXIS
DROP TABLE nombre_de_la_tabla;
Si deseamos eliminar una tabla denominada cliente
que creamospreviamente, simplemente ejecutamos:
DROP TABLE Cliente;
ALTER
La sentencia SQL ALTER se utiliza para añadir, eliminar o modificar columnas de una tabla.
SINTAXIS
A. Sintaxis para agregar una columna:
ALTER TABLE nombretabla
ADD nombrecolumna tipodatocolumna;
B. Sintaxis para eliminar una columna de una tabla:
ALTER TABLE nombretabla
DROP COLUMN nombrecolumna;
C. Sintaxis para modificar el tipo de dato de una columna de una tabla:
ALTER TABLE nombretabla
ALTER COLUMN nombrecolumna tipodatocolumna;
EJEMPLOS
A. Dada la tabla personas, queremos añadir una nueva columna, denominada fechadenacimiento:
ALTER TABLE personas
ADD fechadenacimiento date;
B. Dada la tabla personas, queremos borrar la columna, denominada fechadenacimiento:
ALTER TABLE personas
DROP COLUMN fechadenacimiento;
C. Si queremos modificar el tipo de dato de la columna fecha, y ponerle tipo year en lugar de tipo date:
ALTER TABLE personas
ALTER COLUMN fechadenacimiento year ;
Data Definition Language, en inglés. Incluye órdenes para definir, modificar o borrar las tablas en las que se almacenan los datos y las relaciones entre estas.
Para los diferentes tipos de datos que podrás usar en SQL puedes consultar los existentes aquí:
Lumen dice Algunos ejemplos
Aquí puedes ver algunos ejemplos más:

Lectura facilitada
En esta imagen podemos ver los comandos DDL: CREATE, DROP y ALTER. Se especifica que para la funcionalidad de creación se usa CREATE DATABASE o CREATE TABLE, para la funcionalidad de modificación se usa ALTER TABLE, ALTER COLUMN y para la funcionalidad de borrado se usa DROP TABLE, DROP DATABASE.
En el ejemplo 1 encontramos los comandos:
CREATE TABLE gente
(Cedula CHAR(8) PRIMARY KEY,
Nombre VARCHAR(20) NOT NULL,
Apellidos VARCHAR(20) NOT NULL)
ALTER TABLE Gente ADD (Edad NUMBER(2));
ALTER TABLE Gente DROP (Edad);
DROP TABLE Gente;
En el ejemplo 2 encontramos los comandos:
CREATE TABLE CLIENTE(
DNI VARCHAR2(10),
&INOMBRE VARCHAR2(20),
FECHA_NAC DATE NOT NULL,
TFNO VARCHAR2(10),
APELLIDOS VARCHAR2(100),
CONSTRAINT CLIENTE_PK PRIMARY KEY (DNI)
);
CREATE DATABASE mibasededatos
En el ejemplo 3 encontramos los comandos para el ejemplo ya trabajado en las pestañas.
Kardia dice Para saber más...
Debes saber que:
1. Una sentencia SQL es como una frase (escrita en inglés ) con la que decimos lo que queremos obtener y de dónde obtenerlo. Todas las sentencias empiezan con un verbo (palabra reservada que indica la acción a realizar), seguido del resto de opciones, algunas obligatorias y otras opcionales que completan la frase.
2. Otros comandos, además de los vistos son:
- SHOW TABLES: mostrar tablas.
- DESCRIBE
para mostrar estructura de una tabla. - Habrás visto que existen, además, algunos comandos que hemos usado en los ejemplos, como:
- CONSTRAINT: se usa en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar restricciones.
- FOREIGN KEY: identifica una columna o varias columnas, que sirven para señalar cuál es la llave primaria de otra tabla.
Algunos enlaces recomendados para consultar comandos y su uso son:
3. Un equipo manipulador...de datos
Vamos a conocer ahora las instrucciones de SQL dedicadas a llevar a cabo las tareas de consulta o modificación de los datos contenidos en las Bases de Datos. Estos comandos forman parte del llamado Lenguaje de Manipulación de Datos (DML). A continuación tienes los cuatro comandos básicos del DML, verás que con ellos puedes obtener o actualizar todos los datos que desees en la base de datos:
SELECT
¿Para qué solemos utillizar los comandos SQL? El uso más común es la selección de datos de las tablas en las que se encuentran. La gran mayoría de operaciones que realizamos en una base de datos comienzan con una consulta. Las dos palabras claves que necesitaremos para ello son SELECT y FROM.
La estructura SQL básica para la consulta es:
SELECT "nombre_columna" FROM "nombre_tabla";
EJEMPLO
Para comprobar el funcionamiento del comando utilizaremos la siguiente tabla que representa la transmisión a la central de las ventas de un producto en sus sucursales:
| ciudad | ventas | fecha_txn |
|---|---|---|
| Huelva | 250 | 05/01/2022 |
| Córdoba | 1500 | 14/01/2022 |
| Jaén | 300 | 07/01/2022 |
| Almería | 700 | 10/01/2022 |
SELECT ciudad FROM info_ventas;
RESULTADO
Tras ejecutar el comando anterior obtendremos:
ciudad
Huelva
Córdoba
Jaén
Almería
AMPLIACIÓN
Junto al comando SELECT suele utilizarse la cláusula opcional WHERE. Aunque es opcional, nos resulta muy necesaria ya que nos permite añadir condiciones para filtrar los datos concretos que necesitamos obtener. El comando completo sería entonces:
FORMATO:
SELECT "nombre_columna" FROM "nombre_tabla"
WHERE "condicion_1_de_los_datos"
AND "condicion_2_de_los_datos" [...]
EJEMPLO:
SELECT ciudad FROM info_ventas
WHERE ventas>500
INSERT
Acabas de conocer cómo obtener información de tablas. Pero ¿Cómo se insertan estas filas de datos en estas tablas en primer lugar? Esto es lo que vas a aprender ahora, que realiza la instrucción INSERT.
La estructura básica para insertar una nueva fila de datos en una tabla es:
INSERT INTO "nombre_tabla" ("columna1", "columna2", ...)
VALUES ("valor1", "valor2", ...);
EJEMPLO
Así, si queremos insertar una nueva fila en la tabla info_ventas anterior, respetando siempre los tipos de tados de cada columna de la tabla para no obtener error, el comando a ejecutar sería:
INSERT INTO info_ventas (ciudad, ventas, fecha_txn)
VALUES ('Cádiz', 900, '11/01/2022')
RESULTADO
| ciudad | ventas | fecha_txn |
|---|---|---|
| Huelva | 250 | 05/01/2022 |
| Córdoba | 1500 | 14/01/2022 |
| Jaén | 300 | 07/01/2022 |
| Almería | 700 | 10/01/2022 |
| Cádiz | 900 | 11/01/2022 |
AMPLIACIÓN
Los comandos SQL también se pueden anidar entre sí. De este modo, podríamos insertar en una tabla varias filas de otra tabla diferente sustituyendo la palabra VALUES por una consulta que nos proporcione efectivamente los valores que queremos insertar. La sintaxis será:
FORMATO:
INSERT INTO "tabla1" ("columna1", "columna2", ...)
SELECT "columna3", "columna4", ...
FROM "tabla2";
EJEMPLO:
INSERT INTO mayores_ventas (ciudad, ventas, fecha_txn)
SELECT ciudad, ventas, fecha_txn
FROM info_ventas
WHERE ventas>500;
UPDATE
Una vez que hay datos en la tabla, podríamos tener la necesidad de modificar los mismos. El comando UPDATE se utiliza para modificar valores en una tabla.
La sintaxis de SQL UPDATE es:
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3
Donde:
- SET establece los nuevos valores para las columnas indicadas.
- WHERE sirve para seleccionar las filas que queremos modificar.
¡OJO!: Si omitimos la cláusula WHERE, por defecto, ¡modificará los valores en todas las filas de la tabla!.
EJEMPLO
Si, sobre la tabla info_ventas anterior, las ventas en Huelva son 280 en vez de 250 haremos:
UPDATE info_ventas
SET ventas = 280
WHERE ciudad = 'Huelva'
AND fcha_txn = '05/01/2022';
RESULTADO
| ciudad | ventas | fecha_txn |
|---|---|---|
| Huelva | 280 | 05/01/2022 |
| Córdoba | 1500 | 14/01/2022 |
| Jaén | 300 | 07/01/2022 |
| Almería | 700 | 10/01/2022 |
| Cádiz | 900 | 11/01/2022 |
DELETE
A veces podemos desear deshacernos de los registros de una tabla. Para ello, utilizamos el comando DELETE FROM.
Su sintaxis es:
DELETE FROM "nombre_tabla"
WHERE "condición";
EJEMPLO
Si en la tabla anterior queremos borrar las ventas de la segunda fila:
DELETE FROM info_ventas
WHERE ciudad = 'Córdoba';
RESULTADO
| ciudad | ventas | fecha_txn |
|---|---|---|
| Huelva | 280 | 05/01/2022 |
| Jaén | 300 | 07/01/2022 |
| Almería | 700 | 10/01/2022 |
| Cádiz | 900 | 11/01/2022 |
Data Manipulation Language, en inglés, es usado para recuperar y manipular datos en una base de datos relacional.