Sunteți pe pagina 1din 30

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 distincin entre
maysculas y minsculas. Podemos escribir SQL tanto en minsculas
como maysculas.

Sentencia SQL WHERE

La 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_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 condicin;

Clasula ORDER BY

La 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_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

Ejemplo de la clasula ORDER BY

En este ejemplo ordenamos la tabla "books" en orden alfabtico


utilizando el "ttulo";

SQL JOIN

La 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 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 condicin
books.idpublisher=publisher.idpublisher.

SQL LEFT JOIN

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


ningn registro de la tabla "publisher";

Clasula RIGHT JOIN

La 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 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 revs:

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, slo 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 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 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 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 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 bsica de la clasula 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 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 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 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 DELETE
DELETE FROM table_name
WHERE some_column=some_value;

Ejemplo SQL DELETE

A 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 TRUNCATE

Elimina 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 TRUNCATE
TRUNCATE table_name;

Ejemplo SQL TRUNCATE

Vamos a borrar la tabla "publisher2";


TRUNCATE eli.publisher2;

Y a continuacin vemos como qued la tabla "publisher2";

FUNCIN SQL COUNT

La FUNCIN SQL COUNT retorna el nmero de registros de una


consulta.
SINTAXIS DE LA FUNCIN SQL COUNT(*)
SELECT COUNT(*)

FROM table_name

EJEMPLO 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 BY

La funcin SQL GROUP BY es utilizada para agrupar datos idnticos en


grupos.

SINTAXIS DE LA FUNCIN SQL GROUP BY


SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2

EJEMPLO DE LA FUNCIN SQL GROUP BY

Para 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 AND

El operador AND muestra un registro cuando la primera condicin y la


segunda se cumplen.
EJEMPLO DEL OPERADOR SQL AND

Tenemos 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 OR

El operador OR, muestra los registros cuando se cumple la primera


condicin la segunda.
EJEMPLO DEL OPERADOR SQL OR

Con 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 DISTINCT

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

La clasula DISTINCT se aade a las sentencias SELECT , justo despus


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 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_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 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 BETWEEN

BETWEEN 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 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" (<=). Es importante recordar que el operador BETWEEN es
inclusivo.

Se puede utilizar BETWEEN con ms tipos de datos adems de fechas,


como por ejemplo texto;
A continuacin tenemos la tabla "books", que vamos a usar para este
ejemplo;

Queremos seleccionar los registros que su ttulo empieza con la letra "a"
a la "s";
SELECT * FROM eli.books WHERE title BETWEEN 'a' and 's';

Obtendremos en los resultados los ttulos que empiezan con la "a", la


"b", etc hasta la "r", que es la ltima letra antes de la "s". Sin embargo
no obtendremos resultados que empiecen con la letra "s". Obtendriamos
un registro, en el caso de que hubiera un ttulo compuesto de la letra "s"
solamente. Cualquier ttulo que empiece con la letra "s" y un slo
caracter ms, es mayor que la "s" y est fuera del rango de valores.

Uso del operador NOT con el operador BETWEEN:

Podemos utilizar el operador BETWEEN en conjuncin con el operador


NOT. En este caso SQL selecciona el valor que no est en el rango
especificado.
De nuestra tabla "publisher";

Vamos a seleccionar los nombres de los editores, que tengan un nmero


de telfono que no est dentro del rango "4999" y "5010";
SELECT name FROM eli.publisher where phone not between '4999' and '5010';

S-ar putea să vă placă și