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.