first commit

This commit is contained in:
2026-08-04 19:24:21 +02:00
commit 46901fbb7f
20 changed files with 5364 additions and 0 deletions
+560
View File
@@ -0,0 +1,560 @@
AYUDA MYSQL
\===========
Acceso consola de mysql/mariadb
./mysql u- root (si no tiene password)
./mysql u- root -p <password>
Backups mysqldump desde terminal
./mysqldump -u root -p nombre\_base\_datos > backup.sql
./mysqldump -u root -p --all-databases > all\_databases\_backup.sql
mysqldump -h localhost -u root -p --port=3307 mi\_base > backup.sql Para establecer puerto 3307
Restaurar un backup mysql/mariadb
Terminal del sistema operativo
mysql -u root -p nombre\_base\_datos < backup.sql
mysql -h localhost -u usuario -p --port=3307 nombre\_base < backup.sql Estableciendo puerto
Consola mysql/mariadb
show databases; Mostrar bases de datos
use database\_name; Seleccionar base de datos
drop database database\_name Borrar base de datos
create database database\_name Crear base de datos
DROP USER 'juan'@'localhost'; Borrar usuario
DROP USER 'juan'@'%'; Si el usuario se conecta desde cualquier host (%):
SELECT user, host FROM mysql.user; Ver usuarios
Modificar tablas a InnoDb
SELECT CONCAT('ALTER TABLE ', table\_name, ' ENGINE=InnoDB;')
FROM information\_schema.tables
WHERE table\_schema = 'nombre\_base\_datos' AND engine = 'MyISAM';
Luego ejecutas las sentencias generadas.
ALTER TABLE tabasunto ENGINE=InnoDB;
ALTER TABLE tabmodus ENGINE=InnoDB;
ALTER TABLE tabobjetos ENGINE=InnoDB;
ALTER TABLE taboficios ENGINE=InnoDB;
ALTER TABLE tabdetenpol ENGINE=InnoDB;
ALTER TABLE tabusers ENGINE=InnoDB;
ALTER TABLE tabregistro ENGINE=InnoDB;
Usar mysqldump en linux con Xampp
/opt/lampp/bin/mysqldump -u [usuario] -p [nombre\_base\_de\_datos] > [archivo\_salida.sql]
gzip ~/copia\_seguridad\_mi\_basedatos.sql Comprimir la copia de seguridad
export PATH=/opt/lampp/bin:$PATH Activar mysqldump en el PATH
mysqldump -u root -p mi\_basedatos > ~/copia\_seguridad.sql
PhpMyAdmin
Aumentar liminte de carga. Editar php.ini (/etc/php/ c:\xampp\php)
modificar los valores:
upload\_max\_filesize = 2000M
post\_max\_size = 2000M
max\_execution\_time = 300
max\_input\_time = 300
Reiniciar apache
sudo systemctl restart apache2 Linux
Poner en mayusculas / minusculas
UPDATE productos SET categoria = UPPER(categoria); (actualizar)
SELECT id, UPPER(nombre) AS nombre\_mayusculas FROM categorias; (solo visualizar)
UPDATE tabla SET columna = LOWER(columna);
UPDATE tabla SET columna = CONCAT(
UPPER(SUBSTRING(columna, 1, 1)), -- Primera letra en mayúscula
LOWER(SUBSTRING(columna, 2)) -- Resto en minúsculas
SELECT nombre, CONCAT(UPPER(SUBSTRING(nombre, 1, 1)), LOWER(SUBSTRING(nombre, 2))) AS nombre\_formateado
FROM categorias; (solo visualizacion select)
Guardar datos de una tabla a otra de la misma base de datos.
INSERT INTO tabla1 (apellido, nombre, sexo) SELECT apellido, nombre, sexo FROM tabla2;
Guardar datos de una tabla a otra de la misma base de datos.
INSERT INTO tabla1 (apellido, nombre, sexo) SELECT apellido, nombre, sexo FROM tabla2;
Guardar datos de una tabla a otra en diferente base de datos.
INSERT INTO db1.tabla (rut, apellido, nombre, sexo) SELECT rut, apellido, nombre, sexo FROM dbo2.tabla;
Insert into db1.tabla select \* from db2.tabla; (ambas tablas tienen que tener la misma estructura).
Actualizar datos tabla
UPDATE tabla\_nombre SET column1 = value1, column2 = value2 … WHERE condicion;
UPDATE tabla\_nombre SET column1 = value1, column2 = value2 … WHERE condicion LIKE %hola%;
Insertar datos en campo/s desde otra tabla
INSERT INTO tabDestino (column1, column2) SELECT columnX, columnY FROM tabOrigen;
SELECT
SELECT \* FROM tabregistro WHERE registro NOT LIKE '%/%' AND fechaent BETWEEN '2020-01-01' and '2020-12-31'
SELECT \* FROM tabregistro WHERE fechaent BETWEEN '2020-01-01' AND '2020-12-31'
UPDATE
UPDATE oeste\_oficios SET grupo = 'oeste';
UPDATE tabregistro SET procedencia = 'ODAC Central' WHERE procedencia = 'I.C.G.'; UPDATE centro\_detenpol SET padres = CONCAT (padre,' - ',madre);
UPDATE centro\_detenpol SET nacFecha = CONCAT (año,mes,dia);
UPDATE centro\_registro SET grupo = 'centro';
ACTUALIZAR O MODIFICAR LOS ID
SET @COUNT = 200000;
UPDATE tabregistro SET tabregistro.id = @count:= @count + 1;
ALTER TABLE tabregistro AUTO\_INCREMENT=1
ACTUALIZAR SQLITE AÑADIENDO EL AÑO SQLITE
UPDATE tab\_detenidos set atestado = atestado || '/' ||
SUBSTR(CAST(strftime('%Y',fecha\_hora) AS TEXT), 3, 2)
WHERE atestado NOT LIKE '%/' || SUBSTR(CAST(STRFTIME('%Y', fecha\_hora) AS TEXT), 3, 2);
QUITAR EL AÑO
UPDATE tab\_detenidos2 SET atestado = SUBSTR(atestado, 1, LENGTH(atestado) -3) WHERE atestado LIKE "%/%"
CONCAT
UPDATE tabregistro SET juzgado=CONCAT(tipoDoc,' ',operacion) where id='1'
En sqlite en lugar de CONCATE se utiliza ||
UPDATE funcionarios\_agp SET nombre\_comp = (NOMBRE || ' ' || APELLIDOS) where dni='11111111'
CONTAR NUMERO DE FILAS DE UNA TABLA
SELECT COUNT(\*) FROM contactos;
DUPLICAR TABLA
CREATE TABLE tabla\_nueva LIKE tabla\_original;
INSERTAR DATOS DE UNA TABLA A OTRA
INSERT INTO tabla\_nueva SELECT \* FROM tabla\_original;
DUPLICAR TABLA Y INSERTAR TODOS LOS REGISTROS
CREATE TABLE tabla\_nueva SELECT \* FROM tabla\_original;
Para sqlite:
CREATE TABLE nueva\_tabla AS SELECT \* FROM tabla\_original
VER REGISTROS DUPLICADOS
SELECT telefono FROM clientes GROUP BY telefono HAVING COUNT(\*)>1;
VER REGISTROS DUPLICADOS (CUENTA DE DUPLICADOS)
SELECT telefono, count(\*) FROM usuarios GROUP BY telefono HAVING COUNT(\*)>1;
BORRAR REGISTROS DUPLICADOS (TODOS)
DELETE FROM clientes WHERE telefono IN (SELECT telefono FROM clientes GROUP BY telefono HAVING COUNT(\*)>1)
BORRAR REGISTROS DUPLICADOS (DEJANDO UNO) repetir varias veces ya que eliminar uno de los duplicados por cada consulta ejecutada.
DELETE FROM contactos1 WHERE id IN (SELECT \* FROM (SELECT id FROM contactos1 GROUP BY nombre HAVING (COUNT(\*) > 1)) AS A);
BORRAR REGISTROS DUPLICADOS CREANDO TABLA TEMPORAL
CREATE TABLE TableA\_Verify AS SELECT DISTINCT \* FROM TableA;
DELETE FROM TableA;
INSERT INTO TableA SELECT \* FROM TableA\_Verify;
DROP TABLE TableA\_Verify;
BUSCAR LOS QUE ESTAN REPETIDOS
SELECT nie, count(\*) FROM identidades
GROUP BY nie
HAVING COUNT(\*)>1;
BORRAR REGISTROS REPETIDOS Y DEJAR SOLO UNO. SE ESCRIBE TODO SEGUIDO EN LA CONSULTA FUNCIONA COMPROBADO. OK
WITH repetidos AS (
SELECT MIN(id) as id, nie FROM identidades
GROUP BY nie
HAVING COUNT(\*)>1
)
DELETE FROM identidades
WHERE id not IN (
SELECT id FROM repetidos
) and nie IN (SELECT nie FROM repetidos) ;
SQLITE
SELECT atestado, delito, count(\*) FROM tab\_detenidos2
GROUP BY atestado
HAVING COUNT(\*)>1;
WITH repetidos AS (
SELECT MIN(id) as id, atestado FROM tab\_detenidos2
GROUP BY atestado
HAVING COUNT(\*)>1
)
DELETE FROM tab\_detenidos2
WHERE id not IN (
SELECT id FROM repetidos
) and atestado IN (SELECT atestado FROM repetidos) and delito <> "RECLAMACIÓN JUDICIAL";
DATOS REPETIDOS
SELECT u.\* FROM usuarios u WHERE telefono IN
` `( SELECT telefono FROM usuarios GROUP BY telefono HAVING COUNT(\*)>1 );
BUSCAR DUPLICADOS
SE LISTAN TODAS LAS IDENTIDADES QUE ESTAN REPETIDAS
SELECT tabla\_empleados.\* FROM tabla\_empleados
WHERE identidad IN (
SELECT identidad FROM tabla\_empleados
GROUP BY identidad
HAVING COUNT(\*)>1
) order by identidad DESC
NUMERO DE VECES QUE SE REPITE UNA IDENTIDAD
SELECT identidad, count(\*) FROM tabla\_empleados
GROUP BY identidad
HAVING COUNT(\*)>1;
SUMAR VALORES COLUMNAS (SUM)
SELECT SUM (column\_name) FROM table\_name WHERE condition;
SELECT SUM (cantidad) as total FROM ventas;
ELIMINAR SALTO DE LINEA con \n por <br>
UPDATE table SET gestiones = REPLACE(gestiones, '\n','<br>') WHERE id = '8072';
REPLACE
REPLACE(str, find\_string, replace\_with)
SELECT REPLACE(country,'K','SA') FROM publisher WHERE country='UK';
UPDATE tabregistro SET registro = REPLACE(registro, '/2020','/20');
CREATE TABLE inves.ciber SELECT \* FROM ciber.principal;
UPDATE ciber SET asunto1=CONCAT(asunto,' ',tipohecho)
UPDATE ciber SET implicados=CONCAT(denunciante,' DNI ',dni,' TLFN ',telefono,'
EMAIL ',email)
UPDATE ciber SET grupo ='ciber' WHERE grupo LIKE '%tecnologicos%';
Detenpol pasar año de fecha nacimiento a varchar antes de concatenar en fecha nacimiento
INSERTAR DATOS DE UNA TABLA A OTRA
INSERT INTO inves.tabdetenpol SELECT \* FROM bdcentro.centro\_detenpol;
INSERT INTO inves.taboficios SELECT \* FROM bdcentro.centro\_oficios;
INSERT INTO inves.tabobjetos SELECT \* FROM bdcentro.centro\_objetos;
INSERT INTO inves.tabregistro SELECT \* FROM bdcentro.centro\_registro;
UPDATE tabregistro SET registro = CONCAT(registro,'/20') where id = '6976'
INSERT INTO tabregistro SELECT \* FROM ciber;
INSERT INTO tabregistro SELECT \* FROM oeste\_registro;
iNSERT INTO tabdetenpol SELECT \* FROM ufam\_detenpol;
update ufam\_oficios set grupo = 'ufam';
SQLITE COPIAR TABLA DE UNA BD A OTRA BD
1. Archivo / Anexar base de datos
Tambien se puede hacer con ATTACH DATABASE 'ruta\_a\_la\_base\_de\_datos\_origen.sqlite' AS origen
1. CREATE TABLE tab\_desempeño AS SELECT \* FROM data.tab\_desempeño
ACTUALIZAR TELEFONOS
\## MySQL ###
UPDATE tabcontactos
SET telefono1 = CONCAT(
SUBSTRING(telefono1, 1, 3), ' ',
SUBSTRING(telefono1, 4, 3), ' ',
SUBSTRING(telefono1, 7, 3)
)
WHERE LENGTH(telefono1) = 9;
\## SQLITE ##
UPDATE tabcontactos
SET telefono1 = substr(telefono1, 1, 3) || ' ' || substr(telefono1, 4, 3) || ' ' || substr(telefono1, 7, 3)
WHERE length(telefono1) = 9;
Importar SQL desde XAMPP
Si trabajamos con un servidor local como XAMPP y necesitamos importar una gran base de datos para trabajar desde nuestro PC, podemos realizar la misma importación desde un terminal mySQL.
Posicionarnos en la ruta donde se encuentra el servidor mySQL en XAMPP:
/opt/lampp/bin/
Dentro de esta ruta tecleamos la orden:
./mysql -u root -p base\_de\_datos (se abre terminal mysql en la base seleccionada)
source /home/jesus/backup.sql
CONSULTAS APLICACION INVENTARIO
SELECT
p.id,
p.nombre,
p.precio,
m.cantidad,
(p.precio \* m.cantidad) AS precio\_total
FROM
productos p
JOIN
movimientos m ON p.id = m.producto\_id;
PRECIO TOTAL DE TODAS LAS UNIDADES VENDIDAS
SELECT
SUM(a.precio \* v.unidades\_vendidas) AS precio\_total\_general
FROM
articulos a
JOIN
ventas v ON a.articulo = v.articulo;
FITRAR ENTRE FECHAS
SELECT
1. articulo,
1. precio,
SUM(v.unidades\_vendidas) AS unidades\_vendidas\_periodo,
SUM(a.precio \* v.unidades\_vendidas) AS precio\_total\_periodo
FROM
articulos a
JOIN
ventas v ON a.articulo = v.articulo
WHERE
v.fecha\_venta BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY
1. articulo, a.precio;
TOTAL GENERAL FILTRAR ENTRE FECHAS
SELECT
SUM(a.precio \* v.unidades\_vendidas) AS precio\_total\_periodo
FROM
articulos a
JOIN
ventas v ON a.articulo = v.articulo
WHERE
v.fecha\_venta BETWEEN '2023-01-01' AND '2023-12-31';
\---------------------------
CONSULTA BASE\_D
SELECT grupo, COUNT(\*) FROM `tabregistro` WHERE grupo = 'centro' AND fechaEnt BETWEEN '2025-01-01' AND '2025-09-25';
SELECT grupo, COUNT(\*) FROM `tabregistro` WHERE grupo = 'norte' AND fechaEnt BETWEEN '2025-01-01' AND '2025-09-25';
SELECT grupo, COUNT(\*) FROM `tabregistro` WHERE grupo = 'este' AND fechaEnt BETWEEN '2025-01-01' AND '2025-09-25';
SELECT grupo, COUNT(\*) FROM `tabregistro` WHERE grupo = 'oeste' AND fechaEnt BETWEEN '2025-01-01' AND '2025-09-25';
SELECT grupo, COUNT(\*) FROM taboficios WHERE grupo = 'centro' AND fecha BETWEEN '2025-01-01' AND '2025-09-25';
SELECT grupo, COUNT(\*) FROM taboficios WHERE grupo = 'norte' fecha BETWEEN '2025-01-01' AND '2025-09-25';
SELECT grupo, COUNT(\*) FROM taboficios WHERE grupo = 'este' AND fecha BETWEEN '2025-01-01' AND '2025-09-25';
SELECT grupo, COUNT(\*) FROM taboficios WHERE grupo = 'oeste' AND fecha BETWEEN '2025-01-01' AND '2025-09-25';
CENTRO 4083 107
NORTE 3841 677
ESTE 1828 207
OESTE 6500 210
\-------------------------------