prácticas de mysql

35
Práctica 1: Creación de una base de datos en MySQL so PRÁCTICA 1 CREACIÓN DE UNA BASE DE DATOS EN MySQL

Upload: maricela-rodriguez-gonzalez

Post on 30-Jan-2016

22 views

Category:

Documents


2 download

DESCRIPTION

practicas de mysql para sistemas computacionales

TRANSCRIPT

Page 1: Prácticas de MySQL

Práctica 1: Creación de una base de datos en MySQL

so

PRÁCTICA 1

CREACIÓN DE UNA BASE DE DATOS EN MySQL

Page 2: Prácticas de MySQL

Práctica 1: Creación de una base de datos en MySQL

OBJETIVO:

Conocer las instrucciones básicas necesarias para crear, manipular y eliminar una base de datos.

FUNDAMENTO TEÓRICO:

MySQL utiliza el Lenguaje de Consulta Estructurado (SQL). Se trata del lenguaje utilizado por todas las bases de datos relacionales. Las instrucciones de SQL se pueden considerar divididas en dos grupos principales: las estructurales, también llamadas de definición de datos (DLL) y las instrucciones de datos, también llamadas de manipulación de datos (DML). Las primeras se destinan a crear, modificar y eliminar bases de datos y las estructuras de las tablas que las conforman.

Las DML, en cambio, se ocupan de incorporar nuevos registros a las tablas, buscar determinados registros según los criterios necesarios, modificar los datos grabados o eliminarlos.

Creación de Bases de Datos y su estructuraPara crear una base de datos usamos la instrucción

CREATE DATABASE IF NOT EXISTS baseDeDatos;

La mayoría de las instrucciones de MySQL deberemos terminarlas con un punto y coma (;). La cláusula IF NOT EXISTS es opcional, pero si no se incluye y la base de datos ya existe se producirá un error al intentar crearla, por lo que se recomienda agregarla siempre.

Las bases de datos sólo necesitan ser creadas una sola vez, pero deben ser seleccionadas cada vez que se inicia una sesión de MySQL. Puede hacerse a través del comando

USE baseDeDatos

Podemos observar que en esta y otras sentencias no será necesario terminarlas con punto y coma. Mediante el comando USE le indicamos a MySQL que se trabajará con la base de datos baseDeDatos.

Otro comando que se utilizará con mucha frecuencia es SHOW el cual nos permitirá listar las bases de datos que contiene nuestro servidor o las tablas que posee la base de datos actual, su sintaxis simple es:

Page 3: Prácticas de MySQL

Práctica 1: Creación de una base de datos en MySQL

SHOW < DATABASES >| < TABLES >;

Es necesario mencionar que este comando tiene muchos usos, sin embargo para el alcance de esta práctica sólo se abordarán estos dos casos.

Para eliminar una base de datos escribiremos la instrucción DROP DATABASE seguida del nombre de la base

de datos, adicionalmente podemos agregar la cláusula IF EXISTS para prevenir que se produzca un error.

DROP DATABASE IF EXISTS baseDeDatos;

No está por demás mencionar que utilizar esta instrucción se elimina todo lo referente a la base de datos en cuestión y esta operación es irreversible.

Finalmente para salir del ambiente de consola de MySQL utilizaremos el comando QUIT.

DESARROLLO:

1. Mencione la clasificación de las instrucciones de SQL.2. Inicie sesión en ambiente de consola de MySQL y efectúe las siguientes

actividades. (documente cada uno de los resultados obtenidos, de ser posible tomar una imagen de lo que hay en pantalla y agregarlo a un archivo Word).

a) Utilice la instrucción SHOW para mostrar las bases de datos existentes en el entorno de MySQL

b) Cree la base de datos inv_ferretero.c) Utilice nuevamente la instrucción SHOW para mostrar las bases de

datos existentes en el entorno de MySQLd) Intente crear nuevamente la base de datos inv_ferretero, no utilice la

cláusula IF NOT EXISTS y documente el resultado obtenido.e) Use la instrucción SHOW para listar las bases de datos en el entorno

