Introducción al SQL
Agenda
Introducción a las Bases de Datos
Motores de Base de Datos
SQL - Structured Query Language Tablas
Clave Primaria
Clave Foránea
Tipos de Datos
Practica: Sentencias SQL
Presentación
Introducción a las Bases de Datos
Bases de Datos
¿Qué es un dato?
Un dato es una representación simbólica (numérica, alfabética, algorítmica, etc.)
de un atributo o variable, que por sí mismo no brindan ninguna información
relevante.
¿Qué es una Base de Datos?
Una base de datos, o banco de datos, es un conjunto de datos pertenecientes a
un mismo contexto y almacenados sistemáticamente para su posterior uso. En
este sentido, una biblioteca puede considerarse una base de datos compuesta en
su mayoría por documentos y textos impresos en papel e indexados (ordenados)
para su consulta. Actualmente, y debido al desarrollo tecnológico de campos
como la informática y la electrónica, la mayoría de las bases de datos están en
formato digital (electrónico), que ofrece un amplio rango de soluciones al
problema de almacenar datos.
Bases de Datos
Archivo:
ALUMNOS
Archivos relacionados a
través de un mismo contexto
Base de datos
Archivo :
COLEGIO
Motores de Bases de Datos
Motores de bases de datos
Motores de bases de datos
Un motor de Bases de Datos es un conjunto de programas que permiten el
almacenamiento, modificación y extracción de la información en una base de
datos, además de proporcionar herramientas para añadir, borrar, modificar y
analizar los datos. Los usuarios pueden acceder a la información usando
herramientas específicas de consulta y / o de generación de informes, o bien
mediante aplicaciones al efecto.
El software encargado del almacenamiento, organización y recuperación de
la información almacenada en una base de datos se llama Sistema Gestor
de Bases de Datos (DBMS siglas en ingles)
Bases de datos Relacionales
Bases de datos relacionales
El principio de las bases de datos relacionales se basa en la organización de la información en trozos
pequeños, que se relacionan entre ellos mediante la relación de identificadores.
En el ámbito informático se habla mucho de ACID, cuyas siglas vienen de las palabras en inglés:
atomicidad, consistencia, aislamiento y durabilidad. Son propiedades que las bases de datos
relacionales aportan a los sistemas y les permiten ser más robustos y menos vulnerables ante fallos.
La base de datos relacional más usada y conocida es MySQL junto con Oracle, seguida por SQL
Server y PostgreSQL, entre otras.
Bases de datos no Relacionales
Como su propio nombre indica, las bases de datos no relacionales son las que, a diferencia de las relacionales, no
tienen un identificador que sirva de relación entre un conjunto de datos y otros. Como veremos, la información se
organiza normalmente mediante documentos y es muy útil cuando no tenemos un esquema exacto de lo que se
va a almacenar.
La indiscutible reina del reciente éxito de las bases de datos no relacionales es MongoDB seguida
por Redis, Elasticsearch y Cassandra.
Formatos de NOSQL
La información puede organizarse
en tablas o en documentos. Cuando
organizamos información en un Excel, lo
hacemos en formato tabla y, cuando los
médicos hacen fichas a sus pacientes, están
guardando la información en documentos.
Lo habitual es que las bases de
datos basadas en tablas sean bases de
datos relacionales y las basadas en
documentos sean no relacionales, pero
esto no tiene que ser siempre así. En
realidad, una tabla puede transformarse en
documentos, cada uno formado por cada
fila de la tabla. Solo es una cuestión de
visualización.
Los dos esquemas de la imagen contienen exactamente la misma información. Lo único que
cambia aquí es el formato: cada documento de la figura de la derecha es una fila de la figura [
{
de la izquierda. "student_id":1,
Se ve más claro en la tabla, ¿verdad? Lo que pasa es que a menudo en una base de datos no "age":12,
relacional una unidad de datos puede llegar a ser demasiado compleja como para "subjects":{
"mathematics":{
plasmarlo en una tabla. Por ejemplo, en el documento JSON de la imagen que se muestra "scores":[
a continuación, al tener elementos jerárquicos, es más difícil plasmarlo en una tabla plana. 7,
8,
Una solución sería plasmarlo en varias tablas y, por tanto, necesitar de relaciones. 7,
10
],
Esto explica por qué las bases de datos relacionales suelen servirse de tablas y las no "final_score":8
relacionales de documentos JSON. En cualquier caso, a día de hoy, las bases de datos más },
competitivas suelen permitir, de una forma u otra, operaciones de los dos tipos. Por "biology":{
"scores":[
ejemplo, el servicio de base de datos en la nube BigQuery que ofrece Google es, en 6,
principio, una base de datos de lenguaje de consulta SQL, por lo que permite fácilmente 6,
relacionar varias tablas, pero, a su vez, permite insertar elementos jerárquicos JSON, más 5,
7
propios de bases de datos no relacionales. ],
La diferencia entre el éxito y el fracaso recae, sobre todo, en el diseño del modelo. Es "final_score":6
}
decir, si se decide que el mejor enfoque es usar una base de datos relacional, no es }
suficiente con meter la información a lo bruto en una base de datos relacional y esperar a }
que se relacione sola, porque eso no va a ocurrir. De nada sirve elegir la base de datos más ]
apropiada para nuestro sistema, si luego no se hace un buen diseño.
SQL - Structured Query Language
SQL
¿Qué es SQL?
Por sus siglas en inglés Structured Query Language (Lenguaje de
Consultas Estructuradas) es un lenguaje estándar de acceso a base
de datos relacionales.
SQL brinda la posibilidad de realizar consultas con el objetivo de
recuperar información de las bases de datos de manera sencilla.
Tablas
Tablas
Principales características:
1- Las tablas son objetos compuestos por una estructura (conjunto de columnas) que almacenan
información interrelacionada (filas) acerca de algún objeto en general.
2- Las tablas tienen un solo nombre y es único en toda la base datos.
3- Están compuestas por registros (filas) que pueden o no ser únicos y campos (columnas) que sí son
únicos en cada tabla.
4- Los registros y campos pueden estar en diferentes órdenes.
5- Una base de datos puede contener varias tablas, y cada tabla almacena información con respecto a
un objeto en particular.
Tipos de datos
Tipos de datos
Al diseñar nuestras tablas tenemos que especificar el tipo de
datos y tamaño que podrá almacenar cada campo. Una
correcta elección debe procurar que la tabla no se quede corta
en su capacidad, que destine un tamaño apropiado a la
longitud de los datos, y la máxima velocidad de ejecución
Las BD admiten dos tipos de datos: números y cadenas de
caracteres. Junto a estos dos grandes grupos, se admiten
otros tipos de datos especiales: formatos de fecha, etc.
Veamos algunos ejemplos
Ejemplo: Tabla ALUMNOS
VARCHAR DATE
VARCHAR INT INT
(TINYINT -127 a 125)
Clave Primaria (Primary Key)
Clave Primaria (PK)
La clave primaria se utiliza para identificar en forma única cada
línea en la tabla. No puede haber dos filas en una tabla que
tengan la misma clave primaria.
- La columna definida como clave primaria (PRIMARY KEY)
debe ser UNIQUE (valor único) y NOT NULL (no puede
contener valores nulos).
Clave Primaria (PK)
- Una clave primaria puede consistir en uno o más
campos en una tabla. Cuando se utilizan múltiples
campos como clave primaria, se los denomina claves
compuestas.
- Las claves primarias pueden especificarse cuando se
crea la tabla (utilizando CREATE TABLE) o cambiando la
estructura existente de la tabla (utilizando ALTER
TABLE).
Cómo declaramos una clave primaria:
Clave Foránea (Foreign Key)
Clave Foránea (FK)
Una clave foránea (o Foreign Key FK) es una limitación referencial entre dos tablas.
La clave foránea identifica una columna o grupo de columnas en una tabla (tabla hija o
referendo) que se refiere a una columna o grupo de columnas en otra tabla (tabla
Maestra o referenciada). Es decir, que la clave Foránea de una tabla, es clave primaria
en otra tabla de la cual se hace la referencia.
Ejemplo:
Colegio Primary Key: Colegio ( Tabla Padre)
Foreing Key: Colegio (Tabla Hija)
Alumnos El campo de clave foránea no puede
tomar valores que no estén en la
tabla a la cual se hace referencia,
debe respetar la relación Padre-Hijo
Clave Foránea (FK)
Cómo definir una FK:
Ejemplo:
Colegio Primary Key: id_colegio ( Tabla Padre)
Foreign Key: id_colegio (Tabla Hija)
Alumnos
Practica: Sentencias básicas en SQL
CREATE
La sentencia CREATE es utilizada para crear la Base de Datos y las tablas que la componen.
Crear Base de Datos:
Crear una tabla dentro de la base:
INSERT
La sentencia INSERT permite ingresar los datos dentro de las tablas de nuestra base de datos.
Hemos creado la tabla Alumnos la cual posee cinco campos, entre ellos: Matrícula, Nombre
Apellido, Edad y Código de colegio.
La sentencia para insertar un registro en la tabla Alumno sería:
DROP y DELETE
- La sentencia DROP se utiliza para eliminar una Base de Datos o Tabla de manera permanente.
Ejemplos:
- La sentencia DELETE se utiliza comúnmente para eliminar registros de las tablas.
SELECT
La sentencia SELECT se utiliza para recuperar información de la base de datos, y
puede proyectar las columnas seleccionadas, es decir, realizar un filtro sobre la tabla o tablas
originales y recuperar solamente datos de las columnas filtradas. También puede seleccionar
registros según varios criterios o condiciones, que recopilan datos de diferentes tablas a través de
una relación entre ellas.
Estructura SELECT
SELECT * FROM TABLA ( * Simboliza el total de los registros )
SELECT Columa1,Columna3 FROM TABLA
SELECT TOP 10 * FROM TABLA
SELECT * FROM TABLA WHERE (Condición de Filtrado)
SELECT
ALTER TABLE
Esta sentencia es utilizada para modificar la estructura de una tabla en la base de datos. Por
ejemplo es posible agregar un campo a la tabla o eliminar alguno de ellos.
Agregar un campo:
Eliminar un campo:
Esta sentencia también puede ser utilizada para otro tipo de modificaciones, como por ejemplo
asignar claves primarias o foraneas a campos ya definidos.
ORDER BY
Esta sentencia se utiliza para ordenar los resultados de una consulta
según el valor de la columna especificada
SELECT *
FROM nombre_tabla
WHERE Condicion
ORDER BY nombre_columna(s) ASC|DESC
La instrucción WHERE es opcional. Sin embargo, si existe una cláusula WHERE, viene antes de la
cláusula ORDER BY ASC significa que los resultados se mostrarán en orden ascendente, y DESC significa
que los resultados se mostrarán en orden descendente. Si no se especifica ninguno, la configuración
predeterminada es ASC.
UPDATE
La sentencia 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
La cláusula SET establece los nuevos valores para las columnas indicadas.
La cláusula WHERE sirve para seleccionar las filas que queremos modificar.
Aclaración: Si omitimos la cláusula WHERE, por defecto, modificará los valores en
todas las filas de la tabla.
Ejercicios
Ejercicios
Se desea crear una base de datos para administrar los consorcios de todos
los edificios de Capital Federal y Gran Buenos Aires. Cada edificio cuenta con
un solo encargado y por cada edificio se tiene cierta cantidad de inquilinos
BD
Consorcio
CREATE
1 - Crear la Base de Datos “Consorcio”.
2 - Crear la tabla “Edificio” dentro de la BD con los siguientes campos:
codigo_edificio INT y PK
nombre VARCHAR(30) NO ADMITE VALORES NULOS
direccion VARCHAR(50)
localidad CHAR(5)
3 - Crear la tabla “Encargado” con los siguientes campos”
id_encargado INT y PK,
nombre VARCHAR (30) NOT NULL,
Edad INT
codigo_edificio INT y FK
4 – Crear una tabla llamada Inquilino que posea los siguientes campos :
nro_inquilino (entero y clave primaria), nombre ( cadena de 30, no nulo ),
código_edificio (entero y clave foránea), fecha_ingreso (fecha)
Ejercicios
INSERT
5. Cargar 5 registros en la tabla Edificio.
(Localidad se distingue por CABA, si es capital o BSAS si es provincia).
6. Cargar 5 registros en la tabla Encargado
7. Cargar los siguientes registros en la tabla Inquilino
(1 , 'Marcelo‘ , 5 , '2010-11-21 00:00:00‘)
(2 , ’Juan', 10 ,'2012-01-13 00:00:00 ')
(3 , ’Pedro', 15 ,'2015-06-17 00:00:00 ')
(4 , ’Martina', 20 ,'2007-02-27 00:00:00 ')
(5 , ’Julieta', 25 ,'2001-12-21 00:00:00 ')
Ejercicios
ALTER
8. Agregar el campo ‘genero’ a la tabla inquilino ( TIPO CHAR(1) )
9. Eliminar definitivamente la columna ‘edad’ de la tabla encargado
UPDATE
10. Actualizar el campo genero que sean Masculinos en la
tabla Inquilino.
11. Actualizar el campo genero que sean Femeninos donde
los valores sean NULL
DROP - DELETE
12. Eliminar el primer registro de la tabla inquilino
13. Eliminar la Tabla Encargado
Ejercicios
SELECT
14 – Mostrar todos los registros de la tabla Edificio
15 – Mostrar los inquilinos de sexo femenino que hayan ingresado antes del 2006
16 – Mostrar el nombre de los edificios con localidad en CABA
17 – Mostrar los primeros dos registros de la tabla inquilinos
18 – Mostrar los registros de la tabla Inquilinos ordenados por fecha de ingreso
( Mas reciente a menos reciente)
Ejercicios
SELECT
14 – Mostrar todos los registros de la tabla Edificio
15 – Mostrar los inquilinos de sexo femenino que hayan ingresado antes del 2006
16 – Mostrar el nombre de los edificios con localidad en CABA
17 – Mostrar los primeros dos registros de la tabla inquilinos
18 – Mostrar los registros de la tabla Inquilinos ordenados por fecha de ingreso
( Mas reciente a menos reciente)
Adicional Funciones
Funciones agregadas SQL, devuelven un sólo valor, calculado con los valores de una columna.
1.AVG() - La media de los valores - SELECT AVG (‘nombreColumna’) FROM nombreTabla;
2.COUNT() - El número de filas - SELECT COUNT("nombre_columna") FROM "nombre_columna";
3.MAX() - El valor más grande - SELECT MAX (nombreColumna) FROM nombreTabla;
4.MIN() - El valor más pequeño - SELECT MIN (nombreColumna) FROM nombreTabla;
5.SUM() - La suma de los valores - SELECT SUM (nombreColumna) FROM nombreTabla;
6.GROUP BY - Es una sentencia que va muy ligada a las funciones agregadas
Funciones escalares SQL, devuelven un sólo valor basándose en el valor de entrada.
1.UPPER() - Convierte un campo a mayúsculas SELECT UCASE (nombreColumna) FROM nombreTabla;
2.LOWER() - Convierte un campo a minúsculas SELECT UCASE (nombreColumna) FROM nombreTabla;
3.SUBSTRING() - Extrae caracteres de un campo de texto
4.LEN() - Devuelve la longitud de un campo de texto ELECT LEN (nombreColumna) FROM nombreTabla;
5.GETDATE() - Devuelve la hora y fecha actuales del sistema
6.FORMAT() - Da formato a un formato para mostrarlo. Ej: formato fecha
Ejercicios