Ejemplos de Consultas en Mysql Workbench

download Ejemplos de Consultas en Mysql Workbench

of 30

description

Como crear consultas en mysql Workbech

Transcript of Ejemplos de Consultas en Mysql Workbench

Sentencia SELECTLa sentencia SELECT se utiliza para seleccionar datos de una base de datos.Se guarda el resultado en una tabla llamada "result-set".Sintaxis de la Sentencia SELECT 1 SELECT column_name,column_nameFROM table_name; Ejemplo de la sentencia SELECTEn el siguiente ejemplo pedimos el "titulo", "autor" y "isbn" de todos los registros de la tabla "books". Como ven SQL no hace distincin entre maysculas y minsculas. Podemos escribir SQL tanto en minsculas como maysculas.

Sentencia SQL WHERELa sentencia WHERE se usa para extraer slo los registros que cumplan con una condicin. Funciona como un filtro.Sintaxis de la sentencia SQL WHERE SELECT column_name,column_nameFROM table_nameWHERE column_name operator value;Ejemplo de la sentencia SQL WHEREEn este ejemplo, estamos pidiendo todos los registros de la tabla "books" que tengan "idpublisher"=1. Conseguiremos los resultados que cumplan esa condicin;

Clasula ORDER BYLa clasula ORDER BY se utiliza para ordenar los resultados a travs de una o ms columnas.La clasula ORDER BY ordena los registros de manera ascendente por defecto. Para hacerlo de manera descendente, se puede utilizar la clasula DESC.Sintaxis de la clasula SQL ORDER BY SELECT column_name,column_nameFROM table_nameORDER BY column_name,column_name ASC|DESC; Ejemplo de la clasula ORDER BYEn este ejemplo ordenamos la tabla "books" en orden alfabtico utilizando el "ttulo";

SQL JOINLa instruccin SQL JOIN se utiliza para combinar dos o ms tablas, tomando un campo comn de las dos.El JOIN ms comn es:SQL INNER JOIN (join simple). Un SQL INNER JOIN devuelve todos los registros de varias tablas que cumplen con la condicin.SINTAXIS INNER JOINSELECT column_name(s)FROM table1INNER JOIN table2ON table1.column_name=table2.column_name;SELECT column_name(s)FROM table1JOIN table2ON table1.column_name=table2.column_name;INNER JOIN es lo mismo que JOIN.

Ejemplo INNER JOINEn nuestro ejemplo combinamos todos los registros de las tablas "publisher" y "books" cuando se cumple con la condicin books.idpublisher=publisher.idpublisher.

SQL LEFT JOINLa clasula LEFT JOIN devuelve todas los registros de la tabla de la izquierda (table1), con las correspondientes de la tabla de la derecha (table2). El resultado es NULL en la parte de la derecha cuando no hay registros que correspondan con la condicin.SINTAXIS SQL LEFT JOIN SELECT column_name(s)FROM table1LEFT JOIN table2ON table1.column_name=table2.column_name; en algunas bases de datos LEFT JOIN es LEFT OUTER JOIN; SELECT column_name(s)FROM table1LEFT OUTER JOIN table2ON table1.column_name=table2.column_name;

Ejemplo SQL LEFT JOIN

Aqu podemos ver que el resultado es el mismo que el INNER JOIN pero esto es porque todos los registros de "books" tienen un "idpublisher" que coincide con un "idpublisher" de la tabla "publisher". Si insertamos un nuevo registro en la tabla "books", con un "idpublisher" que no coincida con ningun "idpublisher" de la tabla "publisher" (idpublisher=0) entonces;

cuando escribimos nuestra consulta LEFT JOIN no vamos a obtener ningn registro de la tabla "publisher";

Clasula RIGHT JOINLa instruccin RIGHT JOIN devuelve todas los registros de la tabla de la derecha (table2), y todas los registros correspondientes de la tabla de la izquierda (table1). El resultado ser NULL cuando no haya registros correspondientes de la tabla de la izquierda.SQL RIGHT JOIN Syntax SELECT column_name(s)FROM table1RIGHT JOIN table2ON table1.column_name=table2.column_name; SELECT column_name(s)FROM table1RIGHT OUTER JOIN table2ON table1.column_name=table2.column_name;

Ejemplo SQL RIGHT JOINPodemos cambiar en la consulta SQL, el orden de las tablas para que veamos que es lo mismo que el LEFT JOIN pero al revs:

Sentencia SQL INSERT INTOLa sentencia INSERT INTO se utiliza para insertar nuevos registros a una tablaSintaxis SQL INSERT INTOSe puede escribir la sentencia INSERT INTO de dos maneras.La primera forma no especifica los nombres de las columnas en las que se inserta los datos, slo se especifican los valores:INSERT INTO table_nameVALUES (value1,value2,value3,...); La segunda forma especifica tanto los nombres de las columnas como los valores a insertar;INSERT INTO table_name (column1,column2,column3,...)VALUES (value1,value2,value3,...);EJEMPLO SQL INSERT INTOInsertamos dos nuevos valores en una nueva tabla "publisher2";INSERT INTO eli.publisher2 (name, phone) VALUES ('New Store', '555 666');A continuacin vemos la tabla con los datos insertados despus de la operacin SQL INSERT INTO;