pero no coloque el punto y coma (;) al final de la instrucción, documente la respuesta de MySQL.

f) Cree la base de datos farmacia_simi.g) Establezca como base de datos actual la base de datos inv_ferreteroh) Cambie a la base de datos farmacia_simi como base de datos actuali) Elimine la base de datos inv_ferretero.j) Utilice la instrucción SHOW para mostrar las bases de datos existentes

en el entorno de MySQL

Page 4: Prácticas de MySQL

Práctica 2: Creación de tablas en MySQL

PRÁCTICA 2

CREACIÓN DE TABLAS EN MySQL

Page 5: Prácticas de MySQL

Práctica 2: Creación de tablas en MySQL

OBJETIVO:

Conocer y aplicar las instrucciones SQL necesarias para crear, manipular y eliminar la estructura de una base de datos.

FUNDAMENTO TEÓRICO:

Creación de una tablaUna vez que hemos seleccionado la base de datos con la cual se va a trabajar, para crear una tabla deberemos utilizar la instrucción CREATE TABLE seguida del nombre que tendrá la nueva tabla y después definir los campos y su tipo de datos entre paréntesis.

CREATE TABLE nombreTabla (Campo1 Tipo_de_dato, campo2 Tipo_de_dato);

Como la definición de los diferentes campos puede llegar a ser extensa, MySQL permite escribir en varios renglones antes de procesar el comando hasta que encuentra un punto y coma, por lo que el siguiente sería un ejemplo válido

CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), -> species VARCHAR(20), sex CHAR(1), -> birth DATE, death DATE);

Los tipos de datos que se pueden manejar desde SQL son los que se resumen a continuación:

TIPO DESCRIPCIÓN

TINYINT Número entero de 0 a 255 sin signo o de -128 a 127 con signoSMALLINT Entero de 0 a 65,535 sin signo o de -32,768 a 32,767 con signo

MEDIUMINT Entero de 0 a 16,777,215 sin signo o de -8,388,608 a 8,388,607 con signo

INT Entero de 0 a 4,294,967,295 sin signo o de -2,147,483,648 a 2,147,483,648 con signo

BIGINTEl rango con signo es de -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807. El rango sin signo es de 0 a 18,446,744,073,709,551,615.

FLOAT (M,D)Número en coma flotante de simple precisión. M es la cantidad máxima de dígitos, sin contar el signo ni el punto decimal, D es el número de dígitos decimales.

DOUBLE (M,D) Número en coma flotante de doble precisión. M es la cantidad máxima de dígitos, sin contar el signo ni el punto

Page 6: Prácticas de MySQL

Práctica 2: Creación de tablas en MySQL

decimal, D es el número de dígitos decimales.

DECIMAL (M,D)Número guardado como cadena alfanumérica. M es la cantidad máxima de dígitos, sin contar el signo ni el punto decimal, D es el número de dígitos decimales.

DATE Fecha en formato AAAA-MM-DD o AA-MM-DD.DATETIME fecha y hora en formato AAAA-MM-DD HH:MM:SSTIME Hora en formato HH:MM:SS, o bien HHMMSS o HHMM

CHAR (N)Cadena de N caracteres. Se reservan N caracteres aunque el dato que luego se grabe ocupe menos.

VARCHAR (N)Cadena de longitud variable. Se reservan N caracteres pero si el dato ocupa menos, se reduce la longitud.

TINYTEXT Texto plano con un máximo de 255 caracteres.TEXT Texto plano con un máximo de 65,535 caracteres.MEDIUMTEXT Texto plano con un máximo de 16,777,215 caracteres.LONGTEXT Texto plano con un máximo de 4,294,967,295 caracteres.

TINYBLOBArchivo binario (puede ser texto RTF, imágenes, etc.) con un máximo de 255 bytes.

BLOB Archivo binario con un máximo de 65,535 bytes.MEDIUMBLOB Archivo binario con un máximo de 16,777,215 bytes.LONGBLOB Archivo binario con un máximo de 4,294,967,295 bytes.

ENUM (‘V1’,’V2’,etc)Campo que acepta cualquiera de los posibles valores enumerados entre paréntesis.

