Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

miércoles, 24 de julio de 2013

Un poco de SQL basico: Seleccionar, Insertar, Editar, Borrar, Buscar


Para trabajar con bases de datos (ya sea MySQL, PostgreSQL, Firebird, ODBC y SQLite), necesitamos saber un poco del Lenguaje SQL.  Si buscais en internet, encontrareis muchos manuales y páginas web dedicas a explicar SQL.

Yo he encontrado en esta página web http://sql.11sql.com/, explicaciones de las principales órdenes , dando algunos ejemplos de como usarlas.

Cuadro Resumen

Orden Clausulas Uso
SELECT

Permite realizar consultas sobre los datos almacenados en la base de datos.


SELECT DISTINCT Permite realizar consultas sobre los datos almacenados en la base de datos. Pero solo aparecen los distintos (no repetidos)


Where Hacer filtros en las consultas (busquedas)


And / Or Los operadores AND y OR se utilizan para filtrar resultados con 2 condiciones.


Order by Se utiliza para ordenar los resultados de una consulta, según el valor de la columna especificada.


Where .... like.... Se utiliza en la cláusula WHERE para buscar por un patrón.


Where... in... Permite seleccionar múltiples valores en una cláusula WHERE


BETWEEN BETWEEN se utiliza en la cláusula WHERE para seleccionar valores entre un rango de datos.
Insert

Se utiliza para insertar nuevas filas en una tabla
Update

Se utiliza para modificar valores en una tabla.


Set Establece los nuevos valores para las columnas indicadas.


Where Sirve para seleccionar las filas que queremos modificar.
Delete

Sirve para borrar filas de una tabla.


Where Sirve para seleccionar las filas que queremos modificar.
join

La sentencia SQL JOIN se utiliza para relacionar varias tablas




Os dejo una selección de las órdenes más comunes que deberéis conocer para trabajar con vuestras bases de datos y algunos ejemplos:



Select 
Una de las sentencias SQL más importantes es SELECT, ya que permite realizar consultas sobre los datos almacenados en la base de datos.
Sintaxis SQL SELECT
SELECT * FROM nombretabla
SELECT columna1, columna2 FROM nombretabla

DISTINCT 
Al realizar una consulta puede ocurrir que existan valores repetidos para algunas columnas. Por ejemplo
SELECT nombre FROM personas
nombre
ANTONIO
LUIS
ANTONIO

Esto no es un problema, pero a veces queremos que no se repitan, por ejemplo, si queremos saber los nombre diferentes que hay en la tabla personas", entonces utilizaremos DISTINCT.
SELECT DISTINCT nombre FROM personas


WHERE 
La cláusula WHERE se utiliza para hacer filtros en las consultas, es decir, seleccionar solamente algunas filas de la tabla que cumplan una determinada condición.
El valor de la condición debe ir entre comillas simples ''.
Por ejemplo:
Seleccionar las personas cuyo nombre sea ANTONIO
SELECT * FROM personas
WHERE nombre = 'ANTONIO'

AND OR 
Los operadores AND y OR se utilizan para filtrar resultados con 2 condiciones.
El operador AND mostrará los resultados cuando se cumplan las 2 condiciones.
Condición1 AND condición2
El operador OR mostrará los resultados cuando se cumpla alguna de las 2 condiciones.
Condicion1 OR condicion2
En la tabla personas
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ
La siguiente sentencia (ejemplo AND) dará el siguiente resultado:
SELECT * FROM personas
WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA'
nombre
apellido1
apellido2
ANTONIO GARCIA BENITO




ORDER BY 
ORDER BY se utiliza para ordenar los resultados de una consulta, según el valor de la columna especificada.
Por defecto, se ordena de forma ascendente (ASC) según los valores de la columna.
Si se quiere ordenar por orden descendente se utiliza la palabra DES
SELECT nombre_columna(s)
FROM nombre_tabla
ORDER BY nombre_columna(s) ASC|DESC
Por ejemplo, en la tabla personas :
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
SELECT nombre, apellido1
FROM personas
ORDER BY apellido1 ASC 
Esta es la consulta resultante:
nombre
apellido1
LUIS LOPEZ
ANTONIO GARCIA
ANTONIO PEREZ