Con SQL, podemos copiar informacin de una tabla a otra.Sentencia SQL INSERT INTO SELECTLa sentencia INSERT INTO SELECT selecciona datos de una tabla y los inserta en otra tabla ya existente. Los registros ya existentes de la tabla destino, no se ven afectadas.Sintaxis SQL INSERT INTO SELECTPodemos copiar todas los registros de una tabla a otra ya existente:INSERT INTO table2SELECT * FROM table1;O podemos copiar de una tabla a otra, solamente las columnas que queremos:INSERT INTO table2(column_name(s))SELECT column_name(s)FROM table1;Ejemplo SQL INSERT INTO SELECTVamos a copiar los valores de las columnas "name" y "phone" desde la tabla "publisher" a la tabla "publisher2";INSERT INTO eli.publisher2 (name, phone) SELECT name, phone from eli.publisher;A continuacin podemos ver los datos en nuestra tabla despus de la operacin INSERT INTO SELECT;

Nota: Tanto en el caso de la sentencia INSERT INTO como de la sentencia INSERT INTO SELECT, no es necesario escribir las columnas en la consulta SQL, cuando los valores coincidan en tipo y tamao con el perfil de la columna donde van a ser insertados;INSERT INTO eli.publisher2 VALUES (4, 'Old store', '555 999');

Sentencia SQL UPDATELa sentencia UPDATE se utiliza para actualizar registros ya existentes de una tabla.Nos permite elegir los campos a actualizar y los datos con que actualizarlos.Sintaxis SQL UPDATELa sintaxis bsica de la clasula UPDATE es la siguiente: UPDATE table_nameSET column_name = valueWHERE condition Ejemplo SQL UPDATEPrimero vamos a ver que datos tenemos en la tabla "publisher2";

Actualizamos las columnas "phone" y "name" cuando el "idpublisher=4" con la siguente instruccin;UPDATE eli.publisher2 SET phone='111 111', name='OLD STORE' WHERE idpublisher=4;Volvemos a mirar los datos de la tabla "publisher2" y vemos que los datos han sido actualizados correctamente;

Sentencia SQL DELETELa sentencia DELETE se utiliza para borrar registros de una tabla.Se especifica de que tabla se quieren borrar los registros y si se necesita, se puede aadir una clasula WHERE para especificar qu registros borrar.Hay que tener en cuenta que si se omite la clasula WHERE, se borrarn todos los registros!Sintaxis SQL DELETEDELETE FROM table_nameWHERE some_column=some_value; Ejemplo SQL DELETEA continuacin vemos nuestra tabla "publisher3", que es la que vamos a usar en nuestro ejemplo para borrar datos;

Ahora vamos a borrar las columnas que tengan el idpublisher=4";DELETE FROM `eli`.`publisher3` WHERE `idpublisher`='4';Y el resultado es;

Sentencia SQL TRUNCATEElimina todas las filas de una tabla. Es una instruccin DDL; internamente hace un DROP de la tabla y despus hace un CREATE de la misma tabla.TRUNCATE TABLE es similar a la sentencia DELETE pero sin la clasula WHERE. Tiene la desventaja de que no se puede borrar selectivamente toda la tabla y la ventaja de que TRUNCATE TABLE es ms rpido y utiliza menos recursos.Sintaxis SQL TRUNCATETRUNCATE table_name;Ejemplo SQL TRUNCATEVamos a borrar la tabla "publisher2";TRUNCATE eli.publisher2;Y a continuacin vemos como qued la tabla "publisher2";

FUNCIN SQL COUNTLa FUNCIN SQL COUNT retorna el nmero de registros de una consulta.SINTAXIS DE LA FUNCIN SQL COUNT(*)SELECT COUNT(*)FROM table_nameEJEMPLO DE LA FUNCIN SQL COUNT(*)A continuacin tenemos la tabla "authors".

Con la funcin Count() podemos ver el nmero de autores que tenemos en la tabla;

FUNCIN SQL GROUP BYLa funcin SQLGROUP BYes utilizada para agrupar datos idnticos en grupos.SINTAXIS DE LA FUNCIN SQL GROUP BYSELECT column1, column2 FROM table_name WHERE [ conditions ] GROUP BY column1, column2EJEMPLO DE LA FUNCIN SQL GROUP BYPara este ejemplo vamos a ver primero nuestra tabla "books";

Basndonos en esta tabla, vamos a escribir una consulta para agrupar a los autores de los libros;