Se recomienda escribir siempre en mayúsculas los tipos de datos al momento de definir una nueva tabla, pues si bien es cierto la mayoría de los motores de las bases de datos los reconocen en minúsculas existen algunos que no lo hacen.

Cuando se crea una tabla, al declarar los campos que la constituirán, además del tipo de cada dato, se le pueden asignar algunos atributos, en la siguiente tabla se listan los más comunes.

ATRIBUTO DESCRIPCIÓN

NULL Indica que el campo podrá quedar sin ningún contenido cuando se cree un registro o cuando se modifique uno ya existente

NOT NULLIndica que en ese campo se debe tener asignado un contenido obligatoriamente en cada registro; si se intenta dejar sin contenido se producirá un error.

DEFAULT valor

Indica el valor que el campo asumirá por defecto al crear un nuevo registro de la tabla; este valor podrá ser modificado por el capturista. Si el campo es alfanumérico se acotará con comillas simples.

ZEROFILL Este atributo aplica a campos numéricos cuando queremos que

Page 7: Prácticas de MySQL

Práctica 2: Creación de tablas en MySQL

se rellenen con ceros los dígitos a la izquierda del valor introducido.

AUTO_INCREMENT

Este atributo se asigna a un campo numérico cuando deseamos que se incremente de forma automática; es decir, cada nuevo registro que se cree almacenará un valor que sea una unidad más que el registro anterior. En caso de eliminar un registro, el valor que tenía en ese campo no se volverá a asignar a ningún otro.

UNIQUE

Se utiliza cuando queremos que no se pueda repetir el valor de un campo en otro registro, atributo ideal para las llaves principales. Sin embargo, MySQL no reconoce este atributo, sino que por compatibilidad lo ignora sin provocar un error.

UNSIGNED

Aplicado a campos numéricos, hace que el motor de la base de datos genere un error si se intenta introducir un valor con signo, lo que, en la práctica impedirá utilizar valores negativos.

PRIMARY KEYDefine un campo como llave principal lo que valida que no se puedan repetir los valores en dicho campo, sustituyendo el uso del atributo UNIQUE.

Por ejemplo podríamos definir una nueva tabla con las siguientes sentencias:

CREATE TABLE IF NOT EXISTS empleados(numero INT NOT NULL,nombre VARCHAR (50),salario FLOAT (6,2) ZEROFILL,categoria CHAR (30),sexo ENUM (‘M’,’F’),departamento CHAR (2),PRIMARY KEY (numero)) TYPE = MyISAM;

La definición de un campo como llave principal se puede realizar en la misma línea que se define el campo o bien agregar una línea al final de la lista de campos como una cláusula lo que le da más legibilidad a la definición.

Una vez creada la tabla, usando la instrucción DESCRIBE podríamos observar la estructura de una tabla bajo la siguiente sintaxis

DESCRIBE nombreTabla;Por ejemplo, al escribir en la línea de comandos DESCRIBE empleados; obtendríamos algo como esto:

Page 8: Prácticas de MySQL

Práctica 2: Creación de tablas en MySQL

El SQL permite la utilización de claves foráneas, las que normalmente, se asignan a campos coincidentes con otros que a su vez han sido definidos como claves primarias o principales en otras tablas y que permiten crear las relaciones entre las tablas. Sin embargo MySQL no emplea claves foráneas.

Para eliminar tablas de una base de datos utilizaremos la instrucción DROP TABLE seguida del nombre de la tabla y al igual que sucede con las bases de datos esta operación es irreversible perdiéndose los datos y la estructura de la misma.

DROP TABLE IF EXISTS nombreTabla;

En algunas ocasiones será necesario modificar la estructura de una tabla ya creada conservando la información que ya contiene, esto es posible mediante el uso de la instrucción ALTER TABLE cuya sintaxis genérica es la siguiente:ALTER TABLE nombreTablaADD campo definicionDelCampo,CHANGE campoAntiguo campoNuevo definicionDelCampo,DROP campo;

