· 8 years ago · Apr 21, 2018, 09:56 PM
1drop database if exists clase3;
2create database clase3;
3use clase3;
4
5create table clientes(
6codigo int auto_increment,
7 nombre varchar(20) not null,
8 apellido varchar(20) not null,
9 cuit varchar(13),
10 direccion varchar(50),
11 comentarios varchar(140),
12 primary key(codigo)
13);
14
15
16
17create table facturas(
18letra char(1),
19numero int,
20fecha date,
21monto double,
22primary key (letra,numero)
23);
24
25create table articulos(
26codigo integer,
27nombre varchar(50),
28precio double,
29stock integer,
30primary key (codigo)
31);
32
33insert into articulos values (1,'destornillador',25,50);
34insert into articulos values (2,'pinza',35,22);
35insert into articulos values (3,'martillo',15,28);
36insert into articulos values (4,'maza',35,18);
37insert into articulos values (5,'valde',55,13);
38
39insert into facturas values ('a',0001,'2011/10/18',500);
40insert into facturas values ('a',0002,'2011/10/18',2500);
41insert into facturas values ('b',0003,'2011/10/18',320);
42insert into facturas values ('b',0004,'2011/10/18',120);
43insert into facturas values ('b',0005,'2011/10/18',560);
44-- inserto un registro con la fecha actual
45insert into facturas values ('c',0006,curdate(),300);
46
47insert into clientes (nombre,apellido,cuit,direccion) VALUES -- NO IMPORTA SI SIGO AGREGANDO CAMPOS ACÃ
48('Juan','Perez','1111','Viel 123'),
49('Laura','Soto','2222','Lima 333'),
50('Lorena','Galce','3333','Florida 444'),
51('Jose','Leon','4444','Maipu 555'),
52('Maria','Gallo','5555','Lavalle 1234');
53
54insert into clientes (nombre,apellido) values
55('Laura','Perez'),
56('Laura','Gomez'),
57('Juan','Gomez');
58
59insert into facturas values
60('c',1001,curdate(),250),
61('c',1002,curdate(),280),
62('c',1003,curdate(),300),
63('c',1004,curdate(),350),
64('c',1005,curdate(),370),
65('c',1006,curdate(),400),
66('c',1007,curdate(),410),
67('c',1008,curdate(),450);
68
69
70insert into clientes (nombre,apellido) values
71('Marta','Perez'),('Maria','Perez'),('Mirta','Perez'),
72('Marcelo','Perez'),('Armando','Perez'),('Omar','Perez'),
73('Mariano','Perez'),('Mariana','Perez'),('Monica','Perez'),
74('Micaela','Perez'),('Marcia','Perez'),('Mirna','Perez');
75
76
77
78insert into facturas (letra,numero,fecha,monto) values ('a',1001,'2012/10/25',350);
79insert into facturas (letra,numero,fecha,monto) values ('a',1002,curdate(),540);
80select * from facturas;
81
82insert into articulos (codigo,nombre,precio,stock) values (110,'destornillador',30,100);
83insert into articulos (codigo,nombre,precio,stock) values (111,'martillo',40*1.21,50);
84
85
86-- Insert normal con declaración de campos (ANSI)
87insert into clientes (nombre,apellido,direccion) values
88('Hernan','Molina','Larrea 222');
89
90insert into clientes values
91(null,'Cristian','Mendoza','12345','Viel 333','');
92
93insert into clientes (nombre,apellido) values
94('Ana','Godoy'),
95('Melina','Miguel'),
96('Mariela','Casimito');
97
98insert clientes set nombre='Leandro',apellido='Segovia',
99direccion='Lavalle 222';
100
101show tables;
102describe clientes;
103describe facturas;
104desc articulos;
105select * from facturas;
106select * from clientes;
107select * from articulos;
108
109/*
110
111-- -----------
112-- Ejercicio 3
113-- -----------
114
115
116-- Basándose en la tabla clientes realizar los siguientes puntos.
117
118-- 1- Insertar 5 clientes en la tabla clientes utilizando el insert into sin utilizar campos como parte de la sentencias, es decir de la forma simplificada.
119
120insert into clientes (nombre,apellido,cuit,direccion) VALUES -- NO IMPORTA SI SIGO AGREGANDO CAMPOS ACÃ
121('Juan','Perez','1111','Viel 123'),
122('Laura','Soto','2222','Lima 333'),
123('Lorena','Galce','3333','Florida 444'),
124('Jose','Leon','4444','Maipu 555'),
125('Maria','Gallo','5555','Lavalle 1234');
126
127-- 2- Insertar 5 clientes en la tabla clientes utilizando los campos como parte de la sentencias, es decir de la forma extendida. Completar solo los campos nombre, apellido y CUIT.
128
129-- 3- Actualizar el nombre del cliente 1 a Jose.
130UPDATE clientes set nombre='Jose' where codigo=1;
131-- 4- Actualizar el nombre apellido y cuit del cliente 3 a Pablo Fuentes 20-21053119-0.
132update clientes set nombre='Pablo', apellido='Fuentes', cuit='20-21053119-0' where codigo=3;
133-- 5- Actualizar todos los comentarios NULL a ? ?.
134update clientes set comentarios='' where comentarios is null;
135set sql_safe_updates=0; -- sacar el modo seguro de actualizaciones
136
137-- 6- Eliminar los clientes con apellido Perez.
138delete from clientes where apellido='Perez';
139-- 7- Eliminar los clientes con CUIT Terminan en 0.
140 delete from clientes where cuit like '%0';
141-- Basando se en la tabla artÃculos, realizar los siguientes puntos.
142-- 8- Aumentar un 20% los precios de los artÃculos con precio menor igual a 50.
143update articulos set precio=precio*1.2 where precio<=50;
144-- 9- Aumentar un 15% los precios de los artÃculos con precio mayor a 50.
145update articulos set precio=precio*1.15 where precio>50;
146-- 10- Bajar un 5% los precios de los artÃculos con precio mayor a 200.
147update articulos set precio=precio*0.95 where precio>200;
148
149-- 11- Eliminar los artÃculos con stock menor a 0.
150delete from articulos where stock<0;
151
152
153select * from clientes;
154select * from articulos;
155
156
157-- Funciones de agrupamiento
158
159-- función max(argumento) argumento: numerico, texto, fecha hora
160select max(monto) from facturas;
161select max(monto) as máximo from facturas; -- alias
162select max(nombre) as ultimo_nombre from clientes;
163select max(fecha) as ultimo_dia from facturas;
164
165-- funcion min(argumento) argumento: numerico, texto, fecha hora
166select min(monto) as valor_mÃnimo from facturas;
167select min(nombre) as primer_nombre from clientes;
168select min(fecha) as primer_fecha from facturas;
169
170-- funcion sum(argumento) argumento:numerico
171select sum(monto) as total from faturas;
172
173-- funcion avg(argumento) argumento: numerico
174select avg(monto) as promedio from facturas;
175
176-- funcion count(*)
177select count(*) as cantidad from facturas;
178select count(*) as cantidad from clientes;
179select count(direccion) as cantidad from clientes;
180
181-- agrupamiento con group by
182select letra,sum(monto) as total from facturas where letra='a';
183select letra,sum(monto) as total from facturas where letra='b';
184select letra,sum(monto) as total from facturas where letra='c';
185
186-- letra total
187-- a 3890
188-- b 1000
189-- c 3110
190
191select letra,sum(monto) as total from facturas group by letra; -- en vez de realizar tres consultas hago esta sola
192
193
194-- uso de having
195select letra,sum(monto) as total from facturas group by letra having total>=2000;
196
197-- subconsultas
198select max(monto) from facturas; -- 2500
199select * from facturas where monto=2500;
200
201select * from facturas where monto=(select max(monto) from facturas);
202
203
204
205-- -----------
206-- EJERCICIO 4
207-- -----------
208
209-- 1. Crear la tabla 'autos' dentro de la base de datos 'intro' con el siguiente detalle:
210
211-- codigo INTEGER y PK
212-- marca VARCHAR(20)
213-- modelo VARCHAR(20)
214-- color VARCHAR(20)
215-- anio INTEGER
216-- precio DOUBLE
217
218show tables;
219 create table autos (
220 codigo int auto_increment,
221 marca varchar(20),
222 modelo varchar(20),
223 color varchar(20),
224 anio int,
225 precio double,
226 primary key (codigo)
227 );
228
229 insert into autos (codigo,marca,modelo,color,anio,precio) values
230('', 'peugeot', 208, 'gris', 2015, 280000),
231('', 'renault', 256, 'rojo', 2009, 150000),
232('', 'fiat', 105, 'azul', 2010, 80000),
233('', 'ford', 752, 'negro', 2008, 180000),
234('', 'volkswagen', 815, 'blanco', 2005, 300000);
235
236select * from autos;
237
238drop table autos;
239
240-- 2. Cargar la tabla con 5 autos.
241-- 3. Realizar las siguientes consultas:
242-- a. obtener el precio máximo.
243select max(precio) as máximo from autos;
244-- b. obtener el precio mÃnimo.
245select max(precio) as mÃnimo from autos;
246-- c. obtener el precio mÃnimo entre los años 2000 y 2008.
247select min(precio) as preciominimo from autos where anio between 2000 and 2008;
248-- d. obtener el precio promedio.
249select avg(precio) as promedio from autos;
250-- e. obtener el precio promedio del año 2006.
251select avg(precio) as promedio_2006 from autos where anio=2005;
252-- f. obtener la cantidad de autos.
253select count(*) as total from autos;
254-- g. obtener la cantidad de autos que tienen un precio entre $80.000 y $150.000.
255select count(*) as precio_entre_80_y_150_mil from autos where precio between 80000 and 150000;
256-- h. obtener la cantidad de autos que hay en cada año.
257select anio as año, count(*) as cantidad from autos group by anio;
258-- i. obtener la cantidad de autos y el precio promedio en cada año.
259select anio as año, count(*) as cantidad, round(avg(precio),2) as precio_promedio
260 from autos group by anio;
261-- j. obtener la suma de precios y el promedio de precios según marca.
262select marca,sum(precio) as suma, round(avg(precio),2) as promedio from autos group by marca;
263-- k. informar los autos con el menor precio.
264select modelo,min(precio) as minimo from autos group by modelo;
265-- l. informar los autos con el menor precio entre los años 2008 y 2010
266select modelo, min(precio) as minimo from autos where anio between 2008 and 2010 group by modelo;
267
268 */
269
270
271-- creamos el campo Foreign Key (FK) - (Clave Foranea)
272alter table facturas add codigo int;
273
274describe facturas;
275
276select * from facturas;
277
278update facturas set codigo=1 where numero=1;
279update facturas set codigo=1 where numero=2;
280update facturas set codigo=2 where numero=3;
281update facturas set codigo=4 where numero=4;
282update facturas set codigo=5 where numero=5;
283
284-- Producto Carteciano
285select * from clientes, facturas;
286
287select count(*) cantidad from clientes; -- 26
288
289select count(*) cantidad from facturas; -- 16
290
291select 26*16; -- 416
292
293select count(*) cantidad from clientes, facturas; -- 416
294
295-- consulta del producto relacionado
296select * from clientes, facturas where clientes.codigo=facturas.codigo;
297
298select * from clientes c, facturas f where c.codigo=f.codigo;
299
300-- uso del join
301
302select * from clientes c join facturas f on c.codigo=f.codigo;
303
304-- Cuales son las facturas de Juan Perez?
305
306select letra, numero, fecha, monto
307 from clientes c join facturas f on c.codigo=f.codigo
308 where c.nombre='Juan' and c.apellido='Perez';