INSTITUTO TECNOLÓGICO SAN AGUSTÍN Guía número 2 Bases de datos 1 Ing. Francisco Berrocal Machado Primero debes crear la base de datos “empresa” CREATE DATABASE empresa; Luego selecciona la base de datos que acabas de crear: USE empresa; Cree las siguientes tablas en MYSQL utilizando la línea de comandos: Seccion Id int (PK) Nombre varchar (20) Área varchar (20) 1 n Persona ced int (PK) Nombre varchar (20) direccion varchar (20) edad int idSeccion int (FK) Primero se deben crear las tablas, por ejemplo la tabla Seccion se crea de la siguiente forma CREATE TABLE Seccion( id int primary key, nombre varchar(20), área varchar(20) ); CREACIÓN DE CONSULTAS BÁSICAS (MOSTRANDO DATOS) SELECT, FROM, WHERE Para ver los datos almacenados en una tabla usaremos el formato "SELECT campos FROM tabla". Si queremos ver todos los campos, lo indicaremos usando un asterisco: SELECT * FROM persona; Que, en nuestro caso, daría como resultado: Si queremos ver sólo ciertos campos, detallamos sus nombres, separados por comas: SELECT nombre, dirección FROM persona; Y obtendríamos: Normalmente no querremos ver todos los datos que hemos introducido, sino sólo aquellos que cumplan cierta condición. Esta condición se indica añadiendo un apartado WHERE a la orden "SELECT", así: SELECT nombre, dirección FROM persona WHERE nombre = 'juan'; Que nos diría el nombre y la dirección de nuestros amigos llamados "juan": Comúnmente realizaremos búsquedas por claves primarias, las cuales son las búsquedas más usuales. La siguiente orden SQL no permite listar la información de una persona, haciendo uso del campo clave primaria: SELECT * FROM persona WHERE ced = 787123456; Utiliza esta orden y observa el resultado obtenido del servidor ORDER BY Quizá advirtió, en los ejemplos anteriores, que las filas resultantes se mostraron sin ningún orden en particular. A menudo es más fácil examinar la salida de una consulta cuando las filas se ordenan de algún modo significativo. Para ordenar un resultado, se usa la cláusula ORDER BY. SELECT nombre, dirección FROM persona ORDER BY nombre; Se organizan los datos obtenidos por el campo nombre en orden ascendente, con lo cual obtendríamos: nombre Andres Ortega Bayron Mejía Carlos Pérez Pedro López Zulma Petro Direccion Calle 46 Calle 14 Calle 24 Calle 60 Calle 48 El sentido de ordenación, por defecto, es ascendente, con los valores más pequeños primero. Para ordenar en sentido inverso (descendente), agregue la palabra clave DESC luego del nombre de la columna por la que ordena: SELECT nombre, dirección FROM persona ORDER BY nombre DESC; Con lo cual obtendríamos el orden inverso: nombre Zulma Petro Pedro López Carlos Pérez Bayron Mejía Andres Ortega Direccion Calle 48 Calle 60 Calle 24 Calle 14 Calle 46 OPERADORES DE COMPARACIÓN Y OPERADORES LÓGICOS Operador Descripción > < >= <= <> = Mayor que Menor que Mayor igual Menor igual Distinto Igual Estos operadores nos sirven para realizar búsquedas de información más específicas, es decir, nos permiten filtrar los resultados de acuerdo a ciertos criterios que deben cumplir los registros seleccionados. SELECT nombre, dirección, edad FROM persona WHERE edad > 18; Lo cual nos traería las personas mayores de edad: NOMBRE Pedro Pérez Julio Puertas DIRECCIÓN Calle 24 Calle 66 EDAD 36 24 SELECT nombre, dirección, edad FROM persona WHERE edad < 18; Lo cual nos traería las personas menores de edad: NOMBRE Luis Rodríguez María Petro DIRECCIÓN Calle 14 Calle 68 EDAD 17 15 SELECT nombre, dirección, edad FROM persona WHERE edad = 40; Lo cual nos traería las personas con edad de 40 años: NOMBRE Paola Gómez Martín González DIRECCIÓN Calle 34 Calle 69 EDAD 40 40 Crea consultas utilizando los demás operadores de comparación y analiza los resultados obtenidos. OPERADORES LÓGICOS Operador Descripción And Or Not () Significa Y Significa O Significa NO Paréntesis Podemos establecer más de una condición con la cláusula "WHERE", para ello aprenderemos los operadores lógicos. Estos nos permiten crear consultas que recuperen datos los cuales cumplan más de una condición determinada. Por ejemplo: SELECT nombre, dirección, edad FROM persona WHERE edad < 11 or edad > 60; Esta consulta nos devolverá registros, los cuales cumplan con una de las dos condiciones, que la persona tenga menos de 11 años o que la persona tenga más de 60 años: NOMBRE Luis Aguirre Gloria Pardo DIRECCIÓN Calle 24 Calle 22 EDAD 84 8 Otro ejemplo: queremos obtener las personas cuya edad sea mayor de 50 años y cuya sección sea la 2: SELECT nombre, idSeccion, edad FROM persona WHERE edad > 50 and idSeccion = 2; NOMBRE Marta Vergara Mónica Lorduy IDSECCION 2 2 EDAD 55 52 La siguiente consulta incluye más de dos condiciones: SELECT nombre, idSeccion, edad FROM persona WHERE edad > 50 and (idSeccion = 2 or idSeccion = 5); NOMBRE Marta Vergara Mónica Lorduy Pedro Dager Manuel Contreras IDSECCION 2 2 5 5 EDAD 55 52 60 80 Esta consulta incluye tres condiciones las cuales deben ser cumplidas por los registros seleccionados, observa el uso de los paréntesis los cuales separan las comparaciones realizadas por los operadores lógicos. Crea una consulta que muestre las personas menores de 18 años que trabajen en la sección 12. FUNCIONES DE AGREGACIÓN (MAX, MIN, AVG, COUNT) También podemos aplicar ciertas funciones matemáticas a todo un conjunto de datos de una tabla. Por ejemplo, podemos saber cuál es la edad más joven de entre las personas que tenemos en nuestra base de datos, haríamos: SELECT min(edad) FROM persona; Con lo cual obtendríamos la persona con la edad más pequeña de la base de datos: Cedula 78723456 Nombre Juan Álvarez Dirección Calle 34 Edad 16 Idsección 2 Estos comandos operan con datos numéricos a excepción del comando COUNT. Las funciones de agregación más habituales son: MIN = mínimo valor MAX = máximo valor SUM = suma de los valores AVG = media de los valores COUNT = cantidad de valores Crea consultas utilizando los comando MAX, SUM, AVG. COUNT: Devuelve un contador con el número de valores distintos de NULL en las filas recuperadas por una sentencia. Por lo general se realiza el conteo de registros por campos que no sean NULL ya que estos no se incluyen en el conteo y puede resultar un dato de conteo erróneo: SELECT count(ced) FROM persona; Con lo cual se obtendría: COUNT 35 Lo cual me indica que existen 35 registros en la tabla persona. Prueba la siguiente orden en el servidor de bases de datos: SELECT count(*) FROM persona;