Lo primero que se especificará será el nombre de la tabla en cuestión, obviamente dicha tabla deberá existir en nuestra base de datos; podremos agregar campos a nuestra tabla con la cláusula ADD, cambia el nombre y la definición de campos ya existentes con CHANGE o eliminar campos mediante DROP. No es necesario que se incluyan las tres cláusulas sino sólo las que se requieren.desPor ejemplo:ALTER TABLE empleadosCHANGE departamento depto CHAR (5);

Produciría el siguiente cambio en la estructura

Page 9: Prácticas de MySQL

Práctica 2: Creación de tablas en MySQL

DESARROLLO1. Inicie sesión en el ambiente de consola de MySQL y seleccione como base de

datos actual farmacia_simi y ejecute las siguientes tareas (documente cada uno de los ejercicios):

a. Mostrar las tablas existentes mediante el comando SHOWb. Crear la tabla medicamentos definida de la siguiente forma:

TABLA: MEDICAMENTOSCAMPOS TIPO DE DATOS ATRIBUTOS

idmedicamento INT NOT NULLPRIMARY KEY

medicamento VARCHAR (50) NOT NULLid_proveedor INT NOT NULL

tipo VARCHAR(35)NOT NULLDEFAULT ‘Antibióticos’

c. Mostrar la estructura de la tabla medicamentos.d. Crear la tabla proveedores definida como sigue:

TABLA: PROVEEDORESCAMPOS TIPO DE DATOS ATRIBUTOS

id_proveedor INT NOT NULLPRIMARY KEY

proveedor VARCHAR (50) NOT NULLciudad VARCHAR (25) NOT NULLtelefono CHAR(13) NOT NULL

e. Mostrar la estructura de la tabla proveedores.f. Modificar la estructura de la tabla medicamentos cambiando el nombre

del campo id_proveedor por proveedor.a. Agregue los siguientes campos a la tabla medicamentos

CAMPOS TIPO DE DATOS ATRIBUTOSfoto TINYTEXT

Page 10: Prácticas de MySQL

Práctica 2: Creación de tablas en MySQL

descrip TEXT NOT NULLpresentacion VARCHAR (25) NOT NULL

b. Mostrar la nueva estructura de la tabla medicamentos.c. Mostrar las tablas de la base de datos farmacia_simi.

Page 11: Prácticas de MySQL

Práctica 3: Ingreso de datos a tablas en MySQL

PRÁCTICA 3

INGRESO DE DATOS A TABLAS EN MySQL

Page 12: Prácticas de MySQL

Práctica 3: Ingreso de datos a tablas en MySQL

OBJETIVO:Conocer las diferentes formas para agregar datos a una tabla en MySQL.

FUNDAMENTO TEÓRICO.

Agregar datos a una tablaPara agregarle información a una tabla, MySQL posee las instrucciones LOAD DATA e INSERT. La primera instrucción nos permite cargar los datos desde un archivo de texto donde los datos han sido separados por una tabulación o algún otro carácter delimitador y dispuestos en el orden en que se crearon las columnas con la sentencia CREATE TABLE.

Para el caso de los campos que es necesario que queden vacíos, o que no se conozca la información en ese momento, deberemos rellenar con el valor NULL indicando con \N en el lugar correspondiente. La instrucción LOAD DATA requiere además que indiquemos como terminarán cada uno de los registros o renglones para el caso del archivo de texto; para ello si estamos usando un sistema Windows donde las líneas de texto terminan con retorno de carro y nueva línea deberemos utilizar LINES TERMINATED BY ‘\r\n’; para el caso de un sistema OS X solo se emplearía LINES TERMINATED BY ‘\r’.

La sintaxis de esta instrucción es:LOAD DATA LOCAL INFILE ‘/path/archivo.txt’ INTO TABLE nombreTabla

LINES TERMINATED BY ‘\r\n’;

Opcionalmente podremos especificar en la sentencia LOAD DATA los caracteres que actuarán como separador de campo y fin de línea, pero los valores por defecto son tabulación y nueva línea.

De tal forma que si tenemos un archivo llamado trabajadores.txt en nuestro directorio raíz con la siguiente información

Page 13: Prácticas de MySQL

Práctica 3: Ingreso de datos a tablas en MySQL

