Mostrando entradas con la etiqueta mysql. Mostrar todas las entradas
Mostrando entradas con la etiqueta mysql. Mostrar todas las entradas

lunes, 17 de diciembre de 2012

sql to txt file

para guardar una consulta en un txt, simplemente:
SELECT order_id,product_name,qty FROM orders
INTO OUTFILE '/tmp/orders.txt'
se pueden usar modificadores para alterar el comportamiento al guardar:
SELECT order_id,product_name,qty FROM orders
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

jueves, 28 de junio de 2012

Validar usuarios con funcion mysql


luego de un rato de pruebas conseguí hacer andar una pequeña función de validación. Por lo que podemos olvidarnos de validar en php y solo llamarla, esto mejora el código y la seguridad. Las claves se guardan en este ejemplo utilizando el algoritmo de codificacion sha1 pero puede usarse cualquier otro que les guste, o ninguno.

mysql> delimiter $$
mysql> create function Validar(u varchar(30), p varchar(30))
    -> returns int
    -> begin
    -> declare retorno int;
    -> select count(user) into retorno from _saraza
    -> where user = u and pass = sha1(p);
    -> return retorno;
    -> end;
    -> $$


La llamamos desde php o consola mysql o lo que sea así:

select Validar('usuario', 'password');

devuelve 1 si el usuario y pass son correctos, de lo contrario devuelve 0;

martes, 26 de junio de 2012

duplicar una tabla mysql

tan sencillo como:

CREATE TABLE _discos2012 LIKE discos;
INSERT INTO _discos2012 SELECT * FROM discos;

jueves, 10 de mayo de 2012

importar datos en mysql con load data local infile. sintaxis

La sintaxis para importar datos en mysql desde un archivo en disco:

mysql> load data local infile 'c:/ruta/al/archivo.txt'
    -> into table diseases
    -> fields terminated by '$$'
    -> lines terminated by '\n';
Query OK, 500 rows affected (0.05 sec)
Records: 500  Deleted: 0  Skipped: 0  Warnings: 0

si la bd tiene campos repetidos con los que vamos a insertar y hay que reemplazarlos hacemos:

LOAD DATA LOCAL INFILE ‘ruta_archivo’
REPLACE INTO TABLE ‘nombre de la tabla’

 proximamente probando este codigo desde php

lunes, 7 de mayo de 2012

Resolucion trabajo practico nro 2 bases de datos 2, (classicmodels)


El esquema de la bd:
Consignas:

Trabajo practico: Introducción a MySQL
1)Importar la base ClassicModels.
2)Implementar integridad referencial, basándose en el diagrama entidad relación.
Realizar las siguientes consultas:
1-Stock total de productos agrupados por linea.
2-Producto más vendido.
3-Promedio de ventas agrupado por linea de productos.
4-Nombre de los clientes que realizaron pagos superiores a 25000.
5.Nombre de los clientes con deuda.
6-Monto total debido a ordenes canceladas.
7-Crear una tabla llamada RegistroCancelaciones(cliente,nro_orden) y un trigger 
que registre las cancelaciones de órdenes en dicha tabla.
8-Crear una tabla PedidoProveedores(producto,cantidad) y un trigger que registre 
pedidos a proveedores según las siguientes reglas:
• Motorcycles: pedir 1000 unidades cuando el stock caiga por debajo de 4000 
unidades.
• Classic Cars: pedir 1200 unidades cuando el stock caiga por debajo de 3000 
unidades.
• Resto de productos: pedir 800 unidades cuando el stock caiga por debajo de 
5000 unidades.      



Resolucion:
1.
select sum(quantityinstock), productlines.productline from products inner join
productlines on products.productline = productlines.productline group by
productlines.productline;

2.
select productname, sum(quantityOrdered) from orderdetails o inner join products p on
p.productcode = o.productcode group by o.productcode order by sum(quantityOrdered) desc
limit 1;

3.
select productline, avg(suma) from
(select productline, o.productcode, sum(quantityordered) as suma
from products p
inner join orderdetails o
on p.productcode = o.productcode
group by o.productcode) as tt
group by productline;

4.
select c.customername
from customers c
inner join payments p
on c.customernumber = p.customernumber
where p.amount > 25000
group by c.customername

5.
select SO.customername
from
(select c.customername, sum(od.quantityordered * od.priceeach) as total_ordenado
from customers c
inner join orders o
on o.customernumber = c.customernumber
inner join orderdetails od
on od.ordernumber = o.ordernumber
group by c.customername) as SO
inner join
(select c.customername, sum(p.amount) as total_pagado
from customers c
inner join payments p
on c.customernumber = p.customernumber
group by c.customername) as SP
on SO.customername = SP.customername
where SO.total_ordenado > SP.total_pagado

6.
select sum(od.quantityordered * od.priceeach) as monto_ordenes_canceladas
from orders o
inner join orderdetails od
on o.ordernumber = od.ordernumber
where o.status = 'cancelled'