284668630-Ejemplos-de-Consultas-en-Mysql-Workbench.pdf

Sentencia SELECT La sentencia SELECT se utiliza para seleccionar datos de una base de datos. Se guarda el resultado en

Views 221 Downloads 4 File size 809KB

Report DMCA / Copyright

DOWNLOAD FILE

Citation preview

Sentencia SELECT

La 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_name FROM table_name;

Ejemplo de la sentencia SELECT

En el siguiente ejemplo pedimos el "titulo", "autor" y "isbn" de todos los registros de la tabla "books". Como ven SQL no hace distinción entre mayúsculas y minúsculas. Podemos escribir SQL tanto en minúsculas como mayúsculas.

Sentencia SQL WHERE

La sentencia WHERE se usa para extraer sólo los registros que cumplan con una condición. Funciona como un filtro. Sintaxis de la sentencia SQL WHERE SELECT column_name,column_name FROM table_name WHERE column_name operator value;

Ejemplo de la sentencia SQL WHERE

En este ejemplo, estamos pidiendo todos los registros de la tabla "books" que tengan "idpublisher"=1. Conseguiremos los resultados que cumplan esa condición;

Claúsula ORDER BY

La claúsula ORDER BY se utiliza para ordenar los resultados a través de una o más columnas.

La claúsula ORDER BY ordena los registros de manera ascendente por defecto. Para hacerlo de manera descendente, se puede utilizar la claúsula DESC. Sintaxis de la claúsula SQL ORDER BY SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC|DESC;

Ejemplo de la claúsula ORDER BY

En este ejemplo ordenamos la tabla "books" en orden alfabético utilizando el "título";

SQL JOIN

La instrucción SQL JOIN se utiliza para combinar dos o más tablas, tomando un campo común de las dos. El JOIN más común es: SQL INNER JOIN (join simple). Un SQL INNER JOIN devuelve todos los registros de varias tablas que cumplen con la condición. SINTAXIS INNER JOIN SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;

ó SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name;

INNER JOIN es lo mismo que JOIN.

Ejemplo INNER JOIN

En nuestro ejemplo combinamos todos los registros de las tablas "publisher" y "books" cuando se cumple con la condición books.idpublisher=publisher.idpublisher.

SQL LEFT JOIN

La claúsula 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 condición. SINTAXIS SQL LEFT JOIN SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;

en algunas bases de datos LEFT JOIN es LEFT OUTER JOIN; SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON 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 ningún registro de la tabla "publisher";

Claúsula RIGHT JOIN

La instrucción 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 table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;

ó SELECT column_name(s) FROM table1 RIGHT OUTER JOIN table2 ON table1.column_name=table2.column_name;

Ejemplo SQL RIGHT JOIN

Podemos cambiar en la consulta SQL, el orden de las tablas para que veamos que es lo mismo que el LEFT JOIN pero al revés:

Sentencia SQL INSERT INTO

La sentencia INSERT INTO se utiliza para insertar nuevos registros a una tabla Sintaxis SQL INSERT INTO