La sentencia que deberemos escribir en la línea de comandos de MySQL es LOAD DATA LOCAL INFILE ‘c:\trabajadores.txt’ INTO TABLE empleados

LINES TERMINATED BY ‘\r\n’;

Obtendríamos como resultado:

Para ver el contenido de la tabla haremos una consulta simple con la siguiente sentencia

SELECT * FROM empleados;

Esto nos daría el siguiente resultado:

Podemos observar que son los mismos datos contenidos en el archivo de texto con la diferencia de que los datos del campo depto han sido truncados por MySQL, esto es porque comprobando la estructura nos damos cuenta de que dicho campo es de tipo CHAR con una longitud máxima de 5 caracteres.

La segunda instrucción para agregar datos a una tabla nos posibilita para introducir registro por registro desde la línea de comandos, su sintaxis es la siguiente:INSERT INTO nombreTabla

VALUES (valor1, valor2, valor3, etc);

Los valores deben introducirse en el orden adecuado con respecto a los campos de la tabla en cuestión, además, si los campos son de tipo alfanumérico o de fecha se deben

Page 14: Prácticas de MySQL

Práctica 3: Ingreso de datos a tablas en MySQL

introducir delimitados por comillas simples. Por ejemplo la siguiente sentencia insertaría un nuevo registro en la tabla empleadosINSERT INTO empleados

VALUES (4, ‘Rosita Alvarez’, 1200.00, NULL, ‘F’, ‘Venta’);

Produciría la siguiente salida al hacer una consulta del contenido de la tabla:

Cuando deseamos modificar el contenido de un campo de solo un registro es conveniente utilizar la instrucción UPDATE la cual establece el valor de un campo específico del registro que cumpla con cierta condición determinada, por ejemplo:

UPDATE empleados SET salario=3500.00 WHERE numero=1;

Actualizaría el campo salario asignándole el valor de 3500.00 del registro cuyo campo numero es igual a 1, las condiciones que utilicen campos alfanuméricos o de tipo fecha, deberán colocarse entre comillas simples (‘).

En caso de no utilizar la cláusula WHERE se actualizarían todos los registros de la tabla en su campo salario.

Si lo que necesitamos es eliminar algún o algunos registros que cumplan con cierto criterio, entonces deberemos usar la instrucción DELETE por ejemplo:

DELETE FROM empleados WHERE depto=’Compr’;

Page 15: Prácticas de MySQL

Práctica 3: Ingreso de datos a tablas en MySQL

Borraría todos los registros de la tabla empleados donde el campo depto tenga un valor igual a ‘Compr’, para nuestro caso sería únicamente el registro número 2, produciendo la siguiente salida:

En caso de que la cláusula WHERE se omita se borrarán todos los registros de la tabla en cuestión.

DESARROLLO1. Inicie sesión en el ambiente de consola de MySQL y seleccione como base de

datos actual farmacia_simi y ejecute las siguientes tareas (documente cada uno de los ejercicios):

a. Usando la instrucción INSERT agregue la siguiente información en la tabla proveedores:

id_proveedor provedor ciudad telefono1 PiSA de Mexico México, D. F. 55 556 67892 Unilever de Mexico Xalapa, Ver.

3Medicamentos del Pacífico

Culiacán, Sin.

b. Ejecute una consulta sencilla para ver el contenido de la tabla proveedores.

c. Utilizando el bloc de notas, cree un archivo de texto y nómbrelo medicinas.txt y almacene la siguiente información:

2 Paracetamol 1 Analgésico \NAuxiliar en el tratamiento del dolor

Pastillas

3 Lomotil 3 Antidiarréico \NAuxiliar en el tratamiento de la gastritis

pastillas

4 Flanax 1 Antiinflamatorio \NPara golpes y golpazos

Pastillas

5 Bisolvon 2 Antiespectorante \N Auxiliar en la tos Suspensión

6Dextrometorfano

2 Antiespectorante \N Auxiliar en la tos Suspensión

Page 16: Prácticas de MySQL

Práctica 3: Ingreso de datos a tablas en MySQL

