Sei sulla pagina 1di 234

INTRODUCCIN A LOS SISTEMAS DE BASES DE DATOS

Por qu una Base Datos?


Compactacin. No hay necesidad de archivos de papel
voluminosos.
Velocidad. La mquina puede actualizar ms
rpidamente que el humano.
Menos trabajo laborioso.
Actualidad. La informacin la tenemos disponible
siempre.
Introduccin:
La manera ms fcil de almacenar informacin en
una computadora es mediante archivos?
Es la mejor manera?
Has realizado alguna aplicacin basada en archivos?
Introduccin:
struct estructura_Cliente {
Int Numero;
char nombre[30];
char apellido[40];
char telefono[10];
char edad;
};
Clientes.dat
Ingresar Clientes
struct estructura_Cliente {
Int Numero;
char nombre[30];
char apellido[40];
char telefono[10];
double saldo;
};
Ahorros.dat
Cuentas de Ahorro
Introduccin:
Un sistema de este tipo debe contener varios
programas de aplicacin para gestionar los archivos.
Se aaden nuevos programas segn surgen las
necesidades.
Los sistemas operativos convencionales soportan este
sistema de archivos.
Introduccin:
Guardar informacin 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.
Anomalas para el acceso concurrente.
Problemas de seguridad.
Propsito 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?
Coleccin de datos que contiene informacin
relevante para una empresa. (1)
Una base de datos es un conjunto de datos
persistentes que es utilizado por los sistemas de
aplicacin de alguna empresa dada. (2)
La persistencia de los datos se refiere a que
permanecen a pesar de la terminacin de la aplicacin
que los utiliza.
El trmino empresa, es referido a cualquier
organizacin o a un solo individuo.
Podemos referirnos a una base de datos como una
especie de armario electrnico 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:
CLAVE NOMBRE_MATERIA PROFESOR CALIFI CURSADA TRIMESTRE FEC_INI FEC_FIN
1 CALCULO I ROBERTO ROJAS LAGUNA 10S INVIERNO_1998 01/01/1998 30/03/1998
2FISICA I EDGAR ALVARADO MENDEZ 8S INVIERNO_1998 01/01/1998 30/03/1998
3CALCULO II MONICA TREJO DURAN 8S PRIMAVERA_1998 01/04/1998 31/07/1998
4FISICA II EDGAR ALVARADO MENDEZ 8S PRIMAVERA_1998 01/04/1998 31/07/1998
5COMPUTACION RAUL ESCAREO 9S PRIMAVERA_1998 01/04/1998 31/07/1998
6QUIMICA I GUADALUPE GONZALEZ 0N VERANO_1998 01/08/1998 15/09/1998
7CALCULO III ROBERTO ROJAS LAGUNA 0N VERANO_1998 01/08/1998 15/09/1998
Pequeo archivo de una base de datos
Tabla
Campo Registro
Sistema de Base de Datos
Un Sistema de Base de Datos es una herramienta
computarizada cuya finalidad es almacenar
informacin y permitir recuperar y actualizar esa
informacin en base a peticiones.
Componentes de un Sistema de
Base de Datos
Datos. La informacin que se almacena en la base de datos.
Puede ser:
Integrada. Se puede visualizar cada parte de la base como una
unificacin de varios archivos.
Compartida. La misma parte de informacin puede ser utilizada por
distintos usuarios, en el mismo momento.
Hardware. Que consta de:
Volmenes de almacenamiento secundario.
Dispositivos de entrada-salida.
Controladores, etc.
Software. Ms comnmente conocidos como sistemas de
administracin de base de datos BDMS.
Usuarios. Programadores, usuarios finales y administradores.
BDMS o SGBD
Es por mucho el componente de software ms
importante del sistema en general.
A menudo se utiliza para para referirse al producto
terminado de algn fabricante.
Aplicacin de los sistemas de Base
de Datos
Banca: Para la informacin de los clientes, cuentas
prstamos y transacciones bancarias.
Lneas areas: para reservas e informacin de horarios.
Universidades: para informacin de los estudiantes,
matrculas en las asignaturas y cursos.
Transacciones de tarjetas de crdito: para compras con
tarjeta y generacin de extractos mensuales.
Telecomunicaciones: para guardar el registro de las
llamadas realizadas , generar facturas, etc.
Finanzas:
Ventas:
La lista anterior puede ser ms larga
Ha habido adelantos tecnolgicos muy importantes
como la aparicin 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 mayora de la gente, ni
siquiera es consiente de que est interactuando con
una Base de datos.
Aplicacin de los sistemas de Base
de Datos
Quin usa una base de datos?
Usuarios
Administradores
Usuarios:
Hay 4 tipos de usuarios, clasificados por la forma en
que esperan interactuar con el sistema.
Normales. Usuarios que usan una aplicacin.
Programadores de aplicaciones. Profesionales que
escriben programas de aplicacin.
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:
Definicin del esquema.
Mtodo de acceso.
Modificacin del esquema.
Autorizacin o restriccin de acceso.
Mantenimiento rutinario.
Copias de seguridad.
Espacio en discos duros.
Revisin de trabajos que se ejecuten en la BD.
Sistemas de Base de Datos
Programas de
Aplicacin
Lenguajes de
Consulta
ODBC
Cadenas de Conexin
DBMS
Usuarios
Administradores
Lenguajes de Consulta
Existen varios lenguajes de consultas de bases de datos,
tanto comercial como experimentalmente.
SQL, clculo relacional de tuplas, clculo relacional de
dominio, QBE, etc.
El lenguaje de consultas ms ampliamente usado es el
SQL (Structured Query Language) o Lenguaje de
Consultas Estruturado.
Los sistemas de base de datos proporcionan dos tipos
de lenguaje:
Lenguaje de Manipulacin de Datos (LMD).
Lenguaje de Definicin de Datos (LDD ).
Lenguajes de Consulta
LDD
LMD
SQL
Lenguajes de Consulta
Lenguaje de Manipulacin de Datos (LMD). Permite a
los usuarios tener acceso a los datos y manipularlos.
Recuperacin.
Insercin.
Borrado.
Modificacin.
Hay dos tipos de LMD
Procedimentales. Necesitan que el usuario especifique
qu datos quiere y cmo obtener esos datos.
Declarativos. Necesitan que el usuario especifique qu
datos quiere sin que haga falta cmo obtener esos datos.
Lenguaje de Definicin 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.

