first commit
This commit is contained in:
+560
@@ -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
|
||||
|
||||
\-------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user