d. Use la instrucción LOAD DATA para cargar los datos del archivo de texto creado en el paso anterior a la tabla medicamentos.

e. Ejecute una consulta sencilla para ver el contenido de la tabla medicamentos.

f. Actualice el campo presentación con el valor de ‘grageas’ a todos los registros de la tabla medicamentos cuyo proveedor sea 3.

g. Ejecute una consulta sencilla para ver el contenido de la tabla proveedores.

h. Elimine todos los registros de la tabla medicamentos donde el campo medicamento sea igual a ‘paracetamol’.

i. ejecute una consulta sencilla para ver el contenido de la tabla medicamentos.

Page 17: Prácticas de MySQL

Práctica 4: Creación de Consultas en MySQL

PRÁCTICA 4

CREACIÓN DE CONSULTAS EN MySQL

Page 18: Prácticas de MySQL

Práctica 4: Creación de Consultas en MySQL

OBJETIVO:Conocer y aplicar las instrucciones necesarias para extraer información desde una tabla en MySQL.

FUNDAMENTO TEÓRICO:

Extraer información.Para extraer información de una tabla utilizaremos la cláusula SELECT, su sintaxis general es:SELECT camposSeleccionadosFROM nombreTablasWHERE condiciones;

En la sección camposSeleccionados indicaremos los campos que se quieren extraer, también se suele indicar con * el cual le indica al motor de la base de datos que extraiga todos los campos de la tabla. En la sección nombreTablas se indicará los nombres de la(s) tabla(s) donde está almacenada la información que se requiera, finalmente en la sección condiciones se indicará, de ser preciso, si los campos deben cumplir con alguna característica para poder ser tomados en cuenta como parte del resultado de la consulta; por ejemplo:

SELECT * FROM empleados WHERE sexo=’F’;

Generaría como salida todos los registros de la tabla empleados donde el campo sexo tiene como valor ‘F’, es decir, todos los empleados que son mujeres

Si lo que deseamos es conocer únicamente ciertos campos y no todos los registros completos, en lugar de usar * deberemos indicar los nombres de los campos, separados por comas, de los cuales se quiere extraer la información, por ejemplo

SELECT nombre, salario, depto FROM empleados;

Nos daría como salida el nombre, el salario y el departamento de todos los registros de la tabla empleados.

Page 19: Prácticas de MySQL

Práctica 4: Creación de Consultas en MySQL

Las condiciones de la cláusula WHERE pueden ser compuestas utilizando para ello los operadores AND y OR, por ejemplo la sentencia

SELECT * FROM empleados WHERE salario>2000 AND depto=’Venta’;

Devolvería todos los registros de los trabajadores cuyo salario sea mayor que $2,000.00 y que pertenezcan al departamento de Venta.

Si se deseara saber de qué departamentos son los trabajadores que se tienen registrados en la tabla empleados, podríamos usar la siguiente consulta

SELECT depto FROM empleados;

Lo que nos daría el siguiente resultado

Es notorio que solo tenemos empleados del departamento de Ventas, sin embargo MySQL devuelve un resultado por cada vez que encuentra un registro en la tabla, para evitar esto utilizaremos la cláusula DISTINCT como se muestra a continuación

SELECT DISTINCT depto FROM empleados;

Dando la salida siguiente:

Page 20: Prácticas de MySQL

Práctica 4: Creación de Consultas en MySQL

DESARROLLO:1. Inicie sesión en el ambiente de consola de MySQL y seleccione como base de

datos actual farmacia_simi y ejecute las siguientes tareas (documente cada uno de los ejercicios):

a. Muestre todos los registros de la tabla proveedores.b. Crear una consulta que muestre el medicamento y el tipo de los registros

en presentación de grageas.c. Mostrar todos los campos de los medicamentos del tipo

Antiespectorante.d. Muestre todos los tipos de presentaciones de los medicamentos

almacenados en la tabla medicamentos.e. Realice la misma consulta del inciso anterior pero ahora usando la

cláusula DISTINCT.f. Muestre los medicamentos en presentación de pastillas o grageas.g. Realice una consulta que muestre únicamente el nombre y la ciudad de

