ABCDEFGHIJKLMNOPQRSTUVWXYZAAABAC
1
2
QuerieKeywordDescripciónPicture
3
SELECTSirve para proyectar informacion que nosotros seleccionamos en la consulta a la Base de DatosSELECT * FROM postsSELECTTrae todas las columnas de la tabla posts
4
SELECT titulo, fecha_publicacion, estatus FROM posts;SELECTFiltra columna ‘titulo’, ‘fecha_publicacion’, ‘estatus’ de la tabla posts
5
SELECT titulo AS encabezado, fecha_publicacion AS publicado_en, estatus AS estado FROM post;ASEmpleamos la palabra clave AS para renombrar dentro de la funcion SELECT los atributos de cada columna usando un ALIAS, esto sirve para poder proyectar la informacion de la manera que nos parezca mas conveniente. El querie seguira siendo el mismo al igual que los atributos.
6
SELECT COUNT (*) FROM postsSELECT COUNT()Se seleccionan y proyectan el conteo del numero total de elementos de la tabla
7
FROMSentencias con FROM - Uso de JOIN para unir tablasSe emplea para unir dos tablas diferentes a traves de diferentes relaciones
8
SELECT * FROM adopters LEFT JOIN pets ON adopters.id = pets.id_f_adopter;LEFT JOINTrae todos los adoptantes sin distinguir si tienen o no bajo tutela alguna mascota. Es decir que solo aparecen las mascotas que tienen un adoptante.
9
SELECT * FROM adopters RIGHT JOIN pets ON adopters.id = pets.id_f_adopter;RIGHT JOINLo mismo que lo anterio pero a la inversa. En este caso trae todas las mascotas (pets) sin importar si tienen o no adoptantes. Sin embargo solo los adoptantes con mascota podran aparecer.
10
SELECT * FROM adopters LEFT JOIN pets ON adopters.id = pets.id_f_adopter UNION SELECT * FROM adopters RIGHT JOIN pets ON adopters.id = pets.id_f_adopter;UNIONRelacion de union de todas las tablas. Nos muestra el universo de la union de la tabla. En este caso, nos muestra adoptantes con sus mascotas, pero tambien mascostas sin adoptantes aun y adoptantes sin mascotas adoptadas aun.
11
SELECT * FROM adopters LEFT JOIN pets ON adopters.id = pets.id_f_adopter WHERE pets.id_f_adopter IS NULL UNION SELECT * FROM adopters RIGHT JOIN pets ON adopters.id = pets.id_f_adopter WHERE pets.id_f_adopter IS NULL;DIFERENCIA SIMETRICAMe trae solo la union de las tablas pero que no poseen ninguna relacion entre si, es decir mascotas que no tienen adoptantes y adoptantes que no tienen ninguna mascota. Mutuamente excluyentes.
12
WHEREEs la sentencia que nos ayuda a filtrar tuplas en vez de columnas (o dicho de otra forma, filas o vectores)SELECT * FROM posts WHERE id <= 50;WHERESe emplea para filtrar por ID menores a algun dato numerico.
13
SELECT * FROM posts WHERE estatus = 'activo';WHERE Se emplea para filtrar por una cadena, en este caso los que contegan la cadena activo
14
SELECT COUNT(*) FROM posts WHERE estatus = 'activo';WHERE - COUNTEmpleando COUNT podemos saber la cantidad de posts que se encuentran activos
15
SELECT * FROM posts WHERE estatus != 'inactivo';WHERE - !=FIltramos para aquellos casos distintos a inactivos (!=)
16
SELECT * FROM posts WHERE titulo LIKE '%escandalo%';WHERE - LIKEEmpleamos la palabra clave LIKE para buscas titulos que contengan una palabra determinada, en este caso 'escandalo'. No es necesario que la palabra este completa, buscara coincidencia con tramos o trozos de la palabra contenida en titulos, esto sucede porque empleamos los dos signos procentaje. Tambien podriamos usar 'escandalo%' y buscara solo lo que empiece con esa palabra. Por otro lado: %dalo, buscara coincidencias de palabras que terminen con ese tramo 'dalo'.
17
SELECT * FROM posts WHERE fecha_publicacion > '2025-01-01';WHERE - DateSelecciona aquellos post que tienen un tipo de dato posterior al indicado.
18
SELECT * FROM posts WHERE fecha_publicacion BETWEEN '2023-01-01' AND '2025-12-31'WHERE - BETWEEN - ANDSelecciona todos los posts escritos entre enero de 2023 y el 31 de diciembre de 2025. Usamos la sentencia Between para acotar rangos y el operador logico AND para crea una sentencia logica.
19
SELECT * FROM posts WHERE YEAR(fecha_publicacion) BETWEEN '2023' AND '2024';WHERE - YEAR() Con ciertas funciones como YEAR(date) podemos manipular un poco los datos, ya que nosotros ingresamos una fecha completa sin embargo podemos solo extraer el año y filtrar solo por ese elemento, en este caso por el año.
20
SELECT * FROM posts WHERE usuario_id IS NULL;WHERE - IS - NULLPara buscar aquellos campos nulos se debe emplear una sintaxis diferente dado que el valor NULL no es ningun valor y no resultara de operar con operadores convencionales como '=', '<', etc. Dado que como hemos dicho representa a un vacio. Para esto empleamos la keyword IS NULL.
21
SELECT * FROM pets WHERE id_f_adopter IS NOT NULL AND age > 1;WHERE - ANDPuedo agregar condiciones de filtrado en cadena para filtrar los registros que cumplan con las condicones que necesitemos. En este caso se pide que no sea nulo, es decir que tenga un adoptante y que ademas tenga mas de 1 año de edad.
22
GROUP BYTiene que ver con agrupacion. Indica a la base de datos que criterios debe tener en cuenta para agruparSELECT estatus, COUNT(*) AS post_quantity FROM posts GROUP BY estatus;GROUP BY- COUNTEs una funcion de agrupamiento, en este caso esta extrayendo datos de la columna estatus, posterior agregamos una funcion que cuando se genere el agrupamiento comience a contar por cada grupo. Nos dice cuantos registros tengo agrupo por grupo, en este caso cuantos hay activos pr un lado y por otro lado. Nos agrupa cuales posts estan en activos e inactivos y luego los sumo y proyecto con el campo posts_quantity.
23
SELECT YEAR(fecha_publicacion) AS post_year, COUNT(*) AS post_quantity FROM posts GROUP BY post_year;GROUP BY- COUNTEs similar al anterior caso, pero tomando un caso no binario. Agrupo el conjunto de posts en funcion del año de publicacion y los cuenta en una columna post_queatity. Podemos ver que se va a agrupar por un campo dinamico creado en la misma sentencia (post_year) y no por un campo estatico previamente definido (como estatus, en el caso anterior)
24
SELECT MONTHNAME(fecha_publicacion) AS post_month, COUNT(*) AS post_quantity FROM posts GROUP BY post_month;GROUP BY- COUNTAgrupa por meses. MONTHNAME es una funcion que entrega el mes de manera escrita a diferencia de manera numerica. Transforma nuestro dato ejemplo '04' a la palabra 'April'. Este es otro ejemplo de como podemos manipular los datos de la BD con funciones de SQL.
25
SELECT estatus, MONTHNAME(fecha_publicacion) AS post_month, COUNT(*) AS post_quantity FROM posts GROUP BY estatus, post_month;GROUP BY- COUNTAgrupamiento doble. En este caso se generan los campos estatus, los meses y se realiza el coonteo. El agrupamiento se produce por estatus y por post_month. Obteniendo una matriz 2x2. De manera que cada fila corresponde a un mes y un estado con su correspondiente numero de posts.
26
ORDER BYLa sentencia ORDER BY tiene que ver con el ordenamiento de los datos dependiendo de los criterios que quieras usar.SELECT * FROM posts ORDER BY fecha_publicacion DESC;ORDER BYOrdena por fecha de publicacion en orden descendente. Por defecto lo hace de modo ascendente por lo que no suele ser necesario incluir ASC.
27
SELECT * FROM posts ORDER BY titulo ASC;ORDER BYOrdena el titulo por orden alfabetico.
28
SELECT * FROM posts ORDER BY fecha_publicacion ASC LIMIT 5;ORDER BY - LIMITCon la sentencia LImit podemos traer un numero limitado de registros, en este caso los primeros 5 mas antiguos.
29
HAVINGHAVING tiene una similitud muy grande con WHERE, sin embargo el uso de ellos depende del orden. Cuando se quiere seleccionar tuplas agrupadas únicamente se puede hacer con HAVING.SELECT MONTHNAME(fecha_publicacion) AS post_month, estatus, COUNT(*) AS post_quantity FROM posts GROUP BY estatus, post_month HAVING post_quantity > 1 ORDER BY post_month;HAVINGHaving se emplea cuando queremos filtrar por filas o tuplas luego de que se haya agrupado. Con WHERE dada la estructura de SQL, el cual indica que debe ir posterior a FROM nos impide hacer esto debido a que aun no se ha lanzado el agrupamiento y por tanto sera imposible traer las tuplas del WHERE.
30
NESTED QUERIESLos Nested queries significan que dentro de un query podemos hacer otro query. Esto sirve para hacer join de tablas, estando una en memoria. También teniendo un query como condicional del otro. Este proceso puede ser tan profundo como quieras, teniendo infinitos queries anidados.
Se le conoce como un producto cartesiano ya que se multiplican todos los registros de una tabla con todos los del nuevo query. Esto provoca que el query sea difícil de procesar por lo pesado que puede resultar.

