0% encontró este documento útil (0 votos)
41 vistas93 páginas

Curso Completo de SQL y Bases de Datos

Base de datos para principiantes
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
41 vistas93 páginas

Curso Completo de SQL y Bases de Datos

Base de datos para principiantes
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

BASE DE DATOS

[Link] deVilla
Objetivos del curso. ¿Qué aprenderemos?
El objetivo principal del curso es aprender a diseñar y realizar
consultas, desde las más elementales a las más complejas,
para obtener datos de cualquier base de datos, de forma
eficiente y precisa mediante el lenguaje SQL.

▸ Dominar la sintaxis del lenguaje de consultas y como se


estructuran los sub-lenguajes que lo forman.
▸ Aprender como obtener información de cualquier base de
datos de una forma precisa y eficiente mediante sentencias
SQL.
▸ Conocerás como instalar y configurar tu base de
datos relacional desdecero
Temario
▸ SECCIÓN 1: Introducción

▸ SECCIÓN 2: Preparación del entorno de trabajo

▸ SECCIÓN 3: Lenguaje de Manipulación de datos


(DML) 1

▸ SECCIÓN 4: Lenguaje de Manipulación de datos


(DML) 2
Metodología, prácticas
▸ Instalaremos el entorno de trabajo completo:
servidor web, BBDD y cliente SQL.

▸ Cargaremos la base de datos de ejemplo

▸ Realizaremos consultas sobre la base de datos,


incrementando la complejidad exponencialmente.
Sección 1
INTRODUCCIÓN
1.
INTRODUCCIÓNA
LAS BBDD
RELACIONALES
Una Base de Datos (BD) es… Algunas
definiciones
“…una colección de ficheros relacionados”

“…un conjunto de diferentes tipos de datos


organizados e interrelacionados”

“…un conjunto de datos de diferentes


ámbitos, organizado sistemáticamente, es
decir, siguiendo ciertas reglas.”

Una base de datos relacional (BDR) es
un tipo de base de datos (BD) que
cumple con el modelo relacional (el
modelo más utilizado actualmente
para implementar las BD ya
planificadas).
Principales objetos de una Base de datos:
▸ Tablas:
▸ Campos (columnas) –Tipo de datos
▸ Registros (filas)
▸ Relaciones
▸ Índices,claves y restricciones (constraints)
▸ Consultas / Vistas
▸ Formularios
▸ Otros:
▸ Procedimientos /Triggers (disparadores)
Ejemplo Base de Datos
Esquema
BBDDSakila
2. SGBDR
(RDBMS)

RDBMS (SGBDR)
MÁS COMUNES
RDBMS (SGBDR) más comunes

▸ MS SQLServer ▸ PostgreeSQL
▸ Oracle ▸ MySQL
▸ MariaDB

▸ Access (MS Office) ▸ Base (libre / OpenOffice)

Propietarias Open Source


SQL: Structured
Query Languaje

3.
EL LENGUAJE SQL
SQL Structured Query Language
SQL:
(Lenguaje Estructurado de Consultas) Definición e
Historia
▸ Primer lenguaje para implementar el modelo
relacional de Codd (1970)
▸ Desarrollado por IBM – Primera versión 1974
▸ 1986:SQL-86 Pasa a ser un estándar de laANSI
▸ Última revisión SQL:2016
▸ Teóricamente un estándar,pero los fabricantes han introducido
funciones y variaciones propias. En la práctica se requieran ciertos
ajustes.
DDL
DML
DCL
(TCL)

4.
SUB-LENGUAJES
SQL
Sub lenguajes SQL DDL
DML
DCL
Data Definition Language Data Manipulation Language
Definicíón de datos Manipulación de datos
• CREATE • SELECT
• ALTER
• DROP DDL DML •

INSERT
UPDATE
• DELETE

TCL: Transaction Control Language

Data Control Language


DCL • BEGIN
• COMMIT
Control de datos • ROLLBACK
• GRANT
• REVOKE
Sección 2
PREPARACIÓN DEL
ENTORNODE TRABAJO
1.
DESCRIPCIÓN
ENTORNO DE
TRABAJO XAMPP
XAMPP es una distribución de Apache

Completamente gratuita y fácil de


instalar que contiene:
MariaDB, PHP y Perl.
ELEMENTOS ENTORNOXAMPP

▸ Multi sistema operativo:X


▸ ServidorHTTP Apache
▸ Motor de BBDD MariaDB (anteriormente MySQL)
▸ Lenguaje PHP + Lenguaje Pearl
▸ Otros:FTP Filezilla,Tomcat…y phpMyAdmin

