Está en la página 1de 5

Universidad del Quindío

Programa de Ingeniería de Sistemas y Computación.


Análisis de Algoritmos II - SQL básico
Septiembre de 2020

SENTENCIAS BÁSICAS EN SQL

Información general
Duración estimada en minutos: 60
Docente: Carlos Andrés Flórez Villarraga
Guía no. 02.1

Información de la Guía

OBJETIVO

Conocer los conceptos básicos del lenguaje SQL, esencial en las bases de datos relacionales.

CONCEPTOS BÁSICOS

Lenguaje de programación, MySQL, línea de comandos.

CONTEXTUALIZACIÓN TEÓRICA

SQL (Structured Query Language) es un lenguaje diseñado para administrar y recuperar información de
sistemas de gestión de bases de datos relacionales, como por ejemplo MySQL.

Las bases de datos relacionales se organizan en dos marcadas secciones: el esquema y los datos (o
instancias). El esquema es la definición de la estructura de la base de datos y principalmente almacena los
siguientes datos: El nombre de cada tabla, el nombre de cada columna, el tipo de dato de cada columna, la
tabla a la que pertenece cada columna, las restricciones de cada columna.

Existen dos subconjuntos de sentencias SQL, uno para la definición del esquema de la base de datos que
se llama DDL y otro para la manipulación de los datos (o instancias) que se llama DML.

Lenguaje de definición de datos (DDL)​: Es un conjunto de instrucciones para trabajar con el esquema.
Principalmente:

● CREATE <algo>,
● ALTER <algo> <cómo> y
● DROP <algo>

Lenguaje de manipulación de datos DML(Data Manipulation Language): ​Es un conjunto de


instrucciones para trabajar con los datos. Principalmente:

● SELECT <campos> FROM <tabla> WHERE <condiciones>


● INSERT INTO <tabla> (<campo1>, ...) VALUES (<valor1>,...)
● UPDATE <tabla> SET <campo> = <valor> WHERE <condición>
● DELETE FROM <tabla> WHERE <condición>

Procedimiento

Un banco requiere un sistema de información que le permita gestionar la información de sus sedes y
clientes, por cada cliente se desea guardar sus cuentas de ahorros y préstamos que tenga con la entidad.

1
Universidad del Quindío
Programa de Ingeniería de Sistemas y Computación.
Análisis de Algoritmos II - SQL básico
Septiembre de 2020

Cree una base de datos con las tablas necesarias para modelar dicha solución. Piense cuáles podrían ser
los atributos que se deberían guardar en cada tabla. Los comandos a usar serían:

1. Como primera instancia se debe ingresar al monitor de base de datos, luego crear la base de datos
banco y acceder a ella, en la siguiente imagen se muestra esto.

$ mysql -u root -p
mysql> ​create database​ banco;
mysql> ​use​ banco;

2. Crear la tabla cliente, cada tabla debe tener una llave primaria (Primary key) la cual identifica cada
registro como único dentro de la tabla. Además, cada campo debe estar acompañado por su tipo de
dato y su longitud. Para este ejemplo se usará como llave primaria el campo de la cédula.

mysql> ​create table​ cliente( cedula varchar(10) ​not null​, nombre varchar(200) ​not null​,
email varchar(100) ​not null unique​, telefono int, primary key (cedula) );
mysql> ​describe​ cliente;

3. Crear la tabla sede, la llave primaria será un campo que representa el código de cada registro, dicho
campo será autoincrementable, por tal motivo debe ser de tipo int.

mysql> ​create table​ sede( codigo int ​not null ​auto_increment​, direccion varchar(200)
not null​, telefono int, primary key (codigo) );
mysql> ​describe​ sede;

4. La tabla préstamo depende de la tabla cliente, ya que se debe indicar a qué cliente pertenece cada
préstamo. Por ejemplo, el cliente Pedro solicitó un préstamo (con un valor y un plazo). Este tipo de
dependencia entre dos tablas se construye por medio de una llave foránea .

La llave foránea (Foreign key) identifica una columna o grupo de columnas en una tabla (tabla hija)
que se refiere a una columna o grupo de columnas en otra tabla (tabla maestra o referenciada). Las
columnas en la tabla hija deben ser la clave primaria en la tabla referenciada (o maestra).

mysql> ​create table​ prestamo( codigo_prestamo int ​not null​, valor_total int ​not null​,
plazo_meses int ​not null​, fecha_inicio date ​not null​, ​cedula_cliente​ varchar(10) ​not
null​, primary key (codigo_prestamo), ​foreign key​ (​cedula_cliente​) ​references​ cliente
(cedula) );
mysql> ​describe​ prestamo;

5. La tabla cuenta_ahorros (número, saldo, fecha_apertura) depende de la tabla cliente, ya que se


debe indicar a qué cliente pertenece cada cuenta de ahorros. Por ejemplo, la cliente Juanita tiene la
cuenta de ahorros número 122371901, con un saldo de 1’900.000 y fue creada el 23-03-2012. Este
tipo de dependencia entre dos tablas se construye por medio de una llave foránea. ​Cree la tabla
cuenta_ahorros.

6. Una vez definida la estructura de la base de datos, se puede hacer uso del comando drop para
borrar tablas, o del comando alter para modificarlas.