INSERT 
La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla.
Es posible insertar una nueva fila en una tabla de dos formas distintas:
INSERT INTO nombre_tabla
VALUES (valor1, valor2, valor3, .)
INSERT INTO nombre_tabla (columna1, columna2, columna3,.)
VALUES (valor1, valor2, valor3, .)
Ejemplo:
Dada la siguiente tabla personas:
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
Si queremos insertar una nueva fila en la tabla personas, lo podemos hacer con cualquiera de las dos sentencias siguientes:
INSERT INTO personas
VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')
INSERT INTO personas (nombre, apellido1, apellido2)
VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')

UPDATE 
La sentencia UPDATE se utiliza para modificar valores en una tabla.
La sintaxis de SQL UPDATE es:
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3
La cláusula SET establece los nuevos valores para las columnas indicadas.
La cláusula WHERE sirve para seleccionar las filas que queremos modificar.
Ojo: Si omitimos la cláusula WHERE, por defecto, modificará los valores en todas las filas de la tabla.
Ejemplo del uso de SQL UPDATE
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ
Si queremos cambiar el apellido2 'BENITO' por 'RODRIGUEZ' ejecutaremos:
UPDATE personas
SET apellido2 = 'RODRIGUEZ'
WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA'
AND apellido2 = 'BENITO'
Ahora la tabla 'personas' quedará así:
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ


DELETE 
La sentencia DELETE sirve para borrar filas de una tabla.
La sintaxis de SQL DELETE es:
DELETE FROM nombre_tabla
WHERE nombre_columna = valor
Si queremos borrar todos los registros o filas de una tabla, se utiliza la sentencia:
DELETE * FROM nombre_tabla;
Ejemplo de SQL DELETE para borrar una fila de la tabla personas
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ
Si queremos borrar a la persona LUIS LOPEZ PEREZ, podemos ejecutar el comando:
DELETE FROM personas
WHERE nombre = 'LUIS'
AND apellido1 = 'LOPEZ'
AND apellido2 = 'PEREZ' 
La tabla 'personas' resultante será:
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ


LIKE 
El operador LIKE se utiliza en la cláusula WHERE para buscar por un patrón.
Sintaxis de SQL LIKE
SELECT columna(s) FROM tabla WHERE columna LIKE '%patron%'
Ejemplos del uso de SQL LIKE
Dada la siguiente tabla 'personas'
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ
Si quiero seleccionar los nombres que empiezan por 'AN' en la tabla 'personas', ejecutaría el comando siguiente:
SELECT * FROM personas
WHERE nombre LIKE 'AN%'
El character '%' es un comodín, que sirve para uno o más caracteres.

 WILDCARDS “COMODINES” 
Los caracteres Wildcards (comodines) son caracteres especiales que se utilizan para realizar búsquedas especiales, como por ejemplo, buscar palabras que empiecen por una letra determinada (letra%) o que contengan la letra a (%a%), o que contengan alguna vocal ([aeiou]), etc.
Los caracteres Wildcards se utilizan con el operador SQL LIKE en una sentencia SELECT.Los caracteres Wildcards son :
% sustituye a cero o más caracteres
_ sustituye a 1 carácter cualquiera
[lista] sustituye a cualquier carácter de la lista
[^lista] o [!lista] sustituye a cualquier carácter excepto los caracteres de la lista
Ejemplos:
Dada la siguiente tabla 'personas'
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ
Ejemplos Wildcards
Seleccionar las personas cuyo nombre contenga una 'R'
SELECT * FROM personas
WHERE nombre LIKE '%R%'
Resultado:
nombre
apellido1
apellido2
PEDRO RUIZ GONZALEZ


IN 
El operador IN permite seleccionar múltiples valores en una cláusula WHERE
Sintaxis SQL IN
SELECT columna
FROM tabla
WHERE columna
IN (valor1, valor2, valor3, .)
Ejemplo SQL IN
Dada la siguiente tabla 'personas'
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ
Queremos seleccionar a las personas cuyo apellido1 sea 'PEREZ' o 'RUIZ'
SELECT * FROM personas
WHERE apellido1
IN ('PEREZ','RUIZ')
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
PEDRO RUIZ GONZALEZ