• Alternativa:WAMPP (ExclusivoWindows)
[Link]
CLIENTE SQL HeidiSQL

▸ Hereda de MySQL-Front
▸ Conecta con MS SQL server,My SQL,MariaDB,
PotgreeSQL,etc…
▸ Open Source
▸ Existe la versión Portable

[Link]
XAMPP
HeidiSQL

2.
INSTALACIÓN
ENTORNO DE
TRABAJO
ENLACES ENTORNOXAMPP

▸ XAMPP: [Link]

▸ Apache: [Link]
▸ MariaDB: [Link]
▸ MySQL: [Link]
Panel control XAMPP
SakilaDB

3.
INSTALACIÓN
BBDD EJEMPLO
ESQUEMA BBDD SAKILA
DESCARGAR E INSTALAR LA BBDD
SAKILA

▸ MySQL doc:[Link]

▸ Sakila: [Link]/docs/[Link]

▸ Como instalar:
[Link]
[Link]
Resumen
i nst a l a ci ón:

En nuestro caso:
C:\xampp\mysql\bin
Sistema de
Administración de
Base de Datos DBMS
ER-Model

Conceptos Básicos de Modelo Entidad


Relación Entity-RelationshipModel
Terminologías:
▸ Entidad :
❖ Cosa o objeto del mundo real con independencia.
❖ Puede ser un objeto con existencia física ( ej .: casa,
persona) o con existencia conceptual (ej .: curso, trabajo)
▸ Atributo :
❖ propiedades que describen las entidades.
Terminologías:
Atributos Compuestos Atributos Simples
✓ Se puede dividir en otras ✓ No se puede dividir mas.
partes. ✓ Ej: el peso no se puede dividir
✓ Ej: nombre→ nombre, más
segundo nombre, apellido
Atributo deValor Unico Atributo Multivalor
✓ Tiene un valor único para ✓ Puede tener un conjunto de
una entidad en particular. valores para una entidad en
✓ Ej: edad→ atributo de valor particular.
único de una persona. ✓ Ej: título universitario,
conocimientos de idiomas.
Terminologías:
Atributos Derivados Atributos Almacenados
✓ Se puede derivar para otros ✓ El valor se divide de otros
atributos. atributos.
✓ Ej: edad→ se puede derivar ✓ Ej: fecha de nacimiento de una
de la fecha de nacimiento. persona.
Terminologías:
▸ Atributos complejos :
✓ Tiene componentes compuestos y multivalor.
✓ Atributos multivalor→representados dentro de ‘{ }’
✓ Atributos compuestos, representados dentro de '()’
✓ Ej: {título universitario (universidad, año, título, campo) }

▸ Valores Nulos :
✓ Nulo es algo que no es aplicable o desconocido.
Terminologías:
▸ Tipo de entidad:
ID Nombre Edad
✓ Una colección de
1 Harry 20
entidades que tienen los
mismos atributos. 2 Jeremy 22
✓ Ej. Estudiante 3 Josue 18

▸ Conjunto de entidades:
✓ Colección de entidades de un tipo de entidad en
particular en un momento determinado
Terminologías:
▸ Atributo Clave:
ID Nombre Edad
✓ Atributo que es capaz de
identificar cada entidad 1 Harry 20
de forma única. 2 Jeremy 22
✓ Ej. Identificación de 3 Josue 18
Estudiante

▸ Valor Conjunto deAtributos:


✓ Conjunto de valores que se pueden asignar a un atributo
Símbolos usados en el Diagrama ER

▸Entidad

▸Entidad Debil

▸Atributo

▸Atributo Clave
Símbolos usados en el Diagrama ER

▸Atributo
Multivalor

▸Atributo
Compuesto
Símbolos usados en el Diagrama ER

▸Atributo
Derivado

▸Relación de
identificación
Ejemplo: Diagrama ER
❑Vamos a una aplicación de base de datos de
ejemplo, llamada EMPRESA-LyonSoft
❑Recopilación de requisitos:
❑ LyonSoft está organizada en departamentos. Cada
departamento tiene un nombre único, un número
único y un empleado en particular que administra
el departamento. También realizamos un
seguimiento de la fecha de inicio del gerente. Un
departamento puede tener varias localizaciones.
Ejemplo: Diagrama ER
❑Recopilación de requisitos:
❑ Un departamento controla la cantidad de
proyectos, cada uno de los cuales tiene un nombre
único, un número único y una única ubicación.
❑ Datos del empleado: nombre, SSN, sexo, salario.
Realizamos un seguimiento del número de horas
por semana en cada proyecto.
❑ Llevar un registro de acuerdo a cada empleado
(nombre, sexo, parentesco con el empleado)
Diseño Conceptual Inicial de la Base de Datos
LyonSoft
❑ Podemos identificar 4 tipos de entidades en función
de los requisitos:

❑ Departamento
Nombre,
Numero,
{Ubicaciones},
Gerente,
FechaInicioGerente.
Diseño Conceptual Inicial de la Base de Datos
LyonSoft
❑ Proyecto
Nombre,
Numero,
Ubicación,
DepartamentoControl.
Diseño Conceptual Inicial de la Base de Datos
LyonSoft
❑ Empleado
Nombre
(Nombres,Apellidos),
SSN, Sexo, Salario
FechaNacimiento,
Departamento,
{trabaja en (proyecto,
horas)}
Diseño Conceptual Inicial de la Base de Datos
LyonSoft
❑ Dependencia
Empleado,
NombreDependencia,
Sexo,
Cumpleaños,
Relación.
ER-Model

Concepto de Relación en el Diagrama ER


Relaciones
❑ Relación: Asociación entre 2 o más entidades
❑ Ej: Instructor enseña Estudiante
❑ Grado de Relación: Denota el número de tipos de
entidad que participan en una relación.
❑ 1. Relación Única→ Existe cuando hay una asociación
con una sola entidad
Relaciones
❑ Grado de Relación: Denota el número de tipos de
entidad que participan en una relación.
❑ 2. Relación Binaria→ Existe cuando hay una
asociación entre dos entidades
Relaciones
❑ Grado de Relación: Denota el número de tipos de
entidad que participan en una relación.
❑ 2. Relación Ternaria→ Existe cuando existe una
asociación entre tres entidades
Relaciones
❑ Restricciones de Relación:
❑ Cardinalidad:
❑ Número máximo de instancias de relación en las que
una entidad puede participar.
❑ Posibles razones de cardinalidad para la relación
binaria. 1:1, 1:N, N:1, N:M
Nombres
Apellidos Numero
Sexo Ubicacion
SSN Nombre
Nombre
Salario Trabaja
1
N para Departamento
Empleado 1 1 1
FecNac 1 N Administra

FecIni Controla
Depende Trabaja
de en

Horas

Cumple Numero
N Nombre M N
Sexo
Dependencia
Proyecto

Nombre Relacion
Ubicacion
Sección 3
LENGUAJE DE
MANIPULACIÓN
DE DATOS DML (1)
Comando
SELECT

1.
SINTAXISBÁSICA
SQL
PRINCIPIOS SINTAXISSQL

▸ Estructurado (Structured…)

▸ Normalizado (casiestándar)
▸ Comandos (SELECT, INSERT…)
▸ Cláusulas (FROM,WHERE…)
▸ Operadores(DISTINCT, LIKE…)
SINTAXISSQL

▸ No sensitivo a mayúsculas (aunque hay convenio):


▸ SELECT = select = Select,etc…
▸ Usar ; para terminar cada consulta
▸ Se puede estructurar libremente (filas)

SELECT * FROM actor; SELECT *


FROM actor
;
▸ Comentarios (puede variar en cada SGBDR):
/* esto son comentarios,bla,bla */
Consulta Básica en SQL

SELECT *
FROM actor
;
Selección de columnas:

SELECT la st_na me , fir st_name


FROM actor
;
Registros únicos:
DISTINCT
SELECT DISTINCT l a s t _ n a m e
FROM actor
;
A quí, afe c t a r í a e n a l g o ?

SELECT DISTINCT *
FROM actor
;
Alias de columna: AS

SELECT title AS ‘Titulo’, description AS Sinopsis


FROM film
;
Cláusulas
WHERE
ORDER BY

2.
RESTRICCIÓNY
ORDENACIÓN
R e s t r i c c i ó n (filtrar): C l á u s u l a WHERE

SELECT la st_na me , fir st_name


FROM actor
WHERE l a s t _ n a m e ='ALLEN'
;
Operandos de comparación:

= / > / < / >= / <= / <> (!= en a lg unos DBMS)

SELECT *
FROM film
WHERE length >= 120;
O r d e n a r : C l á u s u l a ORDER BY +
[ASC] / DESC

SELECT *
FROM film
ORDER BY title DESC
;
Seleccionar, filtrar y ordenar:
WHERE + ORDER BY

SELECT la st_na me , fir st_name


FROM actor
WHERE l a s t _ n a m e = 'ALLEN’
ORDER BY title DESC
;
Uso de:
AND, OR, NOT
LIKE, IN,BETWEEN