7. El siguiente paso consiste en registrar clientes de prueba. Para ingresar registros en las tablas se
usa el comando insert into, así:

mysql> ​insert into​ cliente ​values​ (​"​123​"​, ​"​Pepito​"​, ​"​pepe@mail.com​"​, 112345);

2
Universidad del Quindío
Programa de Ingeniería de Sistemas y Computación.
Análisis de Algoritmos II - SQL básico
Septiembre de 2020

mysql> ​insert into​ cliente(cedula, nombre, email) ​values​ (​"​124​"​, ​"​Juanita​"​,


"​juana@mail.com​"​);
mysql> ​insert into​ cliente ​values​ (​"​125​"​, ​"​Pablo​"​, ​"​pablo@mail.com​"​, 7901234);

En el registro 1 y 3 se crean dos clientes usando todos los campos de la tabla, en el registro 2 se
usa únicamente los campos: cédula, nombre y email, ya que el teléfono es opcional.

8. Inserte algunas sedes en la tabla sede.

mysql> ​insert into​ sede(direccion, telefono) ​values​ (​"​Portal del Quindío, Segundo piso
Local 2​"​, 7809012);

9. La sentencia select permite obtener registros a partir de una o varias tablas. En el siguiente ejemplo
se usa select para listar todos los clientes.

mysql> ​select ​*​ from ​cliente​;

10. Los registros se pueden actualizar o eliminar, a continuación se muestra un ejemplo de cada caso:

​ pdate c
mysql> u ​ liente​ set ​telefono = 7500000 ​where​ cedula = ​"​124​"​;
mysql> s​ elect *​ ​ from ​cliente​;

​ elete from ​cliente​ where​ cedula = ​"​125​"​;


mysql> d
mysql> s​ elect ​*​ from ​cliente​;

11. En el caso de las tablas cuenta_ahorros y prestamo, hay que tener en cuenta que ambas dependen
de la tabla cliente, por lo tanto para registrar una nueva cuenta de ahorro o un nuevo préstamo
primero deben existir clientes registrados en su tabla. La llave foránea es una restricción, por lo
tanto, exige que el valor que tome ese campo en la tabla cuenta_ahorros y prestamo debe ser una
cédula válida que exista en la tabla cliente. En el siguiente ejemplo se crean tres préstamos.

​ nsert into​ prestamo ​values​ (123139192, 20000000, 60, ​"​2019/08/26​"​, ​"​123​"​);


mysql> i
mysql> i​ nsert into​ prestamo ​values​ (921243710, 10000000, 60, ​"​2020/02/03​"​, ​"​125​"​);
mysql> i ​ nsert into​ prestamo v
​ alues​ (828302012, 2000000, 24, ​"​2018/11/17​"​, ​"​123​"​);

3
Universidad del Quindío
Programa de Ingeniería de Sistemas y Computación.
Análisis de Algoritmos II - SQL básico
Septiembre de 2020

Cree al menos tres cuentas de ahorro para los clientes que tenga registrados en la base de datos.

12. Una instrucción muy útil en SQL es “join”, la cual permite mezclar tablas para completar información.
Por ejemplo, si se desea obtener un listado de todos los clientes junto con sus préstamos, sería
necesario unir la tabla cliente y préstamo.

En el siguiente ejemplo se hace un “join” entre la tabla cliente y préstamo, el join implica una mezcla
de todos los registros de una tabla con todos los registros de la otra tabla. Por lo tanto, si hay 3
clientes y 3 préstamos, el resultado del join serán 9 registros, así:

mysql> ​select ​*​ from​ cliente ​join​ prestamo;

Esta información que devuelve la consulta con la instrucción “join” repite cada cliente tres veces, ya
que hay tres préstamos, pero resulta que al mezclar todo quedan préstamos junto a clientes que no
corresponden, por lo tanto se debe poner una restricción para limitar esta cantidad de registros,
para limitarlo se debe usar la instrucción “on” usando las llaves (primaria y foránea).

mysql> ​select ​*​ from​ cliente c ​join​ prestamo p ​on​ c.cedula = p.cedula_cliente;

Es importante mencionar que en el ejemplo anterior se hizo uso de alias para renombrar las tablas,
al cliente se le puso el alias “c”, y a prestamo se le puso el alias “p”. El “*” indica que se deben
seleccionar todos los campos tanto de la tabla cliente como la tabla préstamo, en total serán 9
campos (5 de la tabla prestamo y 4 de la tabla cliente).

Pero, se puede definir exactamente los campos que se quieren obtener en la consulta, por ejemplo:

4
Universidad del Quindío
Programa de Ingeniería de Sistemas y Computación.
Análisis de Algoritmos II - SQL básico
Septiembre de 2020

mysql> ​select​ c.cedula, c.nombre, p.codigo_prestamo, p.valor_total​ from​ cliente c ​join


prestamo p ​on​ c.cedula = p.cedula_cliente;

La lista que se obtiene contiene la cédula y nombre del cliente junto con el código y valor del
préstamo.

Tarea

1. Añada una llave foránea en la tabla cuenta_ahorros para que quede constancia de en qué sede se
abrió la cuenta a un cliente.

2. Añada un campo en la tabla sede que permita guardar la ciudad a la que pertenece cada sede.

También podría gustarte