BETWEEN 
El operador BETWEEN se utiliza en la cláusula WHERE para seleccionar valores entre un rango de datos.
Sintaxis de SQL BETWEEN
SELECT columna
FROM tabla WHERE columna
BETWEEN valor1 AND valor2
Ejemplo de SQL BETWEEN
Dada la siguiente tabla 'personas'
nombre
apellido1
apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ
Seleccionar personas cuyo apellido1 esté entre 'FERNANDEZ y 'HUERTAS'
SELECT *
FROM personas
WHERE apellido1
BETWEEN 'FERNANDEZ' AND 'HUERTAS'
nombre
apellido1
apellido2
ANTONIO GARCIA RODRIGUEZ


Para unir tablas: JOIN

 SELECT * FROM Tabla1 JOIN tabla2 ON Tabla1.cid=Tabla2.cid
Ejemplo:
Tabla clientes:
+------+--------+----------+
| cid  | nombre | telefono |
+------+--------+----------+
|    1 | jose   | 111      |
|    2 | maria  | 222      |
|    3 | manuel | 333      |
|    4 | jesus  | 4444     |
+------+--------+----------+
Tabla acciones:
+-----+-----+--------+----------+
| aid | cid | accion | cantidad |
+-----+-----+--------+----------+
|   1 |   2 | REDHAT |       10 |
|   2 |   4 | NOVELL |       20 |
|   3 |   4 | SUN    |       30 |
|   4 |   5 | FORD   |      100 |
+-----+-----+--------+----------+
Observaciones de las tablas:
La primer tabla contiene clientes y teléfonos y la segunda la tenencia de acciones de los clientes.
Las dos tablas contienen el campo cid (client id) que es el que nos permitirá realizar coincidencias entre ambas tablas con join.

El JOIN nos permitirá obtener un listado de los campos que tienen coincidencias en ambas tablas.
Osea nos dara un lista de los clientes que tienen acciones.
select nombre, telefono, accion, cantidad from clientes join acciones on clientes.cid = acciones.cid
Resultado:
+--------+----------+--------+----------+
| nombre | telefono | accion | cantidad |
+--------+----------+--------+----------+
| maria  | 222      | REDHAT |       10 |
| jesus  | 4444     | NOVELL |       20 |
| jesus  | 4444     | SUN    |       30 |
+--------+----------+--------+----------+

Descarga de la base de datos accion-cliente: enlace


Cambiar el nombre de la columna de un resultado: AS (alias)

En las cabeceras de las columnas de los resultados de realizar consultas, por defecto se pone el nombre del campo o el nombre de la tabla seguido de un punto y luego el nombre del campo.

Si queremos cambiar ese nombre lo podemos hacer con la palabra AS, ejemplo:
Select nombre AS "Nombre del Equipo" from Equipos Order by "Nombre del Equipo"

Como veis el campo "nombre", saldrá en el resultado de la consulta como "Nombre del Equipo", incluso hemos podido usar ese alias para indicar la ordenación.


Nota: 05/08/2014 "upper"
Para realizar búsquedas donde no sabemos si los textos del campo de búsqueda están en mayúsculas o minúsculas o mezclados (por ejemplo "Juan Antonio" o "juan antonio" o "JUAN ANTONIO"), podemos usar "upper" que convierte todo el contenido en mayúsculas.

Por ejemplo:
Queremos buscar en la tabla "Profesores", en el campo "nombre", los profesores que tengan de nombre Juan (puede ser "Juan Antonio", "Manuel Juan", "Juan", etc), la consulta sería así:

Select * from Profesores where upper(nombre) like upper('%Juan%')


Fuente:
http://sql.11sql.com/
http://ariel.esdebian.org/27200/sql-join-basico
http://www.ite.educacion.es/formacion/materiales/93/cd/m6/cambiar_el_nombre_de_los_campos_en_el_resultado_con_alias.html

Enlace de Interes:
Web Aprende a Programar: Tutoriales y Manuales de SQL

1 comentario:

A falta de donativos... un poco de publicidad