Sei sulla pagina 1di 234
INTRODUCCIÓN A LOS SISTEMAS DE BASES DE DATOS
INTRODUCCIÓN A LOS SISTEMAS DE BASES DE DATOS
¿Por qué una Base Datos? Compactación. No hay necesidad de archivos de papel voluminosos. Velocidad.
¿Por qué una Base Datos?
Compactación. No hay necesidad de archivos de papel
voluminosos.
Velocidad. La máquina puede actualizar más
rápidamente que el humano.
Menos trabajo laborioso.
Actualidad. La información la tenemos disponible
siempre.
Introducción: ¿La manera más fácil de almacenar información en una computadora es mediante archivos? ¿Es
Introducción:
¿La manera más fácil de almacenar información en
una computadora es mediante archivos?
¿Es la mejor manera?
¿Has realizado alguna aplicación basada en archivos?
Introducción: Ingresar Clientes Cuentas de Ahorro struct estructura_Cliente { Int Numero; char nombre[30]; char
Introducción:
Ingresar Clientes
Cuentas de Ahorro
struct estructura_Cliente {
Int Numero;
char nombre[30];
char apellido[40];
char telefono[10];
char edad;
};
struct estructura_Cliente {
Int Numero;
char nombre[30];
char apellido[40];
char telefono[10];
double saldo;
};
Clientes.dat
Ahorros.dat
Introducción: Un sistema de este tipo debe contener varios programas de aplicación para gestionar los
Introducción:
Un sistema de este tipo debe contener varios
programas de aplicación para gestionar los archivos.
Se añaden nuevos programas según surgen las
necesidades.
Los sistemas operativos convencionales soportan este
sistema de archivos.
Introducción: Guardar información en este tipo de sistemas puede tener inconvenientes importantes: Redundancia e
Introducción:
Guardar información en este tipo de sistemas puede
tener inconvenientes importantes:
Redundancia e inconsistencia.
Dificultad al acceso a datos.
Aislamiento de datos.
Problemas de integridad.
Problemas de atomicidad.
Anomalías para el acceso concurrente.
Problemas de seguridad.
Propósito de los sistemas de BD Razones como las anteriores, entre otras, motivaron el desarrollo
Propósito de los sistemas de BD
Razones como las anteriores, entre otras, motivaron el
desarrollo de los sistemas de bases de datos.
¿Qué es una Base de Datos? “Colección de datos que contiene información relevante para una
¿Qué es una Base de Datos?
“Colección
de
datos
que
contiene
información
relevante para una empresa”. (1)
“Una
base
de
datos
es
un
conjunto
de datos
persistentes que es utilizado por los sistemas de
aplicación de alguna empresa dada”. (2)
La persistencia de los datos se refiere a que permanecen a pesar de la terminación
La
persistencia
de
los
datos
se
refiere
a
que
permanecen a pesar de la terminación de la aplicación
que los utiliza.
El
término
empresa,
es
referido
a
cualquier
organización o a un solo individuo.
Podemos referirnos a una base de datos como una
especie de armario electrónico para archivar.
Los usuarios pueden realizar operaciones tales como:
Agregar nuevos archivos en la base de datos.
Insertar datos en los archivos.
Recuperar datos de los archivos.
Modificar datos en archivos existentes.
Eliminar datos de los archivos existentes.
Eliminar archivos existentes de la base de datos.
Ejemplos: Pequeño archivo de una base de datos Tabla CLAVE NOMBRE_MATERIA PROFESOR CALIFI CURSADA TRIMESTRE
Ejemplos:
Pequeño archivo de una base de datos
Tabla
CLAVE
NOMBRE_MATERIA
PROFESOR
CALIFI
CURSADA
TRIMESTRE
FEC_INI
FEC_FIN
1CALCULO I
ROBERTO ROJAS LAGUNA
10
S
INVIERNO_1998
01/01/1998
30/03/1998
2FISICA I
EDGAR ALVARADO MENDEZ
8
S
INVIERNO_1998
01/01/1998
30/03/1998
3CALCULO II
MONICA TREJO DURAN
8
S
PRIMAVERA_1998
01/04/1998
31/07/1998
4FISICA II
EDGAR ALVARADO MENDEZ
8
S
PRIMAVERA_1998
01/04/1998
31/07/1998
5COMPUTACION
RAUL ESCAREÑO
9
S
PRIMAVERA_1998
01/04/1998
31/07/1998
6QUIMICA I
GUADALUPE GONZALEZ
0
N
VERANO_1998
01/08/1998
15/09/1998
7CALCULO III
ROBERTO ROJAS LAGUNA
0
N
VERANO_1998
01/08/1998
15/09/1998
Registro
Campo
Sistema de Base de Datos Un Sistema de Base de Datos es una herramienta computarizada
Sistema de Base de Datos
Un Sistema de Base de Datos es una herramienta
computarizada cuya finalidad es almacenar
información y permitir recuperar y actualizar esa
información en base a peticiones.
Componentes de un Sistema de Base de Datos Datos. La información que se almacena en
Componentes de un Sistema de
Base de Datos
Datos. La información que se almacena en la base de datos.
Puede ser:
Integrada. Se puede visualizar cada parte de la base como una
unificación de varios archivos.
Compartida. La misma parte de información puede ser utilizada por
distintos usuarios, en el mismo momento.
Hardware. Que consta de:
Volúmenes de almacenamiento secundario.
Dispositivos de entrada-salida.
Controladores, etc.
Software. Más comúnmente conocidos como sistemas de
administración de base de datos BDMS.
Usuarios. Programadores, usuarios finales y administradores.
BDMS o SGBD Es por mucho el componente de software más importante del sistema en
BDMS o SGBD
Es por mucho el componente de software más
importante del sistema en general.
A menudo se utiliza para para referirse al producto
terminado de algún fabricante.
Aplicación de los sistemas de Base de Datos Banca: Para la información de los clientes,
Aplicación de los sistemas de Base
de Datos
Banca: Para la información de los clientes, cuentas
préstamos y transacciones bancarias.
Líneas aéreas: para reservas e información de horarios.
Universidades: para información de los estudiantes,
matrículas en las asignaturas y cursos.
Transacciones de tarjetas de crédito: para compras con
tarjeta y generación de extractos mensuales.
Telecomunicaciones: para guardar el registro de las
llamadas realizadas , generar facturas, etc.
Finanzas:…
Ventas:…
Aplicación de los sistemas de Base de Datos La lista anterior puede ser más larga…
Aplicación de los sistemas de Base
de Datos
La lista anterior puede ser más larga…
Ha habido adelantos tecnológicos muy importantes
como la aparición del internet, que vino a aumentar el
acceso directo a las bases de datos en interfaces Web.
Las interfaces de usuario ocultan los detalles del acceso
a las bases de datos, y la mayoría de la gente, ni
siquiera es consiente de que está interactuando con
una Base de datos.
¿Quién usa una base de datos? Administradores Usuarios
¿Quién usa una base de datos?
Administradores
Usuarios
Usuarios: Hay 4 tipos de usuarios, clasificados por la forma en que esperan interactuar con
Usuarios:
Hay 4 tipos de usuarios, clasificados por la forma en
que esperan interactuar con el sistema.
Normales. Usuarios que usan una aplicación.
Programadores de aplicaciones. Profesionales que
escriben programas de aplicación.
Sofisticados. Formulan consultas en un lenguaje de
consultas de bases de datos.
Especializados. Escriben aplicaciones de bases de datos
que no encajan en el marco tradicional del
procesamiento de datos.
Administradores: Son las personas que tienen el control central del sistema. Y realizan tareas como:
Administradores:
Son las personas que tienen el control central del
sistema. Y realizan tareas como:
Definición del esquema.
Método de acceso.
Modificación del esquema.
Autorización o restricción de acceso.
Mantenimiento rutinario.
Copias de seguridad.
Espacio en discos duros.
Revisión de trabajos que se ejecuten en la BD.
Sistemas de Base de Datos Usuarios Programas de Aplicación ODBC Cadenas de Conexión Lenguajes de
Sistemas de Base de Datos
Usuarios
Programas de
Aplicación
ODBC
Cadenas de Conexión
Lenguajes de
Consulta
DBMS
Administradores
Lenguajes de Consulta Existen varios lenguajes de consultas de bases de datos, tanto comercial como
Lenguajes de Consulta
Existen varios lenguajes de consultas de bases de datos,
tanto comercial como experimentalmente.
SQL, cálculo relacional de tuplas, cálculo relacional de
dominio, QBE, etc.
El lenguaje de consultas más ampliamente usado es el
SQL (Structured Query Language) o Lenguaje de
Consultas Estruturado.
Lenguajes de Consulta Los sistemas de base de datos proporcionan dos tipos de lenguaje: Lenguaje
Lenguajes de Consulta
Los sistemas de base de datos proporcionan dos tipos
de lenguaje:
Lenguaje de Manipulación de Datos (LMD).
Lenguaje de Definición de Datos (LDD ).
LDD
LMD
SQL
Lenguajes de Consulta Lenguaje de Manipulación de Datos (LMD). Permite a los usuarios tener acceso
Lenguajes de Consulta
Lenguaje de Manipulación de Datos (LMD). Permite a
los usuarios tener acceso a los datos y manipularlos.
Recuperación.
Inserción.
Borrado.
Modificación.
Hay dos tipos de LMD
Procedimentales. Necesitan que el usuario especifique
qué datos quiere y cómo obtener esos datos.
Declarativos. Necesitan que el usuario especifique qué
datos quiere sin que haga falta cómo obtener esos datos.
Lenguajes de Consulta Lenguaje de Definición de Datos (LDD). Permite a los administradores especificar el
Lenguajes de Consulta
Lenguaje de Definición de Datos (LDD). Permite a los
administradores especificar el esquema de la base de
datos, así como las propiedades de los datos.
Crear Tabla.
Eliminar Tabla.
Crear Índices.
Modelos de Datos Bajo la estructura de las bases de datos se encuentra el modelo
Modelos de Datos
Bajo la estructura de las bases de datos se encuentra el
modelo de datos: Una colección de herramientas
conceptuales para escribir los datos, sus relaciones, su
semántica y restricciones de consistencia.
Podemos encontrar cuatro categorías:
Modelo relacional.
Modelo Entidad-Relación.
Modelo Orientado a Objetos.
Modelo de datos Semiestructurados.
Modelos de Datos Modelo relacional. Usa una colección de tablas para representar tanto los datos
Modelos de Datos
Modelo relacional. Usa una colección de tablas para
representar tanto los datos como sus relaciones.
Modelos de Datos Modelo Entidad-Relación. Se basa en una percepción del mundo real como una
Modelos de Datos
Modelo Entidad-Relación. Se basa en una percepción del
mundo real como una colección de objetos básicos
denominados entidades y de las relaciones entre ellos.
Modelos de Datos Modelo Orientado a Objetos. Se puede considerar como una extensión del modelo
Modelos de Datos
Modelo Orientado a Objetos. Se puede considerar
como una extensión del modelo entidad-relación, con
los conceptos de encapsulación, métodos, y la
identidad de los objetos.
Modelos de Datos Modelo de datos Semiestructurados. Permite la especificación de datos donde los elementos
Modelos de Datos
Modelo de datos Semiestructurados. Permite la
especificación de datos donde los elementos de datos
individuales del mismo tipo pueden tener diferentes
conjuntos de atributos. El lenguaje de marcas
extensible (XML) se emplea mucho para representar
datos Semiestructurados.
Visión de los Datos Una de las principales finalidades de los sistemas de base de
Visión de los Datos
Una de las principales finalidades de los sistemas de
base de datos es ofrecer a los usuarios una visión
abstracta de los datos. El sistema oculta ciertos detalles
en que se almacenan y mantienen los datos.
Visión de los Datos Nivel Físico. La manera en que almacena el sistema físicamente en
Visión de los Datos
Nivel Físico. La manera en que almacena el sistema
físicamente en localidades de memoria a nivel bytes.
Nivel Lógico. Describe qué datos se almacenan y qué
relaciones existen entre esos datos.
Nivel de Vistas. El usuario normal puede ver muchas
vistas de la misma información.
Esquema del sistema
Esquema del sistema
El modelo relacional Hoy en día es el principal modelo de datos para las aplicaciones
El modelo relacional
Hoy en día es el principal modelo de datos para las
aplicaciones comerciales de procesamiento de datos.
Su posición destacada ha sido gracias a su simplicidad
en comparación con los modelos de red y jerárquico.
Una base de datos relacional consiste en un conjunto
de tablas, a cada una de las cuales se le asigna un
nombre exclusivo.
Cada fila de la tabla representa una relación entre un
conjunto de valores.
El modelo relacional-estructura básica Tres Columnas-Atributos 7 Tuplas
El modelo relacional-estructura básica
Tres Columnas-Atributos
7 Tuplas
El modelo relacional-estructura básica Por cada atributo hay un conjunto de valores permitido, llamado dominio
El modelo relacional-estructura básica
Por cada atributo hay un conjunto de valores
permitido, llamado dominio del atributo .
Todas las filas deben consistir en una tupla ( , , )
Claves. Son atributos que se usan para identificar cada
una de las tuplas de una tabla.
Primaria. Identificador único de una relación.
Foránea. Cuando se incluye una clave primaria de otra
relación como un atributo de otra relación.
El modelo relacional-Ejemplo Bancario
El modelo relacional-Ejemplo Bancario
El modelo relacional-Ejemplo Bancario
El modelo relacional-Ejemplo Bancario
SQL-Introducción Aunque se le llame lenguaje de consulta, SQL puede hacer mucho más que consultar
SQL-Introducción
Aunque se le llame lenguaje de consulta, SQL puede
hacer mucho más que consultar bases de datos. Pues
permite definir la estructura de los datos, modificar los
datos y especificar restricciones de seguridad.
IBM desarrollo la versión original, denominado Sequel
en 1970 como parte del proyecto System R.
Sequel ha evolucionado y su nombre ha pasado a SQL
(Structured Query Language, Lenguaje estructurado
de consultas)
Hoy en día se ha establecido como el lenguaje estándar
para las bases de datos.
SQL-Introducción En 1986, ANSI e ISO publicaron una norma SQL denominada SQL-86. En 1989 ANSI
SQL-Introducción
En 1986, ANSI e ISO publicaron una norma SQL
denominada SQL-86.
En 1989 ANSI publicó una extensión de la norma
denominada SQL-89.
SQL-92, que ha sido una norma estándar usada por
muchos sistemas.
Posteriormente se publicaron otras versiones como
SQL-1999, SQL-2003, SQL-2006.
Componentes de SQL Lenguaje de Definición de Datos. El LDD de SQL proporciona comandos para
Componentes de SQL
Lenguaje de Definición de Datos. El LDD de SQL
proporciona comandos para la definición de esquemas de
relación, borrado de relaciones y modificaciones de los
esquemas de relación.
Lenguaje de Manipulación de Datos. El LMD de SQL
incluye comandos para insertar, borrar y modificar tuplas.
Integridad. El LDD de SQL incluye comandos para
especificar las restricciones de integridad que deben
cumplir los datos almacenados.
Definición de Vistas. El LDD de SQL incluye comandos
para la definición de vistas.
Escribiendo Sentencias SQL SQL no es case-sensitive. SQL se puede escribir en una o más
Escribiendo Sentencias SQL
SQL no es case-sensitive.
SQL se puede escribir en una o más líneas.
Las palabras reservadas no se pueden abreviar.
Las cláusulas se escriben en líneas separadas.
Comentar para mejorar la comprensión.
Toda palabra reservada se debe escribir en mayúscula
para mejorar su comprensión.
Toda sentencia debe terminar con el punto y coma (;)
Convenciones
Convenciones
Estructura Básica La estructura básica de una expresión SQL consta de tres cláusulas: select, from;
Estructura Básica
La estructura básica de una expresión SQL consta de tres
cláusulas: select, from;
La cláusula select identifica las columnas que serán
mostradas.
La cláusula from identifica la tabla o tablas de donde
provienen las columnas.
La cláusula where establece las condiciones de la
búsqueda.
Sintaxis Básica SELECT [DISTINCT] * | expresion [AS alias][,…] FROM tabla_1 [,…] ;
Sintaxis Básica
SELECT [DISTINCT] * | expresion [AS alias][,…]
FROM tabla_1 [,…] ;
Operadores aritméticos
Operadores aritméticos
Precedencia
Precedencia
Definiendo el Valor NULL SELECT lastname,jobcode,salary,commissionpercentage FROM employees; NULL es un valor
Definiendo el Valor NULL
SELECT lastname,jobcode,salary,commissionpercentage
FROM employees;
NULL es un valor inaplicable, no disponible, no asignado o
desconocido.
NULL no es un cero o un espacio en blanco.
Valor NULL en operaciones SELECT lastname, salary, commissionpercentage * 10 FROM employees; Cualquier operación que
Valor NULL en operaciones
SELECT lastname, salary, commissionpercentage * 10
FROM employees;
Cualquier operación que contenga valores nulos
devolverá como resultado un valor nulo.
Definiendo un alias en las columnas Un alias se usa para renombrar el encabezado de
Definiendo un alias en las columnas
Un alias se usa para renombrar el encabezado de las
columnas.
Es muy útil cuando se realizan cálculos.
El alias se coloca después del nombre de la columna y
es opcional si se precede de la palabra “As”.
Si existen espacios en el alias, hay que encerrarlo entre
comillas.
Usando el Alias SELECT LastName As Apellido,salary As Salario,salary + 100 As "Nuevo Salario" from
Usando el Alias
SELECT LastName As Apellido,salary As Salario,salary + 100 As "Nuevo Salario"
from employees;
Concatenando Cadenas Permite unir varias cadenas de texto o columnas. Es realizado por la función:
Concatenando Cadenas
Permite unir varias cadenas de texto o columnas.
Es realizado por la función:
CONCAT(Cadena1,Cadena2)
La unión de varias cadenas o columnas genera una
nueva columna.
SELECT CONCAT(FirstName,LastName) AS Empleado
FROM employees;
Caracteres Literales Una literal es un carácter, número o fecha que están incluidos dentro de
Caracteres Literales
Una literal es un carácter, número o fecha que están
incluidos dentro de la sentencia SELECT.
La fecha y el carácter literal son valores que se
encierran entre comillas simples ‘ ’;
Por ejemplo:
‘U’
‘Empleado’
‘1997-10-01’
Usando los caracteres literales SELECT CONCAT(FirstName,' ',LastName,'y Gana ',Salary) AS "Datos del
Usando los caracteres literales
SELECT CONCAT(FirstName,' ',LastName,'y Gana ',Salary) AS "Datos del Empleado"
FROM employees;
Evitando registros duplicados SELECT DepartmentID FROM employees; SELECT DISTINCT DepartmentID FROM employees;
Evitando registros duplicados
SELECT DepartmentID
FROM employees;
SELECT DISTINCT DepartmentID
FROM employees;
Resumen Lo aprendido en esta Lección sobre la sentencia SELECT de SQL: Retornar todos los
Resumen
Lo aprendido en esta Lección sobre la sentencia
SELECT de SQL:
Retornar todos los registros de una tabla.
Retornar columnas específicas de una tabla.
Definir un alias en las columnas.
Realizar operaciones aritméticas.
Manipular cadenas de texto y literales.
La cláusula Where Establece las condiciones de búsqueda. Limita los resultados de las búsquedas. Select
La cláusula Where
Establece las condiciones de búsqueda.
Limita los resultados de las búsquedas.
Select [DISTINCT] * | Expresion [As Alias][,
]
from OBJETO_1 [,
]
where CONDICIONES
Condiciones de Comparación OPERADOR SINTAXIS DESCRIPCIÓN = a = b Verdad si a y b
Condiciones de Comparación
OPERADOR
SINTAXIS
DESCRIPCIÓN
=
a = b
Verdad si a y b son iguales
(Excluyendo a NULL)
!= , <>
a b, a <> b
!=
Verdad si a no es igual a b
>
a > b
Verdad si a es mayor que b
<
a < b
Verdad si a es menor que b
>=
a >= b
Verdad si a es mayor o igual que b
<=
a <= b
Verdad si a es menor o igual que b
<=>
a <=> b
Verdad si a y b son iguales
(Incluyendo a NULL)
IS NULL
a IS NULL
Verdad si a contiene un valor NULL
IS NOT NULL
a IS NOT NULL
Verdad si a no contiene un valor NULL
BETWEEN
BETWEEN b
and c
a
Verdad si a está entre los valores de b y c,
inclusive
Condiciones de Comparación OPERADOR SINTAXIS DESCRIPCIÓN NOT a NOT BETWEEN b and BETWEEN c Verdad
Condiciones de Comparación
OPERADOR
SINTAXIS
DESCRIPCIÓN
NOT
a
NOT BETWEEN b and
BETWEEN
c
Verdad si a no está entre los valores
de b y c, inclusive.
LIKE
a
LIKE b
Verdad si a corresponde con b en una
secuencia de patrón.
NOT LIKE
a
NOT LIKE b
Verdad si a no corresponde con b en
una secuencia de patrón.
IN
a
IN (b1,b2,b3)
Verdad si a es igual a algún elemento
de la lista.
NOT IN
a
NOT IN (b1,b2,b3)
Verdad si a no es igual a algún
elemento de la lista.
REGEXP,RLIKE
a
REGEXP b,
a
RLIKE b
Verdadera si a equivale a b con una
expresión regular.
NOT REGEXP,
NOT RLIKE
a
NOT REGEXP b,
a
NOT RLIKE b
Verdadera si a no equivale a b con
una expresión regular.
Ejemplos SELECT * FROM employees e WHERE e.Salary >= 3000
Ejemplos
SELECT *
FROM employees e
WHERE e.Salary >= 3000
Ejemplos SELECT * FROM employees e WHERE e.Salary between 1000 and 5000
Ejemplos
SELECT *
FROM employees e
WHERE e.Salary between 1000 and 5000
Ejemplos SELECT * FROM employees e WHERE e.Salary between 1000 and 5000
Ejemplos
SELECT *
FROM employees e
WHERE e.Salary between 1000 and 5000
Patrones de búsqueda PATRÓN DESCRIPCIÓN % Cualquier coincidencia en adelante. _ Una sola coincidencia de
Patrones de búsqueda
PATRÓN
DESCRIPCIÓN
%
Cualquier coincidencia en adelante.
_
Una sola coincidencia de carácter.
Usando la condición Like Select e.FirstName from employees e where e.FirstName like 'D%'
Usando la condición Like
Select e.FirstName
from employees e
where e.FirstName like 'D%'
Usando la condición Like select e.FirstName from employees e where e.FirstName like '_o%'
Usando la condición Like
select e.FirstName
from employees e
where e.FirstName like '_o%'
Usando la condición IS NULL select e.FirstName from employees e where e.FirstName like '_o%'
Usando la condición IS NULL
select e.FirstName
from employees e
where e.FirstName like '_o%'
Condiciones Lógicas CONDICIÓN SIGNIFICADO AND Retorna TRUE si ambas condiciones se cumplen OR Retorna TRUE
Condiciones Lógicas
CONDICIÓN
SIGNIFICADO
AND
Retorna TRUE si ambas condiciones se
cumplen
OR
Retorna TRUE si alguna de las dos
condiciones se cumplen
NOT
Retorna TRUE si ambas condiciones
no se cumplen
Usando el operador AND select e.FirstName,e.Salary,e.JobCode from employees e where e.Salary >= 10000 and
Usando el operador AND
select e.FirstName,e.Salary,e.JobCode
from employees e
where e.Salary >= 10000
and e.JobCode like '%MAN%'
Usando el operador OR select e.FirstName,e.Salary,e.JobCode from employees e where e.Salary >= 10000 OR e.JobCode
Usando el operador OR
select e.FirstName,e.Salary,e.JobCode
from employees e
where e.Salary >= 10000
OR e.JobCode like '%MAN%'
Reglas de Precedencia
Reglas de Precedencia
Reglas de Precedencia Select e.EmployeeID,e.LastName,e.JobCode,e.Salary from employees e where e.JobCode =
Reglas de Precedencia
Select e.EmployeeID,e.LastName,e.JobCode,e.Salary
from employees e
where e.JobCode = 'ST_MAN'
OR e.JobCode = 'AD_PRES'
AND e.Salary >= 15000
Reglas de Precedencia Select e.EmployeeID,e.LastName,e.JobCode,e.Salary from employees e where (e.JobCode =
Reglas de Precedencia
Select e.EmployeeID,e.LastName,e.JobCode,e.Salary
from employees e
where (e.JobCode = 'ST_MAN'
OR e.JobCode = 'AD_PRES‘)
AND e.Salary >= 15000
Usando la cláusula ORDER BY Ordena los registros que son arrojados como resultado de una
Usando la cláusula ORDER BY
Ordena los registros que son arrojados como resultado
de una consulta.
ASC. Ordena de manera Ascendente.
DSC. Ordena de manera Descendiente.
La cláusula ORDER BY se agrega al final de una
consulta select, indicando la columna /as sobre las
cuales se hará el ordenamiento.
Usando la cláusula ORDER BY Select e.EmployeeID,e.LastName,E.HireDate,e.Salary from employees e where e.Salary >=
Usando la cláusula ORDER BY
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary
from employees e
where e.Salary >= 10000
Usando la cláusula ORDER BY Select e.EmployeeID,e.LastName,E.HireDate,e.Salary from employees e where e.Salary >=
Usando la cláusula ORDER BY
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary
from employees e
where e.Salary >= 10000
ORDER BY e.HireDate
Ordenando de forma descendiente Select e.EmployeeID,e.LastName,E.HireDate,e.Salary from employees e where e.Salary
Ordenando de forma descendiente
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary
from employees e
where e.Salary >= 10000
ORDER BY e.HireDate DESC
Ordenando por alias Select e.EmployeeID,e.LastName,E.HireDate,e.Salary * 10 AS NSalario from employees e where e.Salary
Ordenando por alias
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary * 10 AS NSalario
from employees e
where e.Salary >= 10000
ORDER BY NSalario
Ordenando por varias columnas Select e.EmployeeID,e.LastName,E.HireDate,e.Salary from employees e where e.Salary >=
Ordenando por varias columnas
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary
from employees e
where e.Salary >= 10000
ORDER BY e.HireDate DESC, e.LastName DESC
Resumen: Aprendido en esta lección: Usar la cláusula WHERE de SQL. Comparar un valor a
Resumen:
Aprendido en esta lección:
Usar la cláusula WHERE de SQL.
Comparar un valor a una columna.
Comparar un rango de valores a una columna.
Comparar texto y fechas a una columna.
Buscar coincidencia de caracteres en una columna.
Ordenar de forma ascendente y descendente el
resultado.
Limitando el número de registros de salida Los resultados obtenidos hasta el momento han sido
Limitando el número de registros
de salida
Los resultados obtenidos hasta el momento han sido
todo lo que regresa la consulta.
select e.EmployeeID,e.Salary
from employees e
Limitando el número de registros de salida Para definir cuántos registros quiero obtener, usamos la
Limitando el número de registros
de salida
Para definir cuántos registros quiero obtener, usamos
la función LIMIT de la siguiente manera:
select e.EmployeeID,e.Salary
from employees e
limit 3
Con lo que obtenemos:
Actividad: Encontrar el empleado que tenga el salario mayor
Actividad:
Encontrar el empleado que tenga el salario mayor
Solución: select e.EmployeeID, e.Salary from employees e order by e.salary desc limit 1
Solución:
select e.EmployeeID, e.Salary
from employees e
order by e.salary desc limit 1
Limitando el número de registros de salida Si quisiéramos ver del registro 5 al 10,
Limitando el número de registros
de salida
Si quisiéramos ver del registro 5 al 10, debemos fijar el
inicio de limit en 4 y separado por coma el final del
rango.
select e.EmployeeID,e.Salary
from employees e
order by e.salary desc limit 4,9
Contando el número de registros de nuestra salida. Para saber el número de registros que
Contando el número de registros
de nuestra salida.
Para saber el número de registros que obtendremos a
la salida de una consulta, usaremos la función
COUNT(capo a contar)
Uso de count con where
Uso de count con where
Funciones Hay un gran número de funciones que podemos utilizar para mejorar los resultados de
Funciones
Hay un gran número de funciones que podemos
utilizar para mejorar los resultados de nuestras
consultas o obtener cierta información útil de ellas.
Como cada Servidor de SQL, MySQL dispone de
algunas, que pudieran variar sólo en sintaxis con las de
otro servidor.
Sin embargo, SQL tiene algunas funciones que son
comunes en todos los servidores.
Funciones para la manipulación de cadenas Función Sintaxis Descripción CHAR_LENGTH() CHAR_LENGTH(Cadena) Retorna
Funciones para la manipulación de
cadenas
Función
Sintaxis
Descripción
CHAR_LENGTH()
CHAR_LENGTH(Cadena)
Retorna el número de
caracteres de la cadena
CONCAT()
CONCAT(str1,str2,
)
Concatena las cadenas en
una sola
CONCAT_WS()
CONCAT_WS(‘caracter’,str1,str2,
…)
Concatena y separa
mediante un carácter
específico
LCASE()
LCASE(str)
Convierte a minúsculas una
cadena.
UCASE()
UCASE(str)
Convierte a mayúsculas una
cadena.
LEFT()
LEFT(str,longitud)
Regresa el comienzo de la
cadena hasta el valor de
longitud
Funciones para la manipulación de cadenas Función Sintaxis Descripción REPLACE() REPLACE(str,’c’,’nc’)
Funciones para la manipulación de
cadenas
Función
Sintaxis
Descripción
REPLACE()
REPLACE(str,’c’,’nc’)
Remplaza nc en lugar de c
RIGHT()
RIGHT(str,n)
Retorna los n caracteres de la derecha
de la cadena
LTRIM()
LTRIM(str)
Retorna la cadena, eliminando los
caracteres iniciales en blanco
RTRIM()
LTRIM(str)
Retorna la cadena, eliminando los
caracteres finales en blanco
Ejemplos:
Ejemplos:
Ejemplos:
Ejemplos:
Ejemplos:
Ejemplos:
Ejemplos:
Ejemplos:
Ejemplos:
Ejemplos:
Funciones Matemáticas Función Sintaxis Descripción ROUND() ROUND(X,D) Redondea X a D decimales TRUNCATE()
Funciones Matemáticas
Función
Sintaxis
Descripción
ROUND()
ROUND(X,D)
Redondea X a D decimales
TRUNCATE()
TRUNCATE(X,D)
Trunca X a D decimales
MOD() , % , MOD
MOD(N,M) , N % M,
N MOD M
Retorna el resto de N dividido por
Usando la función ROUND
Usando la función ROUND
Usando la función TRUNCATE
Usando la función TRUNCATE
Usando la función MOD
Usando la función MOD
Trabajando con fechas MySQL guarda internamente las fechas bajo el siguiente formato: Año, Mes, Día,
Trabajando con fechas
MySQL
guarda
internamente
las
fechas
bajo
el
siguiente formato: Año, Mes, Día, Horas, Minutos y
Segundos.
Las fechas por defecto se muestra con el formato:
DD/MM/AAA por ejemplo 28/02/1989
Funciones de Fechas y Horas FUNCIÓN RESULTADO CURRENT_DATE() 12/02/2012 CURDATE() CURRENT_TIME(), 21:35:16
Funciones de Fechas y Horas
FUNCIÓN
RESULTADO
CURRENT_DATE()
12/02/2012
CURDATE()
CURRENT_TIME(),
21:35:16
CURTIME()
CURRENT_TIMESTAMP()
12/02/2012 21:36:03
NOW()
Operaciones aritméticas con fechas Sumar o restar una cantidad de días a una fecha. Extraer
Operaciones aritméticas con fechas
Sumar o restar una cantidad de días a una fecha.
Extraer la cantidad de días que han transcurrido entre
dos fechas.
A una fecha podemos incrementarla/reducirla en
varios intervalos mediante la siguiente sintaxis:
Fecha #
Donde
# es un número de intervalos .
intervalo es el incremento que deseamos hacer, de
acuerdo a la siguiente tabla:
Tabla de intervalos Unidad Valor MICROSECOND MICRO SEGUNDOS SECOND SEGUNDOS MINUTE MINUTOS HOUR HORAS DAY
Tabla de intervalos
Unidad
Valor
MICROSECOND
MICRO SEGUNDOS
SECOND
SEGUNDOS
MINUTE
MINUTOS
HOUR
HORAS
DAY
DIAS
WEEK
SEMANAS
MONTH
MESES
QUARTER
CUATRIMESTRES
YEAR
AÑOS
Ejemplos de operaciones
Ejemplos de operaciones
Diferencia entre fechas Para realizar la diferencia entre fechas y obtener el número de días
Diferencia entre fechas
Para realizar la diferencia entre fechas y obtener el
número de días lo podemos de la siguiente manera
Haciendo uso de la función DATEDIFF.
Operaciones aritméticas con horas Al igual que las fechas, las horas pueden ser incrementadas/disminuidas en
Operaciones aritméticas con horas
Al igual que las fechas, las horas pueden ser
incrementadas/disminuidas en los mismos intervalos
y mediante la siguiente sintaxis:
TIME(Fecha:Hora # )
Diferencia entre horas Para obtener la diferencia entre dos horas distintas, haremos uso de la
Diferencia entre horas
Para obtener la diferencia entre dos horas distintas,
haremos uso de la función TIMEDIFF cuya sintaxis es:
TIMEDIFF(‘Fecha y Hora ',Fecha y Hora ');
Conversiones de Tipos Para convertir un tipo de dato en otro, podemos hacer uso de
Conversiones de Tipos
Para convertir un tipo de dato en otro, podemos hacer
uso de las funciones CAST Y CONVERT, de la siguiente
manera:
CAST(expr AS type)
CONVERT(expr, type)
Salida Formateada de Fechas Para obtener la salida de la fecha de manera personalizada, lo
Salida Formateada de Fechas
Para obtener la salida de la fecha de manera
personalizada, lo podemos hacer mediante la función
DATE_FORMAT(date,format)
Donde date es la fecha y format es remplazado por
algunos de los siguientes formateadores.
Tabla de especificadores de formato %a Abbreviated weekday name (Sun Sat) %b Abbreviated month name
Tabla de especificadores de
formato
%a
Abbreviated weekday name (Sun Sat)
%b
Abbreviated month name (Jan Dec)
%c
Month, numeric (0 12)
%D
Day of the month with English suffix (0th,
1st, 2nd, 3rd, …)
%d
Day of the month, numeric (00 31)
%e
Day of the month, numeric (0 31)
%f
Microseconds (000000 999999)
%H
Hour (00 23)
%h
Hour (01 12)
%I
Hour (01 12)
%i
Minutes, numeric (00 59)
%j
Day of year (001 366)
%k
Hour (0 23)
%l
Hour (1 12)
%M %m %p %r %S %s %T Month name (January December) Month, numeric (00 12)
%M
%m
%p
%r
%S
%s
%T
Month name (January December)
Month, numeric (00 12)
AM or PM
Time, 12-hour (hh:mm:ss followed
by AM or PM)
Seconds (00 59)
Seconds (00 59)
Time, 24-hour (hh:mm:ss)
Week (00
53),
where Sunday is the
%U
first day of the week
Week (00
53),
where Monday is
%u
the first day of the week
Week (01
53),
where Sunday is the
%V
first day of the week; used with %X
Week (01
53),
where Monday is the
%v
first day of the week; used with %x
%W Weekday name (Sunday Saturday) %w Day of the week (0=Sunday 6=Saturday) %X Year for
%W
Weekday name (Sunday Saturday)
%w
Day of the week
(0=Sunday 6=Saturday)
%X
Year for the week where Sunday is
the first day of the week, numeric,
four digits; used with %V
%x
Year for the week, where Monday is
the first day of the week, numeric,
four digits; used with %v
%Y
Year, numeric, four digits
%y
Year, numeric (two digits)
%%
A literal “%” character
%x
x, for any “x” not listed above
Funciones para Flujo de Control La sentencia CASE, como en algunos lenguajes de programación, puede
Funciones para Flujo de Control
La sentencia CASE, como en algunos lenguajes de
programación, puede ser usado para realizar múltiples
comparaciones.
En SQL, lo podemos usar para mejorar el aspecto de la
información que obtenemos de salida.
CASE valor_de_caso
WHEN caso_1 THEN valor de la columna
WHEN caso_2 THEN valor opcional de la columna
ELSE valor por defecto de la columna
END
SELECTSELECTSELECTSELECT CASECASECASECASE 1111 WHENWHENWHENWHEN 1111 THENTHENTHENTHEN ''one''oneone'one''' WHENWHENWHENWHEN 2222
THENTHENTHENTHEN ''two''twotwo'two''' ELSEELSEELSEELSE 'more''more''more''more' END;END;END;END;
-> 'one'
Case segunda forma Hay una segunda manera de aplicar case en SQL, y es cuando
Case segunda forma
Hay una segunda manera de aplicar case en SQL, y es
cuando necesitamos hacer varias comparaciones
dentro del miso case
CASE
WHEN comparaciones_1 THEN valor de la columna
WHEN comparaciones_2 THEN valor opcional de la columna
ELSE valor por defecto de la columna
END
Uso de If Esta función de control, tiene la siguiente sintaxis: IF(Condicionantes,Si es Verdadero,Si es
Uso de If
Esta función de control, tiene la siguiente sintaxis:
IF(Condicionantes,Si es Verdadero,Si es Falso)
mysql> SELECTSELECTSELECTSELECT IF(1>2,2,3);IF(1>2,2,3);IF(1>2,2,3);IF(1>2,2,3);
-> 3
Resumen En esta lección, usted debió entender como: Usar las funciones básicas de SQL. Manipular
Resumen
En esta lección, usted debió entender como:
Usar las funciones básicas de SQL.
Manipular las cadenas de caracteres.
Modificar decimales.
Manipular fechas.
Realizar conversiones entre los principales Tipos de
Datos.
Expresiones de Condición.
GRUPOS DE DATOS
GRUPOS DE DATOS
Funciones para manipular grupos de datos Identificar las funciones disponibles. Describir como usar una función
Funciones para manipular grupos
de datos
Identificar las funciones disponibles.
Describir como usar una función de grupo.
Agrupar datos mediante la cláusula GROUP BY.
Incluir o excluir datos agrupados mediante el uso de la
cláusula HAVING.
Cómo trabajan estas funciones?
Cómo trabajan estas funciones?
Funciones de Agregación Son funciones que toman una colección de valores como entrada y devuelven
Funciones de Agregación
Son funciones que toman una colección de valores
como entrada y devuelven una sola salida. SQL ofrece 5
funciones de agregación incorporadas:
Función
Operación
Avg ()
Media
Min ()
Mínimo
Max ()
Máximo
Sum ()
Suma de registros
Count ()
Recuento
Sintaxis básica SELECT [columna], función de agrupación (columna)[,…] FROM tabla [WHERE condiciones] [GROUP BY
Sintaxis básica
SELECT [columna], función de agrupación (columna)[,…]
FROM tabla
[WHERE condiciones]
[GROUP BY columna]
[ORDER BY columna]
Usando Avg, max, min, sum
Usando Avg, max, min, sum
Usando Max y min Max y min se pueden usar en tipos de datos tanto
Usando Max y min
Max y min se pueden usar en tipos de datos tanto
numéricos como caracteres y fechas.
Creando Grupos de Datos
Creando Grupos de Datos
Uso de la cláusula group by GROUP BY permite dividir los registros de una tabla
Uso de la cláusula group by
GROUP BY permite dividir los registros de una tabla
en pequeños grupos.
No se debe usar un alias dentro de la cláusula GROUP
BY.
SELECT [columna], función de agrupación (columna)[,…]
FROM tabla
[WHERE condiciones]
[GROUP BY columna]
[ORDER BY columna]
Ejemplo de GROUP BY
Ejemplo de GROUP BY
Agrupando por varias columnas
Agrupando por varias columnas
Ejemplo de dos colmnas
Ejemplo de dos colmnas
Reglas para evitar errores en las funciones de grupo 1. Toda columna no contenida en
Reglas para evitar errores en las
funciones de grupo
1. Toda columna no contenida en una función de
grupo debe estar dentro de la cláusula group by.
Reglas para evitar errores en las funciones de grupo 2. No se pueden usar condiciones
Reglas para evitar errores en las
funciones de grupo
2. No se pueden usar condiciones en la cláusula where
para restringir grupos.
3. No use funciones de grupo en la cláusula where
4. Para condicionar grupos se usa la cláusula HAVING
Restringiendo los resultados de grupo con la cláusula HAVING
Restringiendo los resultados de
grupo con la cláusula HAVING
Uso de Having
Uso de Having
Funciones jerárquicas de grupo No se pueden usar las funciones de grupo en modo jerárquico.
Funciones jerárquicas de grupo
No se pueden usar las funciones de grupo en modo
jerárquico.
Resumen En esta sesión usted debió entender: Usar las funciones básicas de grupo SQL. COUNT
Resumen
En esta sesión usted debió entender:
Usar las funciones básicas de grupo SQL.
COUNT
MAX
MIN
AVG
SUM
Escribir consultas usando la cláusula GROUP BY.
Escribir consultas usando la cláusula HAVING.
RECIBIENDO DATOS DESDE MÚLTIPLES TABLAS Select … From Tabla1, Tabla2…
RECIBIENDO DATOS DESDE
MÚLTIPLES TABLAS
Select …
From Tabla1,
Tabla2…
Objetivo Al término de esta lección usted deberá entender los siguientes puntos: Escribir sentencias SELECT
Objetivo
Al término de esta lección usted deberá entender los
siguientes puntos:
Escribir sentencias SELECT para poder combinar
diversas tablas que se encuentran relacionadas.
Obteniendo datos de múltiples tablas
Obteniendo datos de múltiples
tablas
Datos Separados
Datos Separados
Ocurrencia…
Ocurrencia…
Varias Tablas Condicionando campos
Varias Tablas Condicionando
campos
Igualando campos clave Employees.department_id = departments.department_id
Igualando campos clave
Employees.department_id = departments.department_id
Sintaxis básica
Sintaxis básica
Reglas básicas Para obtener datos de diferentes tablas: Listar todas las tablas que se van
Reglas básicas
Para obtener datos de diferentes tablas:
Listar todas las tablas que se van a consultar.
Igualar los campos clave que relacionen las tablas.
Hacer las igualaciones en orden de listado de tablas.
SENTENCIA JOIN La sentencia JOIN es usada para combinar datos de varias tablas en una
SENTENCIA JOIN
La sentencia JOIN es usada para combinar datos de
varias tablas en una base de datos relacional.
En SQL existen tres tipos de JOIN:
1. Interno
2. Externo
3. Cruzado
Tablas para ejemplos
Tablas para ejemplos
Combinación Interna: INNER JOIN En esta operación se calcula el producto cruzado de todos los
Combinación Interna:
INNER JOIN
En esta operación se calcula el producto cruzado de
todos los registros.
Así todos los registros de la tabla A son combinados
con los de la tabla B y sólo persisten aquellos que
cumplan las condiciones que se especifiquen.
Existen maneras de expresar el Join:
Explícito
Implícito
Ejemplos de Join interno
Ejemplos de Join interno
Resultado join interno El empleado Gaspar no aparece en la lista, ni el departamento 35
Resultado join interno
El empleado Gaspar no aparece en la lista, ni el
departamento 35 porque no tienen un correspondiente en
la otra tabla, es decir, no existe un empleado con
departamento 35, ni existe un empleado con departamento
36
Tipos de Joins Explícitos Equi-Join. Cuando se usa el operador = dentro de la sentencia
Tipos de Joins Explícitos
Equi-Join. Cuando se usa el operador = dentro de la
sentencia Join.
Natural Join Natural Join. Se comparan todas las columnas que tengan el mismo nombre en
Natural Join
Natural Join. Se comparan todas las columnas que
tengan el mismo nombre en cada tabla.
Cross Join Presenta el producto cartesiano de todos los registros de las dos tablas
Cross Join
Presenta el producto cartesiano de todos los registros
de las dos tablas
JOIN Externo (OUTER JOIN) Mediante esta operación NO se requiere que cada registro en las
JOIN Externo (OUTER JOIN)
Mediante esta operación NO se requiere que cada registro
en las tablas a tratar tenga un equivalente en la otra tabla.
El registro es mantenido aunque no existe el registro
equivalente.
Este tipo de operación se subdivide, dependiendo en qué
tabla serán asignados los registros que no correspondan.
1. Tabla de la Izquierda (LEFT OUTER JOIN, LEFT JOIN)
2. Tabla de la Derecha (RIGHT OUTER JOIN, RIGHT JOIN)
3. Combinación completa (FULL OUTER JOIN)
LEFT OUTER JOIN-LEFT JOIN
LEFT OUTER JOIN-LEFT JOIN
RIGHT OUTER JOIN-RIGHT JOIN
RIGHT OUTER JOIN-RIGHT JOIN
FULL OUTER JOIN
FULL OUTER JOIN
Obtener Caminos
Obtener Caminos
Subconsultas
Subconsultas
Objetivos: Definir qué son subconsultas. Definir los problemas que se pueden resolver con subconsultas. Listar
Objetivos:
Definir qué son subconsultas.
Definir los problemas que se pueden resolver con
subconsultas.
Listar los tipos de subconsultas.
Escribir subconsultas.
¿Cuándo usar subconsultas? ¿Quién tiene el salario más alto que William? Consulta Principal ¿Qué empleado
¿Cuándo usar subconsultas?
¿Quién tiene el salario más alto que William?
Consulta Principal
¿Qué empleado tiene el salario más alto que William?
Subconsulta
¿Cuál es el salario de William?
¿Qué es una subconsulta? Es una consulta que utiliza únicamente una sentencia SELECT, la cual
¿Qué es una subconsulta?
Es una consulta que utiliza únicamente una
sentencia SELECT, la cual se encuentra embebida
dentro de la consulta principal.
Se usan para extraer datos específicos, de los cuales
depende la consulta principal.
Se pueden utilizar en cualquier parte de la consulta.
Consulta Principal
Subconsulta
Sintaxis básica Primero se ejecuta la subconsulta y luego la consulta principal. La subconsulta arroja
Sintaxis básica
Primero se ejecuta la subconsulta y luego la consulta
principal.
La
subconsulta
arroja
un
resultado,
el
cual
será
utilizado por la consulta principal.
SELECT columna
FROM tabla
WHERE condición (SELECT columna
FROM tabla
WHERE condición)
Usando la subconsulta
Usando la subconsulta
Consideraciones para usar subconsultas Encerrar las subconsultas dentro de los paréntesis. Escriba la subconsulta
Consideraciones para usar
subconsultas
Encerrar las subconsultas dentro de los paréntesis.
Escriba la subconsulta del lado derecho de la
condición.
No usar la cláusula ORDER BY dentro de la
subconsulta pues compromete el rendimiento.
Utilice los operadores adecuados para las subconsultas
que arrojan uno o múltiples registros.
Tipos de Subconsultas Por un solo registro. Consulta Principal Retorna Subconsulta ST_CLERK Por múltiples
Tipos de Subconsultas
Por un solo registro.
Consulta Principal
Retorna
Subconsulta
ST_CLERK
Por múltiples registros.
Consulta Principal
Retorna
ST_CLERK
Subconsulta
SA_MAN
Por un solo registro Retorna un solo valor. Se utilizan los siguientes operadores de comparación.
Por un solo registro
Retorna un solo valor.
Se utilizan los siguientes operadores de comparación.
OPERADOR
SINTAXIS
DESCRIPCIÓN
=
a = b
Verdad si a y b son iguales
(Excluyendo a NULL)
!= , <>
a b, a <> b
!=
Verdad si a no es igual a b
>
a > b
Verdad si a es mayor que b
<
a < b
Verdad si a es menor que b
>=
a >= b
Verdad si a es mayor o igual que b
<=
a <= b
Verdad si a es menor o igual que b
<=>
a <=> b
Verdad si a y b son iguales
(Incluyendo a NULL)
¿Cómo retornar un solo valor?
¿Cómo retornar un solo valor?
Usando las funciones de grupo
Usando las funciones de grupo
Usando la cláusula HAVING
Usando la cláusula HAVING
Errores que se comenten Ej.#1
Errores que se comenten Ej.#1
Errores que se cometen Ej2
Errores que se cometen Ej2
Múltiples registros Se retorna más de un registro. Se utilizan operadores de comparación para más
Múltiples registros
Se retorna más de un registro.
Se utilizan operadores de comparación para más de un
registro.
Se puede utilizar el operador NOT en cualquiera de los
siguientes operadores de comparación.
Los operadores sobre múltiples registros son:
Any.
In.
Some.
All
Any en subconsultas La palabra clave ANY , que debe seguir a un operador de
Any en subconsultas
La palabra clave ANY , que debe seguir a un operador
de comparación, significa “return TRUE si la
comparación es TRUE para ANY (cualquiera) de los
valores en la columna que retorna la subconsulta.” Por
ejemplo:
SELECT s1 FROM t1 WHERE s1 > ANY (SELECT s1
FROM t2);
Suponga que hay un registro en una tabla t1 que
contiene (10). La expresión es TRUE si la tabla t2
contiene (21,14,7) ya que hay un valor 7 en t2 que es
menor que 10. La expresión es FALSE si la tabla t2
contiene (20,10), o si la tabla t2 está vacía.
Usando operador ANY
Usando operador ANY
Usado el operador IN
Usado el operador IN
Equivalencias La palabra IN es un alias para = ANY. Por lo tanto, estos dos
Equivalencias
La palabra IN es un alias para = ANY. Por lo tanto, estos
dos comandos son lo mismo:
SELECT s1 FROM t1 WHERE s1 = ANY (SELECT s1 FROM t2);
SELECT s1 FROM t1 WHERE s1 IN (SELECT s1 FROM t2);
Sin embargo, NOT IN no es un alias para <> ANY
SOME es un alias para ANY
ALL en subconsultas La palabra ALL, que debe seguir a un operador de comparación, significa
ALL en subconsultas
La palabra ALL, que debe seguir a un operador de
comparación, significa “return TRUE si la comparación
es TRUE para ALL todos los valores en la columna que
retorna la subconsulta.” Por ejemplo:
SELECT s1 FROM t1 WHERE s1 > ALL (SELECT s1
FROM t2); Suponga que hay un registro en la tabla t1
que contiene (10). La expresión es TRUE si la tabla t2
contiene (-5,0,+5) ya que 10 es mayor que los otros tres
valores en t2. La expresión es FALSE si la tabla t2
contiene (12,6,NULL,-100) ya que hay un único valor 12
en la tabla t2 mayor que 10.
Equivalencias NOT IN es un alias para <> ALL. Por lo tanto, estos dos comandos
Equivalencias
NOT IN es un alias para <> ALL. Por lo tanto, estos dos
comandos son equivalentes:
SELECT s1 FROM t1 WHERE s1 <> ALL (SELECT s1 FROM t2);
SELECT s1 FROM t1 WHERE s1 NOT IN (SELECT s1 FROM t2);
EXISTS Y NO EXISTS Si una subconsulta retorna algún registro, entonces EXISTS subquery es TRUE,
EXISTS Y NO EXISTS
Si una subconsulta retorna algún registro, entonces
EXISTS subquery es TRUE, y NOT EXISTS subquery es
FALSE. Por ejemplo:
SELECT column1 FROM t1 WHERE EXISTS (SELECT *
FROM t2); Tradicionalmente, una subconsulta EXISTS
comienza con SELECT *, pero puede comenzar con
SELECT 5 o SELECT col1 o nada. MySQL ignora la lista
SELECT en tales subconsultas, así que no hace
distinción.
Uso de EXISTS – NO EXISTS
Uso de EXISTS – NO EXISTS
Operadores de Conjunto
Operadores de Conjunto
Objetivos: Descubrir los diferentes operadores de consulta. Usar los operadores de conjunto en múltiples consultas.
Objetivos:
Descubrir los diferentes operadores de consulta.
Usar los operadores de conjunto en múltiples
consultas.
Consideraciones de los operadores: Permite unir el resultado de dos o más consultas en una
Consideraciones de los operadores:
Permite unir el resultado de dos o más consultas en
una sola.
Cada columna debe retornar la misma cantidad de
columnas y del mismo tipo de dato.
No importa si los nombres de las columnas son
diferentes, siempre se muestra el nombre de la
primera.
Se puede usar la cláusula ORDER BY o LIMIT al final
de la última consulta.
Tipos de Operadores de Conjuntos
Tipos de Operadores de Conjuntos
Uso de Union
Uso de Union
Uso de UNION ALL
Uso de UNION ALL
Manejo de Columnas No existentes Se puede remplazar el nombre de la columna por un
Manejo de Columnas No existentes
Se puede remplazar el nombre de la columna por un
valor por defecto.
Los valores serán colocados en la consulta que no tiene
valores a mostrar.
Estos valores deben ser del mismo tipo de dato de la
columna. Por ejemplo:
Null, o cero o ‘ ’ (carácter vacío)
Uso de valores no existentes
Uso de valores no existentes
Modificando Datos de Una Tabla Para modificar los datos de una tabla se usa la
Modificando Datos de Una Tabla
Para modificar los datos de una tabla se usa la
sentencia UPDATE, cuya sintaxis es la siguiente:
UPDATE Tabla_Deseada
SET
campo = nuevo_valor,
campo2 = nuevo valor
WHERE condiciones
Ejemplo de Modificación de Datos
Ejemplo de Modificación de Datos
Ejemplo de Modificación con WHERE
Ejemplo de Modificación con
WHERE
Insertando Nuevos Datos La inserción de nuevos registros en una tabal se realiza mediante la
Insertando Nuevos Datos
La inserción de nuevos registros en una tabal se realiza
mediante la sentencia INSERT cuya sintaxis es la
siguiente:
INSERT INTO Tabla_Deseada VALUES
(Valor1,Valor2,Valor3…);
INSERT INTO Tabla_Deseada VALUES
(Valor1,Valor2,Valor3…),
(Valor1a,Valor2a,Valor3a…);
Insertando Registros
Insertando Registros
Consideraciones de Inserción Insertar cada tipo de dato en orden y en la cantidad de
Consideraciones de Inserción
Insertar cada tipo de dato en orden y en la cantidad de
datos de la tabla.
Respetar el tipo de dato de cada campo.
Los datos a cuidar son:
Cadenas se insertan entre comillas simples.
Las fechas se insertan entre comillas simples y
respetando el formato AAAAMMDD hh:mm:ss.
Borrando Registros Para borrar un registro o varios registros de una tabla se usa la
Borrando Registros
Para borrar un registro o varios registros de una tabla
se usa la cláusula DELETE cuya sintaxis es la siguiente:
DELETE FROM Tabla_Deseada
WHERE
condiciones
SQL Lenguaje de de Definición de Datos
SQL
Lenguaje de de Definición de Datos
Operaciones a Realizar BASE DE DATOS Crear, Modificar, Borrar. TABLAS Crear, Modificar, Renombrar, Borrar.
Operaciones a Realizar
BASE DE DATOS
Crear, Modificar, Borrar.
TABLAS
Crear, Modificar, Renombrar, Borrar.
CREAR BASE DE DATOS Para crear una base de datos necesitamos usar la cláusula CREATE
CREAR BASE DE DATOS
Para crear una base de datos necesitamos usar la
cláusula CREATE de la siguiente manera
CREATE DATABASE [IF NOT EXISTS]
nombre_base;
BORRAR BASE DE DATOS Para borrar una base de datos necesitamos usar la cláusula DROP
BORRAR BASE DE DATOS
Para borrar una base de datos necesitamos usar la
cláusula DROP de la siguiente manera
DROP DATABASE [IF EXISTS]
nombre_base;
CREAR TABLAS Para crear una tabla en sql se usa la cláusula de la siguiente
CREAR TABLAS
Para crear una tabla en sql se usa la cláusula de la
siguiente manera:
CREATE TABLE [IF NOT EXISTS] nombre_tabla
(
Columna1 “propiedades de columna”,
Columna2 “propiedades de columna”,
Columna3 “propiedades de columna”
)
Ejemplo para crear Tabla
Ejemplo para crear Tabla
Tipos de Datos En SQL hay varios tipos de datos que podemos utilizar. Y los
Tipos de Datos
En SQL hay varios tipos de datos que podemos utilizar.
Y los podemos agrupar en por lo que guardemos en:
Textos.
Números.
Fechas y Horas.
Otros tipos
Tipos de Datos para Textos Para almacenar textos tenemos dos principales tipos: 1) varchar(x): define
Tipos de Datos para Textos
Para almacenar textos tenemos dos principales tipos:
1) varchar(x): define una cadena de caracteres de
longitud variable "x". Su rango va de 1 a 255 caracteres.
2) char(x): define una cadena de longitud fija, su rango
es de 1 a 255 caracteres.
3) blob o text: bloques de datos de 60000 caracteres de
longitud aprox.
Tipos de datos para números Tipo Bytes de almacenamiento tinyint 1 smallint 2 mediumint 3
Tipos de datos para números
Tipo
Bytes de almacenamiento
tinyint
1
smallint
2
mediumint
3
int
4
bigint
8
float
4
decimal(t,d) t+2 si d>0, t+1 si d=0 y d+2 si t<d
Tipos de datos para fechas y horas Tipo Bytes de almacenamiento Date 3 datetime 8
Tipos de datos para fechas y horas
Tipo
Bytes de almacenamiento
Date
3
datetime
8
time
3
year
1
Borrar Tablas Para borrar una tabla se usa la cláusula DROP de la siguiente manera:
Borrar Tablas
Para borrar una tabla se usa la cláusula DROP de la
siguiente manera:
DROP TABLE [IF EXISTS] nombre_tabla
MODIFICAR TABLA Para modificar una tabla se usa la sentencia ALTER y dependiendo de la
MODIFICAR TABLA
Para modificar una tabla se usa la sentencia ALTER y
dependiendo de la operación podemos realizar los
siguientes casos:
ADD con ella podemos añadir nuevas columnas a
nuestra tabla
CHANGE Para modificar las columnas
DROP para borrar
MODIFICAR TABLA Ejemplos
MODIFICAR TABLA Ejemplos
CARACTERÍSTICAS DE LOS CAMPOS NULL NOT NULL PRIMARY NOMBRE FOREIGN TIPO VALOR POR DEFECTO AUTO_INCREMENT
CARACTERÍSTICAS DE LOS CAMPOS
NULL
NOT NULL
PRIMARY
NOMBRE
FOREIGN
TIPO
VALOR POR
DEFECTO
AUTO_INCREMENT
CREANDO TABLAS…
CREANDO TABLAS…
CREANDO TABLAS…
CREANDO TABLAS…
CREANDO TABLAS…
CREANDO TABLAS…
CREANDO TABLAS…
CREANDO TABLAS…
Llaves en las tablas Son la manera de distinguir un renglón de otro, dentro de
Llaves en las tablas
Son la manera de distinguir un renglón de otro, dentro de
una tabla.
En una tabla podemos encontrar llaves primarias y llaves
foráneas o externas.
Las llaves primarias pueden ser un solo campo o varios
(compuesta)
Las llaves foráneas en una tabla son las llaves primarias de
otra tabla.
Las llaves establecen las relaciones entre las tablas.
Las llaves sirven para establecer los índices para mejorar la
búsqueda de información en las tablas.
Una llave primaria no acepta valores nulos.
Creando llaves primarias Primaria Única Primaria Compuesta
Creando llaves primarias
Primaria Única
Primaria Compuesta
Índices en las Tablas El índice en una tabla, desempeña el mismo papel que el
Índices en las Tablas
El índice en una tabla, desempeña el mismo papel que
el índice de un libro.
Una tabla se indexa por un campo o varios.
Sin un índice se debe recorrer toda la tabla para
encontrar un dato.
La desventaja es que ocupa espacio en disco.
Pero son muy útiles cuando la tabla contiene miles de
registros.
Se recomienda identificar los campos con mayor
frecuencia de búsqueda para crear un índice.
Tipos de índices 1) "primary key": es el que definimos como clave primaria. Los valores
Tipos de índices
1) "primary key": es el que definimos como clave primaria.
Los valores indexados deben ser únicos y además no
pueden ser nulos. MySQL le da el nombre "PRIMARY". Una
tabla solamente puede tener una clave primaria.
2) "index": crea un índice común, los valores no
necesariamente son únicos y aceptan valores "null". "key" es
sinónimo de "index". Puede haber varios por tabla.
3) "unique": crea un índice para los cuales los valores deben
ser únicos y diferentes, aparece un mensaje de error si
intentamos agregar un registro con un valor ya existente.
Permite valores nulos y pueden definirse varios por tabla.
Ejemplos de Índices
Ejemplos de Índices
Desventajas de los Índices Los índices se actualizan cada vez que se modifica la columna
Desventajas de los Índices
Los índices se actualizan cada vez que se modifica la columna
o columnas que utiliza. Por ello no es aconsejable usar como
índices columnas en las que serán frecuentes operaciones de
escritura (INSERT, UPDATE, DELETE).
Tampoco tendría sentido crear índices sobre columnas cuando
cualquier select sobre ellos va a devolver una gran cantidad de
resultados; por ejemplo una columna booleana que admita los
valores Y/N.
Tampoco es necesario usar índices en tablas demasiado
pequeñas, ya que en estos casos no hay ganancia de rapidez
frente a una consulta normal.
Finalmente, los índices ocupan espacio. A veces, incluso mas
que la tabla de datos.
NORMALIZACIÓN DE BD La normalización es un proceso que se aplica a un esquema relacional
NORMALIZACIÓN DE BD
La normalización es un proceso que se aplica a un
esquema relacional o a un conjunto de datos para
eliminar problemas de redundancia y evita posibles
anomalías en las operaciones de inserción, borrado y
actualización de datos.
También puede servirnos cuando queremos pasar un
archivo a manera de base de datos a un esquema real
relacional de bases de datos.
Ejemplo archivo cásico… ¿Qué problemas vemos en esa tabla? …si entra intentamos ingresar otro de
Ejemplo archivo cásico…
¿Qué problemas vemos en esa tabla?
…si entra intentamos ingresar otro de nombre Joe…
…si deseamos agregar otro url…
Primera Forma Normal
Primera Forma Normal
Segunda Forma Normal
Segunda Forma Normal
Tercera Forma Normal
Tercera Forma Normal
Cuarta Forma Normal
Cuarta Forma Normal
Referencias 1. SILBERSCHATZ , KORTH ,SUDARSHAN ; “Fundamentos de Diseño de Bases de Datos”; McGraw
Referencias
1. SILBERSCHATZ , KORTH ,SUDARSHAN ; “Fundamentos de Diseño de Bases de Datos”; McGraw Hill. 2006.
2. C.J. DATE; “Introducción a los sistemas de bases de datos”; Pearson Educación, 2001.