Se 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, sólo se especifican los valores: INSERT INTO table_name VALUES (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 INTO

Insertamos dos nuevos valores en una nueva tabla "publisher2"; INSERT INTO eli.publisher2 (name, phone) VALUES ('New Store', '555 666');

A continuación vemos la tabla con los datos insertados después de la operación SQL INSERT

INTO;

Con SQL, podemos copiar información de una tabla a otra. Sentencia SQL INSERT INTO SELECT

La 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 SELECT

Podemos copiar todas los registros de una tabla a otra ya existente: INSERT INTO table2 SELECT * 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 SELECT

Vamos 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 continuación podemos ver los datos en nuestra tabla después de la operación 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 tamaño con el perfil de la columna donde van a ser insertados; INSERT INTO eli.publisher2 VALUES (4, 'Old store', '555 999');

Sentencia SQL UPDATE

La 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 UPDATE

La sintaxis básica de la claúsula UPDATE es la siguiente: UPDATE table_name SET column_name = value WHERE condition

Ejemplo SQL UPDATE

Primero vamos a ver que datos tenemos en la tabla "publisher2";

Actualizamos las columnas "phone" y "name" cuando el "idpublisher=4" con la siguente instrucción; 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 DELETE

La 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 añadir una claúsula WHERE para especificar qué registros borrar. Hay que tener en cuenta que si se omite la claúsula WHERE, se borrarán todos los registros! Sintaxis SQL DELETE DELETE FROM table_name WHERE some_column=some_value;

Ejemplo SQL DELETE

A continuación 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 TRUNCATE

Elimina todas las filas de una tabla. Es una instrucción DDL; internamente hace un DROP de la tabla y después hace un CREATE de la misma tabla. TRUNCATE TABLE es similar a la sentencia DELETE pero sin la claúsula WHERE. Tiene la desventaja de que no se puede borrar selectivamente toda la tabla y la ventaja de que TRUNCATE TABLE es más rápido y utiliza menos recursos. Sintaxis SQL TRUNCATE TRUNCATE table_name;

Ejemplo SQL TRUNCATE

Vamos a borrar la tabla "publisher2"; TRUNCATE eli.publisher2;

Y a continuación vemos como quedó la tabla "publisher2";

FUNCIÓN SQL COUNT

La FUNCIÓN SQL COUNT retorna el número de registros de una consulta. SINTAXIS DE LA FUNCIÓN SQL COUNT(*) SELECT COUNT(*)

FROM table_name

EJEMPLO DE LA FUNCIÓN SQL COUNT(*)

A continuación tenemos la tabla "authors".

Con la función Count() podemos ver el número de autores que tenemos en la tabla;

FUNCIÓN SQL GROUP BY

La función SQL GROUP BY es utilizada para agrupar datos idénticos en grupos.

SINTAXIS DE LA FUNCIÓN SQL GROUP BY SELECT column1, column2 FROM table_name WHERE [ conditions ] GROUP BY column1, column2

EJEMPLO DE LA FUNCIÓN SQL GROUP BY

Para este ejemplo vamos a ver primero nuestra tabla "books";

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

OPERADOR LÓGICO SQL AND

El operador AND muestra un registro cuando la primera condición y la segunda se cumplen. EJEMPLO DEL OPERADOR SQL AND

Tenemos la tabla "books" con la siguiente información;

Y queremos seleccionar los títulos de los libros que tiene isbn="4444" Y el author="edu". En este caso sólo nos retornará un libro; "sql in 15 minutes". Hacemos la selección con la siguiente consulta; SELECT TITLE FROM eli.books WHERE isbn='4444' and AUTHOR='edu';

Como podemos ver a continuación, el resultado es el esperado;

Cuando usamos AND, es conveniente poner la condición con menor probabilidad de que se cumpla, en primer lugar. El sistema de la base de

datos evalúa las condiciones de izquierda a derecha. Si tenemos dos o más operadores AND en una condición, el que está a la izquierda, es el primero en ser evaluado, y sólo si es verdadera, se evalua la siguiente condición. Si, esa condición también es verdadera, se evaluará la tercera condición. Si ponemos la condición menos probable en primer lugar, se ahorra trabajo al sistema de la base de datos, aumentando así la velocidad. OPERADOR LÓGICO SQL OR

El operador OR, muestra los registros cuando se cumple la primera condición Ó la segunda. EJEMPLO DEL OPERADOR SQL OR

Con la misma tabla "books" podemos seleccionar los títulos 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 sólo operador AND o OR dentro de una claúsula WHERE, pero se pueden incluir tantas como sean necesarias. También se pueden mezclar los operadores AND y OR en una misma claúsula. SQL SELECT DISTINCT

La claúsula DISTINCT nos devuelve valores únicos. En una tabla, una columna puede contener valores duplicados; y algunas veces sólo se necesita un listado de los valores diferentes. SINTAXIS SELECT DISTINCT SQL

La claúsula DISTINCT se añade a las sentencias SELECT , justo después de la palabra clave SELECT. SELECT DISTINCT column_name,column_name FROM table_name;

EJEMPLO SELECT DISTINCT SQL

Podemos 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 LIKE

El operador LIKE permite utilizar caracteres comodín en la búsqueda de un patrón dentro de una columna. Un caracter comodín es aquel que no coincide con un caracter específico si no con cualquier caracter o caracteres. El operador LIKE selecciona valores alfanuméricos con un determinado patrón. SINTAXIS DEL OPERADOR SQL LIKE SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

EJEMPLO SQL LIKE

Usaremos la siguiente tabla "publisher3" para nuestro ejemplo:

En nuestro ejercicio queremos seleccionar los "publishers" (editores), que terminan con una "a".

nombres

de

los

Utilizaremos la siguiente sentencia SQL: SELECT * FROM eli.publisher3 where name like '%a';

Utilizando MySQL Workbench como interfaz gráfica vemos el siguiente resultado;

El símbolo "%" se utiliza para definir los comodines en el patrón, tanto delante como detrás de otros caracteres;

Hay que tener en cuenta que si estamos utilizando MS Access, hay que cambiar el símbolo 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 mayúsculas y las minúsculas; en otras no. Oracle, por ejemplo si que lo es y SQL, como vemos a continuación, no;

Podemos utilizar el operador LIKE junto con el operador NOT, que nos devolverá aquellos registros que no coincidan con el patrón.

OPERADOR SQL BETWEEN

BETWEEN es un operador muy útil a utilizar dentro de la claúsula WHERE, para especificar un rango de valores inclusivos. Se utiliza normalmente con fechas pero también se puede usar con strings y con números. SINTAXIS DEL OPERADOR SQL BETWEEN SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;

EJEMPLO DEL OPERADOR SQL BETWEEN

Para 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 '198501-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" (