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
La
siguiente sentencia (ejemplo AND) dará el siguiente resultado:
SELECT
* FROM personas
WHERE nombre = 'ANTONIO' AND apellido1 = 'GARCIA'
|
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
:
SELECT
nombre, apellido1
FROM personas ORDER BY apellido1 ASC
Esta es la consulta resultante:
|
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:
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
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í:
|
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
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á:
|
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'
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 :
|
Dada la siguiente tabla 'personas'
nombre
|
apellido1
|
apellido2
|
---|---|---|
ANTONIO | PEREZ | GOMEZ |
ANTONIO | GARCIA | RODRIGUEZ |
PEDRO | RUIZ | GONZALEZ |
Seleccionar las personas cuyo nombre contenga una 'R'
SELECT
* FROM personas
WHERE nombre LIKE '%R%'
Resultado:WHERE nombre LIKE '%R%'
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'
Queremos seleccionar a las
personas cuyo apellido1 sea 'PEREZ' o 'RUIZ'
SELECT
* FROM personas
WHERE apellido1 IN ('PEREZ','RUIZ')
|
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'
Seleccionar personas cuyo
apellido1 esté entre 'FERNANDEZ y 'HUERTAS'
SELECT
*
FROM personas WHERE apellido1 BETWEEN 'FERNANDEZ' AND 'HUERTAS'
|
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 |
+------+--------+----------+
+-----+-----+--------+----------+
| aid | cid | accion | cantidad |
+-----+-----+--------+----------+
| 1 | 2 | REDHAT | 10 |
| 2 | 4 | NOVELL | 20 |
| 3 | 4 | SUN | 30 |
| 4 | 5 | FORD | 100 |
+-----+-----+--------+----------+
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
Gracias! excelente resumen. Ligero y al grano.
ResponderEliminar