OPERADOR LGICO SQL ANDEl operador AND muestra un registro cuando la primera condicin y la segunda se cumplen.EJEMPLO DEL OPERADOR SQL ANDTenemos la tabla "books" con la siguiente informacin;

Y queremos seleccionar los ttulos de los libros que tiene isbn="4444" Y el author="edu". En este caso slo nos retornar un libro; "sql in 15 minutes".Hacemos la seleccin con la siguiente consulta;SELECT TITLE FROM eli.books WHERE isbn='4444' and AUTHOR='edu';Como podemos ver a continuacin, el resultado es el esperado;

Cuando usamos AND, es conveniente poner la condicin con menor probabilidad de que se cumpla, en primer lugar. El sistema de la base de datos evala las condiciones de izquierda a derecha. Si tenemos dos o ms operadores AND en una condicin, el que est a la izquierda, es el primero en ser evaluado, y slo si es verdadera, se evalua la siguiente condicin. Si, esa condicin tambin es verdadera, se evaluar la tercera condicin. Si ponemos la condicin menos probable en primer lugar, se ahorra trabajo al sistema de la base de datos, aumentando as la velocidad.OPERADOR LGICO SQL OREl operador OR, muestra los registros cuando se cumple la primera condicin la segunda.EJEMPLO DEL OPERADOR SQL ORCon la misma tabla "books" podemos seleccionar los ttulos de los libros que tienen el "isbn=4444" o el autor="eli":SELECT TITLE FROM eli.books WHERE isbn='4444' or AUTHOR='ELI';

Hasta ahora hemos utilizado un slo operador AND o OR dentro de una clasula WHERE, pero se pueden incluir tantas como sean necesarias. Tambin se pueden mezclar los operadores AND y OR en una misma clasula.SQL SELECT DISTINCTLa clasula DISTINCT nos devuelve valores nicos. En una tabla, una columna puede contener valores duplicados; y algunas veces slo se necesita un listado de los valores diferentes.SINTAXIS SELECT DISTINCT SQLLa clasula DISTINCT se aade a las sentencias SELECT , justo despus de la palabra clave SELECT. SELECT DISTINCT column_name,column_nameFROM table_name;EJEMPLO SELECT DISTINCT SQLPodemos ver como en nuestra tabla "books" tenemos duplicados los autores "eli" y "edu";

Si queremos solamente el listado de los valores diferentes, podriamos escribir la siguiente consulta sql;SELECT DISTINCT AUTHOR FROM eli.books;Obteniendo este resultado;

OPERADOR SQL LIKEEl operador LIKE permite utilizar caracteres comodn en la bsqueda de un patrn dentro de una columna. Un caracter comodn es aquel que no coincide con un caracter especfico si no con cualquier caracter o caracteres.El operador LIKE selecciona valores alfanumricos con un determinado patrn.SINTAXIS DEL OPERADOR SQL LIKE SELECT column_name(s)FROM table_nameWHERE column_name LIKE pattern;EJEMPLO SQL LIKEUsaremos la siguiente tabla "publisher3" para nuestro ejemplo:

En nuestro ejercicio queremos seleccionar los nombres de los "publishers" (editores), que terminan con una "a".Utilizaremos la siguiente sentencia SQL:SELECT * FROM eli.publisher3 where name like '%a'; Utilizando MySQL Workbench como interfaz grfica vemos el siguiente resultado;

El smbolo "%" se utiliza para definir los comodines en el patrn, tanto delante como detrs de otros caracteres;

Hay que tener en cuenta que si estamos utilizando MS Access, hay que cambiar el smbolo de porcentaje (%), por el de un asterisco (*):SELECT * FROM eli.publisher3 WHERE name like '*a';En algunas bases de datos, el operador LIKE es sensible a las maysculas y las minsculas; en otras no. Oracle, por ejemplo si que lo es y SQL, como vemos a continuacin, no;

Podemos utilizar el operador LIKE junto con el operador NOT, que nos devolver aquellos registros que no coincidan con el patrn.

OPERADOR SQL BETWEENBETWEEN es un operador muy til a utilizar dentro de la clasula WHERE, para especificar un rango de valores inclusivos. Se utiliza normalmente con fechas pero tambin se puede usar con strings y con nmeros.SINTAXIS DEL OPERADOR SQL BETWEENSELECT column_name(s)FROM table_nameWHERE column_name BETWEEN value1 AND value2;EJEMPLO DEL OPERADOR SQL BETWEENPara nuestro ejemplo, utilizaremos nuestra tabla "authors":

Con la siguiente sentencia SQL, queremos seleccionar los autores nacidos entre el 2 de febrero de 1971 y el 1 de enero de 1985:SELECT * FROM eli.authors WHERE birthday BETWEEN '1971-02-02' AND '1985-01-01';Obteniendo el siguiente resultado;

Utilizando el operador BETWEEN, podemos ver que nos devuelve los mismos resultados que los operadores "mayor o igual" (>=) y "menor o igual" (