Utilidades
Quisiera aprender a hacer joins en mysql
Fuente: https://chat.deepseek.com
¡Claro! Aprender a hacer JOIN
en MySQL es fundamental para trabajar con bases de datos relacionales. Los JOIN
te permiten combinar filas de dos o más tablas basándote en una relación entre columnas de esas tablas. Aquí te explico los tipos más comunes de JOIN
en MySQL:
1. INNER JOIN
El INNER JOIN
devuelve solo las filas que tienen coincidencias en ambas tablas. Es el tipo de JOIN
más común.
Sintaxis:
SELECT columnas FROM tabla1 INNER JOIN tabla2 ON tabla1.columna = tabla2.columna;
Ejemplo:
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
2. LEFT JOIN (o LEFT OUTER JOIN)
El LEFT JOIN
devuelve todas las filas de la tabla izquierda (la primera tabla mencionada) y las filas coincidentes de la tabla derecha. Si no hay coincidencias, los resultados de la tabla derecha serán NULL
.
Sintaxis:
SELECT columnas FROM tabla1 LEFT JOIN tabla2 ON tabla1.columna = tabla2.columna;
Ejemplo:
SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
3. RIGHT JOIN (o RIGHT OUTER JOIN)
El RIGHT JOIN
es lo contrario del LEFT JOIN
. Devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda. Si no hay coincidencias, los resultados de la tabla izquierda serán NULL
.
Sintaxis:
SELECT columnas FROM tabla1 RIGHT JOIN tabla2 ON tabla1.columna = tabla2.columna;
Ejemplo:
SELECT Orders.OrderID, Employees.LastName FROM Orders RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID;
4. FULL JOIN (o FULL OUTER JOIN)
El FULL JOIN
devuelve todas las filas cuando hay una coincidencia en la tabla izquierda o derecha. MySQL no tiene un FULL JOIN
nativo, pero puedes simularlo usando UNION
entre LEFT JOIN
y RIGHT JOIN
.
Sintaxis (Simulación):
SELECT columnas FROM tabla1 LEFT JOIN tabla2 ON tabla1.columna = tabla2.columna UNION SELECT columnas FROM tabla1 RIGHT JOIN tabla2 ON tabla1.columna = tabla2.columna;
Ejemplo:
SELECT Customers.CustomerName, Orders.OrderID FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID UNION SELECT Customers.CustomerName, Orders.OrderID FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
5. CROSS JOIN
El CROSS JOIN
devuelve el producto cartesiano de las dos tablas, es decir, todas las combinaciones posibles de filas de ambas tablas.
Sintaxis:
SELECT columnas FROM tabla1 CROSS JOIN tabla2;
Ejemplo:
SELECT Customers.CustomerName, Orders.OrderID FROM Customers CROSS JOIN Orders;
6. SELF JOIN
Un SELF JOIN
es un JOIN
de una tabla consigo misma. Se utiliza cuando necesitas combinar filas de una tabla con otras filas de la misma tabla.
Sintaxis:
SELECT columnas FROM tabla AS t1 JOIN tabla AS t2 ON t1.columna = t2.columna;
Ejemplo:
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City FROM Customers A, Customers B WHERE A.CustomerID <> B.CustomerID AND A.City = B.City;
Ejercicios Prácticos
-
INNER JOIN: Intenta obtener una lista de todos los pedidos junto con los nombres de los clientes que los realizaron.
-
LEFT JOIN: Obtén una lista de todos los clientes y sus pedidos, incluyendo aquellos clientes que no han realizado ningún pedido.
-
RIGHT JOIN: Obtén una lista de todos los empleados y los pedidos que han gestionado, incluyendo aquellos empleados que no han gestionado ningún pedido.
-
FULL JOIN: Simula un
FULL JOIN
para obtener una lista de todos los clientes y todos los pedidos, independientemente de si hay coincidencias o no. -
CROSS JOIN: Intenta obtener todas las combinaciones posibles de clientes y pedidos.
-
SELF JOIN: Intenta obtener una lista de clientes que viven en la misma ciudad.
¡Practica estos ejercicios y te sentirás más cómodo con los JOIN
en MySQL!
Enviar streaming de video a un canal o grupo de Telegram usando ffmpeg
Asumímos que ud tiene instalado ffmpeg y está familiarizado con la línea de comando
Cambiar password de root en mariaDB (Windows)
1. Realizar un shutdown al servicio de mariaDB si este se encuentra iniciado
2. Abra un CMD como admnistrador y ejecute:
mysqld -P3306
3. Abra otro CMD como administrador y ejecute:
C:\Windows\System32>mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 11.4.3-MariaDB mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
4. Modifique el password de root segun su necesidad, así:
MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('nuevoPasss');
Query OK, 0 rows affected (0.003 sec)
MariaDB [(none)]>
5. Salga de la consola de mysql, así:
MariaDB [(none)]> exit
Bye
C:\Windows\System32>
5. Cierre esta ventana y diríjase a la ventana inicialmente abierta y termine el proceso con CRTL-C. Cierre esa ventana
6. Reinicie el servicio y conectese con el nuevo password
mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 11.4.3-MariaDB mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| nodeapi |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.023 sec)
MariaDB [(none)]>
nginx ssl certbot letsencrypt
1. Instalar cerbot y detener nginx
apt install certbot
systemctl stop nginx
2. Generar certificado
Donde:
certonly: Indica que únicamente queremos generar el certificado, no se configurará automáticamente el servidor web.
–standalone: Indicamos el plugin que queremos utilizar durante el proceso. En éste caso, standalone.
-d: Indicamos el nombre de dominio para el que queremos obtener el certificado. En éste caso,hipy.nethuber.com
# certbot certonly --standalone -d hipy.nethuber.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Account registered.
Requesting a certificate for hipy.nethuber.com
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/hipy.nethuber.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/hipy.nethuber.com/privkey.pem
This certificate expires on 2024-08-05.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3. Usar el certificado
Al archivo hipy.nethuber.com, agregar las líneas en negrilla
4. Recargar la configuración
systemctl reload nginx