los proveedores.

Page 21: Prácticas de MySQL

Práctica 5: Uso de funciones en Consultas en MySQL

PRÁCTICA 5

USO DE FUNCIONES EN CONSULTAS EN MySQL

Page 22: Prácticas de MySQL

Práctica 5: Uso de funciones en Consultas en MySQL

OBJETIVO:Conocer y aplicar cláusulas adicionales que se pueden añadir a las consultas para obtener la información dispuesta de una forma específica, con el fin de crear reportes.

FUNDAMENTO TEÓRICO:

Normalmente el extraer información de una tabla es con la finalidad de que con ella poder realizar alguna operación adicional, como puede ser contabilizar el número de trabajadores de cada departamento, calcular el monto total de la nómina con base en la suma de los salarios de los empleados, etc.

Además, cuando se insertan los datos en una tabla, normalmente no lo hacemos en un orden preciso o se ordenan los registros con respecto a un campo numérico que suele ser el campo de llave principal; sin embargo, cuando queremos mostrar el resultado de una consulta generalmente deseamos que esta información esté ordenada por tal o cual campo por lo que se precisa tener alguna forma de realizar esta operación sobre los datos.

Por todo lo anterior el mismo SQL posee algunas cláusulas que podremos agregar a nuestras consultas para que los resultados se muestren de la manera que nos sea más útil; por ejemplo al solicitar una consulta sencilla de la tabla empleados obtendríamos algo como lo siguiente:

Observamos que MySQL muestra los registros tal y como fueron introducidos en la tabla, sin embargo podría ser posible que quisiéramos el resultado ordenados por el salario, es decir, que colocara primero los trabajadores que ganan menos y al final los que ganan más, esto lo lograremos utilizando la cláusula ORDER BY seguida del nombre del campo por el cual queremos ordenar, por ejemplo:

SELECT * FROM empleados ORDER BY salario;

Page 23: Prácticas de MySQL

Práctica 5: Uso de funciones en Consultas en MySQL

Si deseamos que el orden sea inverso, deberemos agregar la cláusula DESC al final de la sentencia, por ejemplo:

SELECT * FROM empleados ORDER BY salario DESC;

Obtendriamos como resultado

Un modificador importante que pudiéramos utilizar es cambiar el punto y coma por \G al final de cada sentencia, lo que provoca que el resultado se muestre verticalmente en lugar de horizontalmente, por ejemplo:

SELECT nombre, salario, depto FROM empleados ORDER BY salario DESC \G

Generaría como resultado

Page 24: Prácticas de MySQL

Práctica 5: Uso de funciones en Consultas en MySQL

En ocasiones nos interesará agrupar los registros para poder aplicar algún cálculo sobre cada grupo, por ejemplo si quisiéramos calcular el total de los sueldos de los empleados por cada uno de los departamentos usaremos la cláusula SUM(nombreCampo) AS combinada con la cláusula GROUP BY; la primera calcula la sumatoria de un campo especificado y con la segunda indicamos cuando tendría que mostrar dicho resultado, por ejemplo:

SELECT depto, SUM(salario) AS TOTAL_SUELDO FROM empleados GROUP BY depto;

Nos devolvería como resultado:

Observamos que se agrega un nuevo campo TOTAL_SUELDO en el cual se muestra el total de los sueldos por cada departamento.

De igual manera podemos calcular la media aritmética de algún campo con la cláusula AVG(nombreCampo) AS combinándola con GROUP BY, por ejemplo:

SELECT depto, AVG(salario) AS Sueldo_Medio FROM empleados GROUP BY depto;

El resultado será:

A menudo es interesante saber cuántos registros tiene un grupo, o cuántos cumplen con cierta condición, para ello se cuenta con la cláusula COUNT(expresion) AS la cual se suele acompañar de la cláusula WHERE si así se requiere, por ejemplo:

SELECT COUNT(*) AS TOTAL FROM empleados;

Retornaría el total de registros de la tabla:

Page 25: Prácticas de MySQL

Práctica 5: Uso de funciones en Consultas en MySQL

