SQL
STRUCTURED QUERY LANGUAGE
RESUMEN COMANDOS DML
El Lenguaje de Consulta Estructurado (SQL) está conformado por comandos,
cláusulas, operadores y funciones agregadas. Estos elementos se combinan en
las instrucciones para crear, actualizar y manipular los datos.
Existen dos tipos de comandos:
Comandos DDL (Lenguaje de Definición de Datos) que permiten crear y definir
nuevas bases de datos, campos e índices.
Comandos DML (Lenguaje de Manipulación de Datos) que permiten generar
consultas para extraer datos de la Base de Datos.
Este documento resume los comandos DML.
1. COMANDOS DML (Data Manipulation Language-Lenguaje de
Manipulación de Datos)
1.1. SELECT
Consulta registros de la Base de Datos según un criterio determinado
SELECT "nombre_columna" FROM "nombre_tabla"
Ejemplos:
TABLA: estudiantes
Figura 1 - Tabla Estudiantes
1.2. DISTINCT
Omite los registros cuyos campos seleccionados coincidan totalmente.
SELECT DISTINCT "nombre_columna"
FROM "nombre_tabla"
Ejemplo: Seleccionar los distintos tipo de identificación en la tabla estudiantes
de la figura 1.
Ejemplo: Seleccionar los distintos sexos en la tabla estudiantes de la figura 1.
1.3. WHERE
Especifica las condiciones que deben reunir los registros que se van a
seleccionar
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición"
Ejemplo: Seleccionar los estudiantes de la tabla estudiantes de la figura 1 que
tengan cédula como identificación
1.4. AND - OR
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición simple"
{[AND|OR] "condición simple"}+
Ejemplo: De la tabla productos de la figura 2
Figura 2 - Tabla productos
1.5. IN
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" IN (''valor1', ''valor2', ...)
Ejemplo: De la tabla productos de la figura 2
1.6. BETWEEN
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2'
Ejemplo: De la tabla productos de la figura 2
1.7. LIKE
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" LIKE {patrón}
{patrón} generalmente consiste en comodines. Aquí hay algunos ejemplos:
'A_Z': Toda línea que comience con 'A', otro carácter y termine con
'Z'. Porejemplo, 'ABZ' y 'A2Z' deberían satisfacer la condición, mientras
'AKKZ' no debería (debido a que hay dos caracteres entre A y Z en vez de
uno).
'ABC%': Todas las líneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y
'ABCABC' ambas deberían satisfacer la condición.
'%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y
'ZZXYZ' ambas deberían satisfacer la condición.
'%AN%': : Todas las líneas que contienen el patrón 'AN' en cualquier lado.
Por ejemplo, 'LOS ANGELES' y 'SAN FRANCISCO' ambos deberían
satisfacer la condición
Ejemplo: De la tabla productos de la figura 2.
Seleccionar los productos cuyo nombre tenga como segunda letra la E
Seleccionar los productos cuyo nombre termine en la letra A
1.8. ORDER BY
SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condición"]
ORDER BY "nombre_columna" [ASC, DESC]
Ejemplo: De la tabla productos de la figura 2.
1.9. FUNCIÓN AVG:
Calcula la media aritmética de un conjunto de valores contenidos en un
campo especificado de una consulta
SELECT AVG("nombre_columna")
FROM "nombre_tabla
Ejemplo: De la tabla productos de la figura 2.
1.10. FUNCIÓN MAX (MÁXIMO)
SELECT MAX("nombre_columna")
FROM "nombre_tabla
Ejemplo: De la tabla productos de la figura 2.
1.11. FUNCIÓN MIN (MÍNIMO)
SELECT MIN("nombre_columna")
FROM "nombre_tabla
Ejemplo: De la tabla productos de la figura 2.
1.12. FUNCIÓN SUM (SUMA)
SELECT SUM("nombre_columna")
FROM "nombre_tabla
Ejemplo: De la tabla productos de la figura 2.
1.13. FUNCIÓN COUNT (CUENTA NÚMERO DE FILAS)
SELECT
COUNT("nombre_columna")
FROM "nombre_columna"
Ejemplo: De la tabla productos de la figura 2.
1.14. GROUP BY:
Combina los registros en la lista de campos especificados, en un único registro.
Para cada registro se crea un valor total si se incluye una función SQL
agregada, como por ejemplo Sum o Count, en la instrucción SELECT
SELECT "nombre1_columna", SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1-columna"
Ejemplo: De la tabla productos de la figura 2.
1.15. HAVING:
HAVING es similar a WHERE, determina qué registros se seleccionan. Una
vez que los registros se han agrupado utilizando GROUP BY, HAVING
determina cuales de ellos se van a mostrar.
SELECT "nombre1_columna", SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1_columna"
HAVING (condición de función aritmética)
Ejemplo: De la tabla productos de la figura 2.
1.16. ALIAS
Alias se puede utilizar para cambiar el nombre de tablas y columnas.
SELECT "alias_tabla"."nombre1_columna" "alias_columna"
FROM "nombre_tabla" "alias_tabla"
Ejemplo: De la tabla productos de la figura 2.
1.17. JOIN
Se puede utilizar una operación INNER JOIN en cualquier cláusula FROM.
Esto crea una combinación por equivalencia, conocida también como unión
interna. Las combinaciones equivalentes son las más comunes; éstas
combinan los registros de dos tablas siempre que haya concordancia de
valores en un campo común a ambas tablas.
Ejemplo: Con las tablas de la figura 3
Figura 3 - productos - lineas
Sin inner join
Con inner join
Figura 4 - Estudiantes-Cursos-EstCurso
Sin inner join
Con inner join
1.18. LEFT JOIN
Toma todos los registros de la tabla de la izquierda aunque no tengan ningún
registro en la tabla de la derecha
Ejemplo: Con las tablas de la figura 3
1.19. RIGHT JOIN
Toma todos los registros de la tabla de la derecha aunque no tenga ningún
registro en la tabla de la izquierda.
Ejemplo: Con las tablas de la figura 3
1.20. CONCAT
Concatena los resultados de varios campos diferentes.
CONCAT(cad1, cad2, cad3, ...):
Ejemplo: De la tabla productos de la figura 1
1.21. SUBSTRING
SUBSTR(str,pos): Selecciona todos los caracteres de <str> comenzando con
posición <pos>.
Ejemplo: Con las tablas de la figura 2
SUBSTR(str,pos,len): Comienza con el carácter <pos> en la cadena <str> y
selecciona los siguientes caracteres <len>.
1.22. TRIM
La función TRIM en SQL se utiliza para eliminar un prefijo o sufijo determinado
de una cadena. El patrón más común a eliminarse son los espacios en blanco
TRIM(str)
Ejemplo:
1.23. LTRIM
Elimina todos los espacios en blanco del comienzo de la cadena
LTRIM(str)
Ejemplo
1.24. RTRIM
Elimina todos los espacios en blanco del final de la cadena.
RTRIM(str)
Ejemplo
1.25. INSERT INTO
Comando para insertar nuevos datos a las tablas ya existentes
INSERT INTO "nombre_tabla" ("columna1", "columna2", ...)
VALUES ("valor1", "valor2", ...)
Ejemplo: con las tablas de la figura 4:
INSERT INTO tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Inserta datos en una tabla a partir de una consulta
ON DUPLICATE KEY UPDATE evita que se inserten valores duplicados. Si
especifica ON DUPLICATE KEY UPDATE, y se inserta un registro que
duplicaría un valor en un índice UNIQUE o PRIMARY KEY, se realiza
un UPDATE del antiguo registro.
Ejemplo:
Tabla Líneas1:
Tabla Lineas
Insertar los datos de la tabla Lineas en Lineas1:
1.26. UPDATE
Comando para modificar datos de las tablas
UPDATE "nombre_tabla"
SET "columna_1" = [nuevo valor]
WHERE {condición}
Ejemplo:
Ejemplo: de la tabla de la figura 2 (Productos)
aumentar un 20% al precio de los productos de la línea 1
Tabla lineas
1.27. DELETE FROM
Comando para borrar datos de las tablas
DELETE FROM "nombre_tabla"
WHERE {condición}
Ejemplo: De la tabla de la figura 2, borrar los productos de línea 3
2. SQL AVANZADO
2.1. UNION
Se usa para combinar los resultados de varias sentencias en un único conjunto
de resultados
SELECT …
UNION [ALL | DISTINCT]
SELECT
UNION [ALL | DISTINCT]
Las columnas seleccionadas listadas en las posiciones correspondientes para
cada sentencia deben ser del mismo tipo. En los resultados devueltos se
usarán los nombres de columna usados en la primera sentencia.
Si usa UNION, por defecto asume UNION DISTINCT, es decir elimina registros
repetidos en la salida.
Ejemplo: En la tabla de la figura 2
2.2. UNION ALL
Si especifica UNION ALL, devuelve todos los registros de las tablas
combinadas.
Ejemplo: de la tabla 2
2.3. LOAD DATA INFILE
Lee registros desde un fichero de texto a una tabla a muy alta velocidad. El
nombre de fichero debe darse como una cadena literal.
LOAD DATA INFILE "nombre_archivo.txt"
INTO TABLE nombre_tabla
[FIELDS TERMINATED BY 'string']
[LINES TERMINATED BY 'string']
Ejemplo:
Archivo de texto:
Tabla ciudades
2.4. TRUNCATE TABLE
Vacía una tabla completamente. Es equivalente a un comado DELETE que
borra todos los registros.
2.5. SUBCONSULTA
Una subconsulta es un comando SELECT dentro de otro comando. MySQL 5.0
soporta todas las formas de subconsultas y operaciones que requiere el
estándar SQL, así como algunas características específicas de MySQL.
Las principales ventajas de subconsultas son:
Permiten consultas estructuradas de forma que es posible aislar cada parte
de un comando.
Proporcionan un modo alternativo de realizar operaciones que de otro modo
necesitarían joins y uniones complejos.
Ejemplos de subconsultas:
a) SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
En la tabla de la figura 2, (productos)
b) Ejemplo de una comparación común de subconsultas que no puede
hacerse mediante un join. Encuentra todos los valores en la tabla t1 que
son iguales a un valor máximo en la tabla t2
SELECT column1 FROM t1
WHERE column1 = (SELECT MAX(column2) FROM t2);
c) Aquí hay otro ejemplo, que de nuevo es imposible hacer con un join ya que
involucra agregación para una de las tablas. Encuentra todos los registros
en la tabla t1 que contengan un valor que ocurre dos veces en una columna
dada:
SELECT * FROM t1 AS t
WHERE 2 = (SELECT COUNT(*) FROM t1 WHERE [Link] = [Link]);
d) SELECT s1 FROM t1 WHERE s1 IN (SELECT s1 FROM t2);
e) Si una subconsulta retorna algún registro, entonces EXISTS subquery es
TRUE, y NOT EXISTS subquery es FALSE. Por ejemplo:
SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);
¿Qué clase de tienda hay en una o más ciudades?
SELECT DISTINCT store_type FROM Stores
WHERE EXISTS (SELECT * FROM Cities_Stores
WHERE Cities_Stores.store_type = Stores.store_type);
¿Qué clase de tienda no hay en ninguna ciudad?
SELECT DISTINCT store_type FROM Stores
WHERE NOT EXISTS (SELECT * FROM Cities_Stores
WHERE Cities_Stores.store_type = Stores.store_type);
Qué clase de tienda hay en todas las ciudades?
SELECT DISTINCT store_type FROM Stores S1
WHERE NOT EXISTS (
SELECT * FROM Cities WHERE NOT EXISTS (
SELECT * FROM Cities_Stores
WHERE Cities_Stores.city = [Link]
AND Cities_Stores.store_type = Stores.store_type));
TABLA DE CONTENIDO
1. COMANDOS DML (Data Manipulation Language-Lenguaje de Manipulación
de Datos) ................................................................................................................. 1
1.1. SELECT ..................................................................................................... 1
1.2. DISTINCT ................................................................................................... 2
1.3. WHERE ...................................................................................................... 3
1.4. AND - OR ................................................................................................... 3
1.5. IN................................................................................................................ 4
1.6. BETWEEN ................................................................................................. 4
1.7. LIKE ........................................................................................................... 5
1.8. ORDER BY ................................................................................................ 6
1.9. FUNCIÓN AVG: ......................................................................................... 7
1.10. FUNCIÓN MAX (MÁXIMO) ..................................................................... 7
1.11. FUNCIÓN MIN (MÍNIMO) ....................................................................... 8
1.12. FUNCIÓN SUM (SUMA) ......................................................................... 8
1.13. FUNCIÓN COUNT (CUENTA NÚMERO DE FILAS) .............................. 8
1.14. GROUP BY: ............................................................................................ 9
1.15. HAVING: ................................................................................................. 9
1.16. ALIAS .................................................................................................... 10
1.17. JOIN ...................................................................................................... 11
1.18. LEFT JOIN ............................................................................................ 13
1.19. RIGHT JOIN.......................................................................................... 13
1.20. CONCAT ............................................................................................... 14
1.21. SUBSTRING ......................................................................................... 14
1.22. TRIM ..................................................................................................... 15
1.23. LTRIM ................................................................................................... 15
1.24. RTRIM................................................................................................... 16
1.25. INSERT INTO ....................................................................................... 16
1.26. UPDATE ............................................................................................... 17
1.27. DELETE FROM .................................................................................... 19
2. SQL AVANZADO ............................................................................................ 20
2.1. UNION...................................................................................................... 20
2.2. UNION ALL .............................................................................................. 21
2.3. LOAD DATA INFILE ................................................................................. 22
2.4. TRUNCATE TABLE ................................................................................. 23
2.5. SUBCONSULTA ...................................................................................... 24