SELECT new_table_projection.date, COUNT(*) AS posts_count FROM (SELECT DATE(MIN(fecha_publicacion)) AS date, YEAR(fecha_publicacion) AS post_year FROM posts GROUP BY post_year) AS new_table_projection GROUP BY new_table_projection.date ORDER BY new_table_projection.date;Se trata de un querie anidado dentro de otro. Se crea una tabla de manera dinamica llamada new_table_projection con una columna date que sera de donde extraera los datos el querie padre, por eso dentro de from en vez de llamar a una tabla existente, la creamos usando un querie convencional con SELECT, FROM, GROUP BY. Este querie hijo crea una nueva tabla con la fecha minima y las agrupa en funcion de cada año, obteniendo asi la fecha minima de publicacion de cada año. Esta nueva tabla es denomianda new_table_projection con AS. Posterior a esto, el querie padre agrupa a traves de cada fecha (fecha) y cuenta el numero de publicaciones. Por tanto lo que se obtiene, es una tabla con las fechas minimas de cada año y el numero de publicaciones de posts que existieron.
31
SELECT * FROM posts WHERE fecha_publicacion = (SELECT MAX(fecha_publicacion) FROM posts);Selecciona la fecha de publiacion mas grande. SIrve para obtener valores maximos si no los conocemos. No sirve si intentamos emplear simplemente desde el WHERE MAX(fecha_publicacion) dado que espera alguna condicion y si repetimos fecha_publicacion = MAX(fecha_publicacion) da error de sintaxis.
32
33
34
Funciones de MySQLSELECT YEAR(birthdate) FROM clients;YEARMe trae el año de un tipo de dato de fecha (DATE, TIMESTAMP, etc)
35
SELECT NOW()NOWMe trae la fecha y hora actual
36
SELECT YEAR (NOW()) - YEAR(birtdate) FROM clients;Combiened NOW and YEARPuedo hacer operaciones basicas, como restar el año actual al año de la fecha de nacimiento de la tabla clientes de manera de obtener una edad aproximada.
37
SELECT name, YEAR(NOW()) - YEAR(birthdate) AS age FROM clients LIMIT 10;Uso de tabla dinamica para proyectar nombre de los clientes y su edad aproximada
38
SELECT * FROM clients WHERE name LIKE '%Saa%'LIKELike es una funcion de comparion que nos ayuda a buscar dentro de nuestras tablas a traves de Wildcards como '%abc%' para encontrar tuplas que coincidan en sus datos con esta.
39
DISTINTCMuestra cada caracteristica o elemento diferente una sola vez aunque se repita en las diferentes tuplas.
40
SELECT AVG(price) FROM books;AVG( )Funcion de promedio de una columna (Debe ser integer, float, etc)
41
SELECT AVG(price), STDDEV(price) FROM books;STDDEV( )Funcion para calculo de desviacion estandar.
42
SELECT MAX(price) FROM books;MAX( ) / MIN( )Funcion para encontrar el valor maxima/minima en una columna
43
SELECT author_id, name FROM authors ORDER BY rand( );RAND( )Funcion que ordena con criterio aleatorio genera un set de resultados. No es recomendable ejecutarlo en scrips o de manera programatica (EN bases de datos de verdad) dado que es muy pesado computacionalmente.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100