El usar la expresión *, para las tablas MyISAM retorna de manera más rápida el total de registros, pues dicha información se guarda en un campo especial de la tabla. No obstante la expresión también puede ser DISTINCT acompañada del nombre de uno de los campos, lo que retornaría el número de entradas diferentes de dicho campo, por ejemplo:

SELECT COUNT(DISTINCT depto) AS NUM_DEPTOS FROM empleados;

Retorna el siguiente resultado:

Cuando se utiliza la cláusula WHERE podemos utilizar cualesquiera de los operadores relacionales convencionales, es decir, <, >, =, <=, >= <>. Además contamos con dos operadores adicionales, los cuales son LIKE (parecido a) y BETWEEN (comprendido entre los valores). El primero nos permite usar el comodín % para sustituir caracteres que desconocemos, por ejemplo:

SELECT * FROM empleados WHERE depto LIKE ‘V%’;

Devolverá el resultado siguiente:

Los resultados son los registros cuyo valor en el campo depto comienzan con una ‘V’. El comodín se puede usar para sustituir caracteres antes, entre o posterior a la expresión, como %t, v%a ó v%.

Page 26: Prácticas de MySQL

Práctica 5: Uso de funciones en Consultas en MySQL

La cláusula BETWEEN muestra los valores comprendidos entre un valor superior y un valor inferior, por ejemplo:

SELECT * FROM empleados WHERE salario BETWEEN 1500 AND 3000;

Devolvería como salida

El uso de BETWEEN es equivalente a usar la expresión combinada (salario > 1500 AND salario<3000).

Finalmente, otra sentencia que resultará útil es la cláusula LIMIT la cual limitará el número de registros que se desea mostrar en el resultado, así:

SELECT * FROM empleados LIMIT 10;

Mostraría únicamente diez resultados, si la consulta tuviera más resultados, éstos se recuperarían con:

SELECT * FROM empleados LIMIT 11, 20;

DESARROLLO:1. Inicie una nueva sesión de consola de MySQL y realice los siguientes pasos, no

olvide documentar cada uno de los resultados obtenidos.a. Crear una nueva base de datos y llamarla libreria_Ortega.b. Seleccionarla como base de datos actual y crear la tabla Autores con la

siguiente estructura:TABLA:AUTORES

CAMPOS TIPO DE DATOS ATRIBUTOS

Id_autor INT NOT NULLPRIMARY KEY

Autor VARCHAR (80) NOT NULLc. Abra el archivo autores.xls que se le hizo llegar por correo electrónico,

conviértalo a archivo de texto y proceda a cargar los datos a la tabla autores con el procedimiento descrito en la práctica 3.

d. Crear la tabla libros con la siguiente estructura

Page 27: Prácticas de MySQL

Práctica 5: Uso de funciones en Consultas en MySQL

TABLA:LIBROS

CAMPOS TIPO DE DATOS ATRIBUTOSlibro TINYTEXT NOT NULLanio_pub SMALLINT

Isbn TINYTEXTNOT NULLPRIMARY KEY

Clasificacion VARCHAR(100)e. Abra el archivo libros.xls que se le hizo llegar por correo electrónico,

conviértalo a archivo de texto y proceda a cargar los datos a la tabla libros con el procedimiento descrito en la práctica 3.

f. Ejecute una consulta que muestre únicamente los primeros 20 libros.g. Crear una consulta que muestre el nombre del libro y el isbn de todos

los libros publicados entre 1980 y 1990.h.i. Mostrar los libros que en su título tengan la palabra computer,

ordénelos por su campo anio_pub de forma descendente.j. Ejecute una consulta que obtenga el número de registros de la tabla

libros.k. muestre los libros relativos a dBase o relativos a C++.l. Mostrar los autores cuyo nombre comience con w.m. Mostrar los autores de nombre Michael o de nombre Julia.n. Ejecute una consulta que ordene los libros por el año de publicación.o. Cree una consulta que obtenga el número de títulos por año de

publicación.p. Se requiere conocer la clasificación de los libros que en su título tengan

la palabra Unix.

Page 28: Prácticas de MySQL

Práctica 5: Uso de funciones en Consultas en MySQL