Lenguajes de Consulta
Modelos de Datos
Bajo la estructura de las bases de datos se encuentra el
modelo de datos: Una coleccin de herramientas
conceptuales para escribir los datos, sus relaciones, su
semntica y restricciones de consistencia.
Podemos encontrar cuatro categoras:
Modelo relacional.
Modelo Entidad-Relacin.
Modelo Orientado a Objetos.
Modelo de datos Semiestructurados.
Modelo relacional. Usa una coleccin de tablas para
representar tanto los datos como sus relaciones.
Modelos de Datos
Modelos de Datos
Modelo Entidad-Relacin. Se basa en una percepcin del
mundo real como una coleccin de objetos bsicos
denominados entidades y de las relaciones entre ellos.
Modelo Orientado a Objetos. Se puede considerar
como una extensin del modelo entidad-relacin, con
los conceptos de encapsulacin, mtodos, y la
identidad de los objetos.
Modelos de Datos
Modelo de datos Semiestructurados. Permite la
especificacin 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.
Modelos de Datos
Visin de los Datos
Una de las principales finalidades de los sistemas de
base de datos es ofrecer a los usuarios una visin
abstracta de los datos. El sistema oculta ciertos detalles
en que se almacenan y mantienen los datos.
Nivel Fsico. La manera en que almacena el sistema
fsicamente en localidades de memoria a nivel bytes.
Nivel Lgico. 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 informacin.
Visin de los Datos
Esquema del sistema
El modelo relacional
Hoy en da es el principal modelo de datos para las
aplicaciones comerciales de procesamiento de datos.
Su posicin destacada ha sido gracias a su simplicidad
en comparacin con los modelos de red y jerrquico.
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 relacin entre un
conjunto de valores.
El modelo relacional-estructura bsica
Tres Columnas-Atributos
7 Tuplas
Por cada atributo hay un conjunto de valores
permitido, llamado dominio del atributo
1
.
Todas las filas deben consistir en una tupla (I
1
, I
2
, I
3
)
Claves. Son atributos que se usan para identificar cada
una de las tuplas de una tabla.
Primaria. Identificador nico de una relacin.
Fornea. Cuando se incluye una clave primaria de otra
relacin como un atributo de otra relacin.
El modelo relacional-estructura bsica
El modelo relacional-Ejemplo Bancario
El modelo relacional-Ejemplo Bancario
SQL-Introduccin
Aunque se le llame lenguaje de consulta, SQL puede
hacer mucho ms que consultar bases de datos. Pues
permite definir la estructura de los datos, modificar los
datos y especificar restricciones de seguridad.
IBM desarrollo la versin original, denominado Sequel
en 1970 como parte del proyecto SystemR.
Sequel ha evolucionado y su nombre ha pasado a SQL
(Structured Query Language, Lenguaje estructurado
de consultas)
Hoy en da se ha establecido como el lenguaje estndar
para las bases de datos.
En 1986, ANSI e ISO publicaron una norma SQL
denominada SQL-86.
En 1989 ANSI public una extensin de la norma
denominada SQL-89.
SQL-92, que ha sido una norma estndar usada por
muchos sistemas.
Posteriormente se publicaron otras versiones como
SQL-1999, SQL-2003, SQL-2006.
SQL-Introduccin
Componentes de SQL
Lenguaje de Definicin de Datos. El LDD de SQL
proporciona comandos para la definicin de esquemas de
relacin, borrado de relaciones y modificaciones de los
esquemas de relacin.
Lenguaje de Manipulacin 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.
Definicin de Vistas. El LDD de SQL incluye comandos
para la definicin de vistas.
Escribiendo Sentencias SQL
SQL no es case-sensitive.
SQL se puede escribir en una o ms lneas.
Las palabras reservadas no se pueden abreviar.
Las clusulas se escriben en lneas separadas.
Comentar para mejorar la comprensin.
Toda palabra reservada se debe escribir en mayscula
para mejorar su comprensin.
Toda sentencia debe terminar con el punto y coma (;)
Convenciones
Estructura Bsica
La estructura bsica de una expresin SQL consta de tres
clusulas: select, from;
La clusula select identifica las columnas que sern
mostradas.
La clusula fromidentifica la tabla o tablas de donde
provienen las columnas.
La clusula where establece las condiciones de la
bsqueda.
SELECT [DISTINCT] * | expresion [AS alias][,]
FROM tabla_1 [,] ;
Sintaxis Bsica
Operadores aritmticos
Precedencia
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 operacin que contenga valores nulos
devolver como resultado un valor nulo.
Un alias se usa para renombrar el encabezado de las
columnas.
Es muy til cuando se realizan clculos.
El alias se coloca despus 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.
Definiendo un alias en las columnas
Usando el Alias
SELECT LastName As Apellido,salary As Salario,salary + 100 As "Nuevo Salario"
fromemployees;
Permite unir varias cadenas de texto o columnas.
Es realizado por la funcin:
CONCAT(Cadena1,Cadena2)
La unin de varias cadenas o columnas genera una
nueva columna.
Concatenando Cadenas
SELECT CONCAT(FirstName,LastName) AS Empleado
FROM employees;
Una literal es un carcter, nmero o fecha que estn
incluidos dentro de la sentencia SELECT.
La fecha y el carcter literal son valores que se
encierran entre comillas simples ;
Por ejemplo:
U
Empleado
1997-10-01
Caracteres Literales
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;
Resumen
Lo aprendido en esta Leccin sobre la sentencia
SELECT de SQL:
Retornar todos los registros de una tabla.
Retornar columnas especficas de una tabla.
Definir un alias en las columnas.
Realizar operaciones aritmticas.
Manipular cadenas de texto y literales.
La clusula Where
Establece las condiciones de bsqueda.
Limita los resultados de las bsquedas.
Select [DISTINCT] * | Expresion [As Alias][,...]
from OBJETO_1 [,...]
where CONDICIONES
Condiciones de Comparacin
OPERADOR SINTAXIS DESCRIPCIN
= 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 a BETWEEN b
and c
Verdad si a est entre los valores de b y c,
inclusive
Condiciones de Comparacin
OPERADOR SINTAXIS DESCRIPCIN
NOT
BETWEEN
a NOT BETWEEN b and
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 patrn.
NOT LIKE a NOT LIKE b Verdad si a no corresponde con b en
una secuencia de patrn.
IN a IN (b1,b2,b3) Verdad si a es igual a algn elemento
de la lista.
NOT IN a NOT IN (b1,b2,b3) Verdad si a no es igual a algn
elemento de la lista.
REGEXP,RLIKE a REGEXP b,
a RLIKE b
Verdadera si a equivale a b con una
expresin regular.
NOT REGEXP,
NOT RLIKE
a NOT REGEXP b,
a NOT RLIKE b
Verdadera si a no equivale a b con
una expresin regular.
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
Patrones de bsqueda
PATRN DESCRIPCIN
% Cualquier coincidencia en adelante.
_ Una sola coincidencia de carcter.
Usando la condicin Like
Select e.FirstName
from employees e
where e.FirstName like 'D%'
select e.FirstName
from employees e
where e.FirstName like '_o%'
Usando la condicin Like
select e.FirstName
from employees e
where e.FirstName like '_o%'
Usando la condicin IS NULL
Condiciones Lgicas
CONDICIN 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 e.JobCode like '%MAN%'
select e.FirstName,e.Salary,e.JobCode
from employees e
where e.Salary >= 10000
OR e.JobCode like '%MAN%'
Usando el operador OR
Reglas de Precedencia
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 = 'ST_MAN'
OR e.JobCode = 'AD_PRES)
AND e.Salary >= 15000
Usando la clusula ORDER BY
Ordena los registros que son arrojados como resultado
de una consulta.
ASC. Ordena de manera Ascendente.
DSC. Ordena de manera Descendiente.
La clusula ORDER BY se agrega al final de una
consulta select, indicando la columna /as sobre las
cuales se har el ordenamiento.
Usando la clusula ORDER BY
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary
from employees e
where e.Salary >= 10000
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary
from employees e
where e.Salary >= 10000
ORDER BY e.HireDate
Usando la clusula ORDER BY
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary
from employees e
where e.Salary >= 10000
ORDER BY e.HireDate DESC
Ordenando de forma descendiente
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary * 10 AS NSalario
from employees e
where e.Salary >= 10000
ORDER BY NSalario
Ordenando por alias
Select e.EmployeeID,e.LastName,E.HireDate,e.Salary
from employees e
where e.Salary >= 10000
ORDER BY e.HireDate DESC, e.LastName DESC
Ordenando por varias columnas
Resumen:
Aprendido en esta leccin:
Usar la clusula 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 nmero 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
Para definir cuntos registros quiero obtener, usamos
la funcin LIMIT de la siguiente manera:
Con lo que obtenemos:
Limitando el nmero de registros
de salida
select e.EmployeeID,e.Salary
from employees e
limit 3
Actividad:
Encontrar el empleado que tenga el salario mayor
Solucin:
select e.EmployeeID, e.Salary
from employees e
order by e.salary desc limit 1
Si quisiramos ver del registro 5 al 10, debemos fijar el
inicio de limit en 4 y separado por coma el final del
rango.
Limitando el nmero de registros
de salida
select e.EmployeeID,e.Salary
from employees e
order by e.salary desc limit 4,9
Contando el nmero de registros
de nuestra salida.
Para saber el nmero de registros que obtendremos a
la salida de una consulta, usaremos la funcin
COUNT(capo a contar)
Uso de count con where
Funciones
Hay un gran nmero de funciones que podemos
utilizar para mejorar los resultados de nuestras
consultas o obtener cierta informacin til de ellas.
Como cada Servidor de SQL, MySQL dispone de
algunas, que pudieran variar slo en sintaxis con las de
otro servidor.
Sin embargo, SQL tiene algunas funciones que son
comunes en todos los servidores.
Funciones para la manipulacin de
cadenas
Funcin Sintaxis Descripcin
CHAR_LENGTH() CHAR_LENGTH(Cadena) Retorna el nmero 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 carcter
especfico
LCASE() LCASE(str) Convierte a minsculas una
cadena.
UCASE() UCASE(str) Convierte a maysculas una
cadena.
LEFT() LEFT(str,longitud) Regresa el comienzo de la
cadena hasta el valor de
longitud
Funciones para la manipulacin de
cadenas
Funcin Sintaxis Descripcin
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:
Funciones Matemticas
Funcin Sintaxis Descripcin
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 funcin ROUND
Usando la funcin TRUNCATE
Usando la funcin MOD
Trabajando con fechas
MySQL guarda internamente las fechas bajo el
siguiente formato: Ao, Mes, Da, 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
FUNCIN RESULTADO
CURRENT_DATE()
CURDATE()
12/02/2012
CURRENT_TIME(),
CURTIME()
21:35:16
CURRENT_TIMESTAMP()
NOW()
12/02/2012 21:36:03
Operaciones aritmticas con fechas
Sumar o restar una cantidad de das a una fecha.
Extraer la cantidad de das que han transcurrido entre
dos fechas.
A una fecha podemos incrementarla/reducirla en
varios intervalos mediante la siguiente sintaxis:
Fecha _INTERVAL # (|nterua|u)
Donde
# es un nmero 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 DIAS
WEEK SEMANAS
MONTH MESES
QUARTER CUATRIMESTRES
YEAR AOS
Ejemplos de operaciones
Diferencia entre fechas
Para realizar la diferencia entre fechas y obtener el
nmero de das lo podemos de la siguiente manera
Haciendo uso de la funcin DATEDIFF.
Operaciones aritmticas 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 _INTERVAL # (|nterua|u))
Diferencia entre horas
Para obtener la diferencia entre dos horas distintas,
haremos uso de la funcin 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 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 podemos hacer mediante la funcin
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 (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 Month name (January..December)
%m Month, numeric (00..12)
%p AM or PM
%r
Time, 12-hour (hh:mm:ss followed
by AM or PM)
%S Seconds (00..59)
%s Seconds (00..59)
%T Time, 24-hour (hh:mm:ss)
%U
Week (00..53), where Sunday is the
first day of the week
%u
Week (00..53), where Monday is
the first day of the week
%V
Week (01..53), where Sunday is the
first day of the week; used with %X
%v
Week (01..53), where Monday is the
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 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
programacin, puede ser usado para realizar mltiples
comparaciones.
En SQL, lo podemos usar para mejorar el aspecto de la
informacin 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
SELECT CASE 1 WHEN 1 THEN ' SELECT CASE 1 WHEN 1 THEN ' SELECT CASE 1 WHEN 1 THEN ' SELECT CASE 1 WHEN 1 THEN 'one one one one' '' ' WHEN 2 WHEN 2 WHEN 2 WHEN 2
THEN ' THEN ' THEN ' THEN 'two two two two' ELSE 'more' END; ' ELSE 'more' END; ' ELSE 'more' END; ' ELSE 'more' END;
-> 'one'
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 funcin de control, tiene la siguiente sintaxis:
IF(Condicionantes,Si es Verdadero,Si es Falso)
mysql> SELECT IF(1>2,2,3); SELECT IF(1>2,2,3); SELECT IF(1>2,2,3); SELECT IF(1>2,2,3);
-> 3
Resumen
En esta leccin, usted debi entender como:
Usar las funciones bsicas de SQL.
Manipular las cadenas de caracteres.
Modificar decimales.
Manipular fechas.
Realizar conversiones entre los principales Tipos de
Datos.
Expresiones de Condicin.
GRUPOS DE DATOS
Funciones para manipular grupos
de datos
Identificar las funciones disponibles.
Describir como usar una funcin de grupo.
Agrupar datos mediante la clusula GROUP BY.
Incluir o excluir datos agrupados mediante el uso de la
clusula HAVING.
Cmo trabajan estas funciones?
Funciones de Agregacin
Son funciones que toman una coleccin de valores
como entrada y devuelven una sola salida. SQL ofrece 5
funciones de agregacin incorporadas:
Funcin Operacin
Avg () Media
Min () Mnimo
Max () Mximo
Sum () Suma de registros
Count () Recuento
Sintaxis bsica
SELECT [columna], funcin de agrupacin (columna)[,]
FROM tabla
[WHERE condiciones]
[GROUP BY columna]
[ORDER BY columna]
Usando Avg, max, min, sum
Usando Max y min
Max y min se pueden usar en tipos de datos tanto
numricos como caracteres y fechas.
Creando Grupos de Datos
Uso de la clusula group by
GROUP BY permite dividir los registros de una tabla
en pequeos grupos.
No se debe usar un alias dentro de la clusula GROUP
BY.
SELECT [columna], funcin de agrupacin (columna)[,] SELECT [columna], funcin de agrupacin (columna)[,]
FROM tabla
[WHERE condiciones]
[GROUP BY columna]
[ORDER BY columna]
Ejemplo de GROUP BY
Agrupando por varias columnas
Ejemplo de dos colmnas
Reglas para evitar errores en las
funciones de grupo
1. Toda columna no contenida en una funcin de
grupo debe estar dentro de la clusula group by.
Reglas para evitar errores en las
funciones de grupo
2. No se pueden usar condiciones en la clusula where
para restringir grupos.
3. No use funciones de grupo en la clusula where
4. Para condicionar grupos se usa la clusula HAVING
Restringiendo los resultados de
grupo con la clusula HAVING
Uso de Having
Funciones jerrquicas de grupo
No se pueden usar las funciones de grupo en modo
jerrquico.
Resumen
En esta sesin usted debi entender:
Usar las funciones bsicas de grupo SQL.
COUNT
MAX
MIN
AVG
SUM
Escribir consultas usando la clusula GROUP BY.
Escribir consultas usando la clusula HAVING.
RECIBIENDO DATOS DESDE
MLTIPLES TABLAS
Select
FromTabla1,
Tabla2
Objetivo
Al trmino de esta leccin usted deber entender los
siguientes puntos:
Escribir sentencias SELECT para poder combinar
diversas tablas que se encuentran relacionadas.
Obteniendo datos de mltiples
tablas
Datos Separados
Ocurrencia
Varias Tablas Condicionando
campos
Igualando campos clave
Employees.department_id = departments.department_id
Sintaxis bsica
Reglas bsicas
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 base de datos relacional.
En SQL existen tres tipos de JOIN:
1. Interno
2. Externo
3. Cruzado
Tablas para ejemplos
Combinacin Interna:
INNER JOIN
En esta operacin 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 slo persisten aquellos que
cumplan las condiciones que se especifiquen.
Existen maneras de expresar el Join:
Explcito
Implcito
Ejemplos de Join interno
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 Explcitos
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 cada tabla.
Cross Join
Presenta el producto cartesiano de todos los registros
de las dos tablas
JOIN Externo (OUTER JOIN)
Mediante esta operacin 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 operacin se subdivide, dependiendo en qu
tabla sern 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. Combinacin completa (FULL OUTER JOIN)
LEFT OUTER JOIN-LEFT JOIN
RIGHT OUTER JOIN-RIGHT JOIN
FULL OUTER JOIN
Obtener Caminos
Subconsultas
Objetivos:
Definir qu son subconsultas.
Definir los problemas que se pueden resolver con
subconsultas.
Listar los tipos de subconsultas.
Escribir subconsultas.
Cundo usar subconsultas?
Qu empleado tiene el salario ms alto que William?
Consulta Principal
Quin tiene el salario ms alto que William?
Subconsulta
Cul es el salario de William?
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 especficos, de los cuales
depende la consulta principal.
Se pueden utilizar en cualquier parte de la consulta.
Consulta Principal
Subconsulta
Sintaxis bsica
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 condicin (SELECT columna
FROM tabla
WHERE condicin)
Usando la subconsulta
Consideraciones para usar
subconsultas
Encerrar las subconsultas dentro de los parntesis.
Escriba la subconsulta del lado derecho de la
condicin.
No usar la clusula ORDER BY dentro de la
subconsulta pues compromete el rendimiento.
Utilice los operadores adecuados para las subconsultas
que arrojan uno o mltiples registros.
Tipos de Subconsultas
Por un solo registro.
Por mltiples registros.
Consulta Principal
Subconsulta
Consulta Principal
Subconsulta
Retorna
Retorna
ST_CLERK
ST_CLERK
SA_MAN
Por un solo registro
Retorna un solo valor.
Se utilizan los siguientes operadores de comparacin.
OPERADOR SINTAXIS DESCRIPCIN
= 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)
Cmo retornar un solo valor?
Usando las funciones de grupo
Usando la clusula HAVING
Errores que se comenten Ej.#1
Errores que se cometen Ej2
Mltiples registros
Se retorna ms de un registro.
Se utilizan operadores de comparacin para ms de un
registro.
Se puede utilizar el operador NOT en cualquiera de los
siguientes operadores de comparacin.
Los operadores sobre mltiples registros son:
Any.
In.
Some.
All
Any en subconsultas
La palabra clave ANY , que debe seguir a un operador
de comparacin, significa return TRUE si la
comparacin 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 expresin es TRUE si la tabla t2
contiene (21,14,7) ya que hay un valor 7 en t2 que es
menor que 10. La expresin es FALSE si la tabla t2
contiene (20,10), o si la tabla t2 est vaca.
Usando operador ANY
Usado el operador IN
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
comparacin, significa return TRUE si la comparacin
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 expresin es TRUE si la tabla t2
contiene (-5,0,+5) ya que 10 es mayor que los otros tres
valores en t2. La expresin 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 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 algn registro, entonces
EXISTS subquery es TRUE, y NOT EXISTS subquery es
FALSE. Por ejemplo:
SELECT column1 FROMt1 WHERE EXISTS (SELECT *
FROMt2); 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
distincin.
Uso de EXISTS NO EXISTS
Operadores de Conjunto
Objetivos:
Descubrir los diferentes operadores de consulta.
Usar los operadores de conjunto en mltiples
consultas.
Consideraciones de los operadores:
Permite unir el resultado de dos o ms 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 clusula ORDER BY o LIMIT al final
de la ltima consulta.
Tipos de Operadores de Conjuntos
Uso de Union
Uso de UNION ALL
Manejo de Columnas No existentes
Se puede remplazar el nombre de la columna por un
valor por defecto.
Los valores sern 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 (carcter vaco)
Uso de valores no existentes
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 Modificacin de Datos
Ejemplo de Modificacin con
WHERE
Insertando Nuevos Datos
La insercin 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
Consideraciones de Insercin
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 clusula DELETE cuya sintaxis es la siguiente:
DELETE FROM Tabla_Deseada
WHERE
condiciones
SQL
Lenguaje de de Definicin de Datos
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
clusula 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
clusula DROP de la siguiente manera
DROP DATABASE [IF EXISTS]
nombre_base;
Para crear una tabla en sql se usa la clusula de la
siguiente manera:
CREAR TABLAS
CREATE TABLE [IF NOT EXISTS] nombre_tabla
(
Columna1 propiedades de columna,
Columna2 propiedades de columna,
Columna3 propiedades de columna
)
Ejemplo para crear Tabla
Tipos de Datos
En SQL hay varios tipos de datos que podemos utilizar.
Y los podemos agrupar en por lo que guardemos en:
Textos.
Nmeros.
Fechas y Horas.
Otros tipos
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 nmeros
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
time 3
year 1
Borrar Tablas
Para borrar una tabla se usa la clusula 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 operacin podemos realizar los
siguientes casos:
ADD con ella podemos aadir nuevas columnas a
nuestra tabla
CHANGE Para modificar las columnas
DROP para borrar
MODIFICAR TABLA Ejemplos
CARACTERSTICAS DE LOS CAMPOS
NOMBRE
TIPO
NULL
NOT NULL
PRIMARY
FOREIGN
VALOR POR
DEFECTO
AUTO_INCREMENT
CREANDO TABLAS
CREANDO TABLAS
CREANDO TABLAS
CREANDO TABLAS
Llaves en las tablas
Son la manera de distinguir un rengln de otro, dentro de
una tabla.
En una tabla podemos encontrar llaves primarias y llaves
forneas o externas.
Las llaves primarias pueden ser un solo campo o varios
(compuesta)
Las llaves forneas 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
bsqueda de informacin en las tablas.
Una llave primaria no acepta valores nulos.
Creando llaves primarias
Primaria nica
Primaria Compuesta
ndices en las Tablas
El ndice en una tabla, desempea 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 bsqueda para crear un ndice.
Tipos de ndices
1) "primary key": es el que definimos como clave primaria.
Los valores indexados deben ser nicos y adems no
pueden ser nulos. MySQL le da el nombre "PRIMARY". Una
tabla solamente puede tener una clave primaria.
2) "index": crea un ndice comn, los valores no
necesariamente son nicos y aceptan valores "null". "key" es
sinnimo 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
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 sern frecuentes operaciones de
escritura (INSERT, UPDATE, DELETE).
Tampoco tendra 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
pequeas, 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.
Desventajas de los ndices
NORMALIZACIN DE BD
La normalizacin es un proceso que se aplica a un
esquema relacional o a un conjunto de datos para
eliminar problemas de redundancia y evita posibles
anomalas en las operaciones de insercin, borrado y
actualizacin de datos.
Tambin puede servirnos cuando queremos pasar un
archivo a manera de base de datos a un esquema real
relacional de bases de datos.
Ejemplo archivo csico
Qu problemas vemos en esa tabla?
si entra intentamos ingresar otro de nombre Joe
si deseamos agregar otro url
Primera Forma Normal
Segunda Forma Normal
Tercera Forma Normal
Cuarta Forma Normal
Referencias
1. SILBERSCHATZ , KORTH ,SUDARSHAN ; Fundamentos de Diseo de Bases de Datos; McGraw Hill. 2006.
2. C.J. DATE; Introduccin a los sistemas de bases de datos; Pearson Educacin, 2001.

Potrebbero piacerti anche