3.
OPERADORES
LÓGICOS
C o n d i c i o n e s múl t i pl es: A N D /
OR
SELECT title, rental_rate
FROM film
WHERE length < 90 AND rental_rate <=3
;
Filtro c o m p l e j o : A N D /
OR
SELECT *
FROM customer
WHERE (first_name = 'JOHN' OR l a s t _ n a m e = 'SMITH')
AND active =1
;
Negación, uso de
NOT
SELECT la st_na me , fir st_name
FROM actor
WHERE NOT l a s t _ n a m e ='ALLEN’

=
;
SELECT la st_na me , fir st_name
FROM actor
WHERE l a s t _ n a m e <>'ALLEN’
;
O p e r a d o r L I K E + wildcards
(%)

SELECT *
FROM film
WHERE title LIKE'%LOVE%'
;

[Link]
[Link]

[Link]
Operador IN vs igualdad
(=)

SELECT *
FROM actor
WHERE l a s t _ n a m e IN

=
('ALLEN','MCCONAUGHEY','PALTROW')
;
SELECT *
FROM actor
WHERE l a s t _ n a m e = 'ALLEN’
OR l a s t _ n a m e = 'MCCONAUGHEY’
OR l a s t _ n a m e ='PALTROW'
O p e r a d o r B E T W E E N v s >= x
A N D <= y
SELECT *
FROM film
WHERE rental_rate BETWEEN 0.5AND 2.5

=
;
SELECT *
FROM film
WHERE rental_rate >= 0.5
AND rental_rate <= 2.5
;
Ejemplo consulta
completa: Seleccionar
c o l u m n a s / A l i a s filtrar
(combinado)
o r d e n a r (múltiple):
SELECT title AS 'film name', rental_rate AS price
FROM film
WHERE (length BETWEEN 90 AND 120)
AND (rental_rate <=3 OR replacement_cost <15)
ORDER BY price DESC, title
;
Sección 4
LENGUAJE DE
MANIPULACIÓN
DE DATOSDML
(2)
Comando
UNION

1.
CONSULTAS DE
UNIÓN
Comando UNION
[ALL]:

SELECT la st_na me , fir st_name


FROM customer
UNION
SELECT la st_na me , fir st_name
FROM actor
2.
SUBCONSULTAS SUBQUERIES
Ejemplo subconsultas
SUBQUERIES

SELECT lastName, firstName


FROM employees
WHERE officeCode IN (SELECT officeCode
FROM offices
WHERE country ='USA’)
;
3.
FUNCIONES
ESCALARES
CONCAT, LEFT, LCASE, TRIM…
Ejemplo función
LCASE

SELECT LCASE(title)
FROM film
;

[Link]
4.

AGRUPAMIENTO
4.1 FUNCIONES
AGREGADO
COUNT, MAX, MIN, SUM, AVG
E j e m p l o f u n c i ó n COUNT()

SELECT count(*) AS 'ClientesActivos'


FROM customer
WHERE active = 1
;

[Link]
E j e m p l o f u n c i ó n MAX()

SELECT max(rental_rate) AS ‘Precio máximo’


FROM film
;
4.

AGRUPAMIENTO
4.2 GROUP BY/
HAVING
GROUP BY / HAVING
Ejemplos Agrupación: GR OUP B Y
SELECT count(film_id), rental_rate
FROM film
GROUP BY rental_rate
;
SELECT count(film_id), rental_rate
FROM film
WHERE replacement_cost <=20
GROUP BY rental_rate
ORDER BY rental_rate DESC
;
IMPORTANTE
GROUP BY
Si requerimos de agrupación, no podemos
exigir detalle y viceversa
Agrupación: GR O UP B Y /HAVING

SELECT count(film_id),replacement_cost
FROM film
WHERE replacement_cost <= 20
GROUP BY replacement_cost
HAVING count(film_id) >= 50
ORDER BY replacement_cost
;
IMPORTAN
TE
HAVING
Hay quien llama a HAVING ‘El Where dentro
del Where’ ;)
5.

CONSULTAS
SOBRE MÁSDE
UNATABLA
[INNER] JOIN
LEFT / RIGHT / FULL [OUTER] JOIN
TIPOS DE
RELACIÓN

PERSONA CÓNYUGE
Consultas multi-tabla mediante
WHERE (sin Join)
Alias de tabla: [AS]

SELECT first_name , la st_na me , address


FROM customer c, address a
WHERE c.address_id =a.address_id
;
T
I
P
O
S
D
E
J
O
I
N
Ejemplo consulta multi-tabla:
[INNER] JOIN

SELECT first_name , la st_na me , address


FROM customer c JOIN address a
ON c.address_id = a.address_id
;
¡GRACIAS!

También podría gustarte