elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / Bases de Datos / Ejercicio bases de datos mysql, manipulación de datos. en: 14 Mayo 2012, 21:27 pm
Bueno, ahí va otro boletín esta vez sobre manipulación de datos, es probable que encontréis errores pero ya digo que no está corregido :D Learn !!
 

Buenas referencias en..
 http://www.java2s.com/Code/SQL/CatalogSQL.htm

1.- Un almacén de distribución de artículos desea mantener información sobre las ventas hechas por las tiendas que compran al almacén. Dispone de las siguientes tablas para mantener esta información:

ARTICULOS: almacena cada uno de los artículos que el almacén puede abastecer a las tiendas. Cada artículo viene determinado por las columnas: ARTICULO (PK entero corto), COD_FABRICANTE (PK FK entero corto), PESO (entero corto) y CATEGORIA (ENUM). La categoría puede ser 'PRIMERA', 'SEGUNDA' o 'TERCERA'.

Código
  1. CREATE TABLE `ARTICULOS` (
  2. `ARTICULO` TINYINT(2) NOT NULL,
  3. `COD_FAB` TINYINT(2) NOT NULL,
  4. `PESO` TINYINT(2) NULL DEFAULT NULL,
  5. `CATEGORIA` ENUM('PRIMERA','SEGUNDA','TERCERA') NULL DEFAULT NULL,
  6. PRIMARY KEY (`ARTICULO`, `COD_FAB`),
  7. INDEX `FK_ARTICULOS_FABRICANTE` (`COD_FAB`),
  8. CONSTRAINT `FK_ARTICULOS_FABRICANTE` FOREIGN KEY (`COD_FAB`) REFERENCES `FABRICANTE` (`COD_FAB`)
  9. )
  10. COLLATE='utf8_general_ci'
  11. ENGINE=InnoDB;
  12.  

FABRICANTES: contiene los países de origen de los fabricantes de artículos. Cada COD_FABRICANTE (PK entero corto) tiene su MARCA (UNICO de 20 caracteres) y su NOMBRE_PAIS (UNICO de 20 caracteres).

Código
  1. CREATE TABLE `FABRICANTE` (
  2. `COD_FAB` TINYINT(2) NOT NULL,
  3. `MARCA` VARCHAR(20) NULL DEFAULT NULL,
  4. `NOMBRE_PAIS` VARCHAR(20) NULL DEFAULT NULL,
  5. PRIMARY KEY (`COD_FAB`),
  6. UNIQUE INDEX `MARCA` (`MARCA`),
  7. UNIQUE INDEX `NOMBRE_PAIS` (`NOMBRE_PAIS`)
  8. )
  9. COLLATE='utf8_general_ci'
  10. ENGINE=InnoDB;
  11.  


TIENDAS: almacena los datos de las tiendas que venden artículos. Cada tienda se identifica por su NIF (PK entero largo) y almacena además su PROVINCIA (20 caracteres).


Código
  1. CREATE TABLE `TIENDAS` (
  2. `NIF` VARCHAR(10) NOT NULL,
  3. `PROVINCIA` VARCHAR(20) NULL DEFAULT NULL,
  4. PRIMARY KEY (`NIF`)
  5. )
  6. COLLATE='utf8_general_ci'
  7. ENGINE=InnoDB;
  8.  

PEDIDOS: son los pedidos que realizan las tiendas al almacén. Cada pedido almacenará: NIF (PK FK entero largo), ARTICULO (PK FK entero corto), COD_FABRICANTE (PK FK entero corto), PESO (entero corto), CATEGORIA (ENUM 'PRIMERA','SEGUNDA','TERCERA') y FECHA_PEDIDO (TIMESTAMP con valor por defecto FECHA ACTUAL). Cada fila de la tabla representa un pedido.


Código
  1. CREATE TABLE `PEDIDOS` (
  2. `NIF` VARCHAR(10) NOT NULL,
  3. `ARTICULO` TINYINT(2) NOT NULL,
  4. `COD_FAB` TYNYINT(2) NOT NULL,
  5. `PESO` SMALLINT(10) NULL DEFAULT NULL,
  6. `CATEGORIA` ENUM('PRIMERA','SEGUNDA','TERCERA') NULL DEFAULT NULL,
  7. `FECHA_PEDIDO` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
  8. PRIMARY KEY (`NIF`, `ARTICULO`, `COD_FAB`),
  9. INDEX `FK_PEDIDOS_ARTICULOS` (`ARTICULO`),
  10. INDEX `FK_PEDIDOS_FABRICANTE` (`COD_FAB`),
  11. CONSTRAINT `FK_PEDIDOS_ARTICULOS` FOREIGN KEY (`ARTICULO`) REFERENCES `ARTICULOS` (`ARTICULO`),
  12. CONSTRAINT `FK_PEDIDOS_FABRICANTE` FOREIGN KEY (`COD_FAB`) REFERENCES `FABRICANTE` (`COD_FAB`)
  13. )
  14. COLLATE='utf8_general_ci'
  15. ENGINE=InnoDB;
  16.  


2.- Crea una tabla VENTAS, a partir de PEDIDOS, que almacena las ventas de artículos que hace cada una de las tiendas. Cada venta se identifica por: NIF (PK FK entero largo), ARTICULO (PK FK entero corto), COD_FABRICANTE (PK FK entero corto), PESO (entero corto), CATEGORIA (ENUM 'PRIMERA','SEGUNDA','TERCERA') y FECHA_PEDIDO (TIMESTAMP con valor por defecto FECHA ACTUAL). Cada fila de la tabla representa una venta.

Código
  1. CREATE TABLE VENTAS (SELECT * FROM PEDIDOS);
  2.  


*************************************

3.- Modifica las tablas PEDIDOS y VENTAS para que incluyan un campo donde almacenar UNIDADES_PEDIDAS (entero corto) y UNIDADES_VENDIDAS (entero corto) respectivamente.


Código
  1. ALTER TABLE VENTAS ADD COLUMN UNIDADES_VENDIDAS TINYINT(10) NOT NULL AFTER FECHA_PEDIDO;
  2. ALTER TABLE PEDIDOS ADD COLUMN UNIDADES_PEDIDAS TINYINT(10) NOT NULL AFTER FECHA_PEDIDO;
  3.  

4.- Introduce en las tablas los siguientes datos:

Código
  1. INSERT INTO `ARTICULOS` (`ARTICULO`, `COD_FAB`, `PESO`, `CATEGORIA`) VALUES
  2. (1, 1, 20, 'PRIMERA'),
  3. (2, 1, 45, 'TERCERA'),
  4. (3, 1, 10, 'TERCERA'),
  5. (4, 1, 15, 'PRIMERA'),
  6. (5, 2, 100, 'SEGUNDA'),
  7. (6, 2, 15, 'PRIMERA'),
  8. (7, 2, 30, 'PRIMERA'),
  9. (8, 2, 80, 'TERCERA'),
  10. (9, 3, 25, 'TERCERA'),
  11. (10, 3, 25, 'PRIMERA'),
  12. (11, 3, 70, 'SEGUNDA'),
  13. (12, 3, 90, 'SEGUNDA');
  14.  
  15. INSERT INTO `FABRICANTE` (`COD_FAB`, `MARCA`, `NOMBRE_PAIS`) VALUES
  16. (1, 'FELVI', 'ITALIA'),
  17. (2, 'CANTIER', 'FRANCIA'),
  18. (3, 'PEDROSA', 'ESPAÑA');
  19.  
  20. INSERT INTO `PEDIDOS` (`NIF`, `ARTICULO`, `COD_FAB`, `PESO`, `CATEGORIA`, `FECHA_PEDIDO`, `UNIDADES_PEDIDAS`) VALUES
  21. ('2222-A', 12, 3, 90, 'SEGUNDA', '0000-00-00 00:00:00', 20),
  22. ('4545-C', 1, 1, 20, 'PRIMERA', '2009-03-11 00:00:00', 10),
  23. ('5555-B', 1, 1, 20, 'PRIMERA', '2009-03-09 00:00:00', 40),
  24. ('5555-B', 2, 1, 45, 'TERCERA', '2009-03-11 00:00:00', 20),
  25. ('7788-D', 3, 1, 10, 'TERCERA', '2010-03-12 00:00:00', 40);
  26.  
  27. INSERT INTO `TIENDAS` (`NIF`, `PROVINCIA`) VALUES
  28. ('1111-A', 'SEVILLA'),
  29. ('2222-A', 'TOLEDO'),
  30. ('4545-C', 'MADRID'),
  31. ('5555-B', 'PONTEVEDRA'),
  32. ('7788-D', 'TOLEDO'),
  33. ('9911-H', 'TOLEDO');
  34.  
  35.  
  36. INSERT INTO `VENTAS` (`NIF`, `ARTICULO`, `COD_FAB`, `PESO`, `CATEGORIA`, `FECHA_PEDIDO`, `UNIDADES_VENDIDAS`) VALUES
  37. ('2222-A', 12, 3, 90, 'SEGUNDA', '2012-03-16 00:00:00', 10),
  38. ('4545-C', 1, 1, 20, 'PRIMERA', '2009-11-04 00:00:00', 5),
  39. ('5555-B', 1, 1, 20, 'PRIMERA', '2009-12-03 00:00:00', 20),
  40. ('5555-B', 2, 1, 45, 'TERCERA', '2009-03-13 00:00:00', 20),
  41. ('7788-D', 3, 1, 10, 'TERCERA', '2011-03-11 00:00:00', 30);
  42.  




5.- Realiza las siguientes operaciones:

a) Da de alta un nuevo artículo de 'PRIMERA' categoría para los fabricantes de 'FRANCIA' y abastece con 5 unidades de ese artículo a todas las tiendas y en la fecha de hoy.

Código
  1. #primero doy de alta un articulo nuevo
  2. INSERT INTO ARTICULOS
  3. SELECT (13,
  4. (SELECT A.COD_FAB FROM ARTICULOS A, FABRICANTE F WHERE F.NOMBRE_PAIS LIKE'FRANCIA' AND A.COD_FAB=F.COD_FAB LIMIT 1),
  5. NULL,'PRIMERA';
  6.  
  7. INSERT INTO PEDIDOS
  8. SELECT TIENDAS.NIF, 13, FABRICANTES.COD_FAB, 40, 'PRIMERA', NOW(), 5 FROM TIENDAS, FABRICANTES
  9. WHERE FABRICANTES.NOMBRE_PAIS='FRANCIA';
  10. [/code=SQL]
  11.  
  12. [SIZE=10pt][i][b]b) Inserta un pedido de 20 unidades en la tienda '1111-A' con el artículo que mayor número de ventas haya realizado.[/b][/i][/SIZE]
  13.  
  14. [code=SQL]
  15. INSERT INTO PEDIDOS (`NIF`,`ARTICULO`,`COD_FAB`,`UNIDADES_PEDIDAS`)
  16. VALUES
  17. ('1111-A',
  18. (SELECT ARTICULO FROM VENTAS WHERE UNIDADES_VENDIDAS = (SELECT MAX(UNIDADES_VENDIDAS) FROM VENTAS)),
  19. (SELECT COD_FAB FROM ARTICULOS WHERE ARTICULO = (SELECT ARTICULO FROM VENTAS WHERE UNIDADES_VENDIDAS = (SELECT MAX(UNIDADES_VENDIDAS) FROM VENTAS))),
  20. 20)
  21.  

Código
  1. #A
  2. INSERT INTO PEDIDOS (`NIF`,`ARTICULO`,`COD_FAB`,`UNIDADES_PEDIDAS`)
  3. VALUES
  4. ('1111-A',
  5. ARTICULO,
  6. COD_FAB,
  7. CATEGORIA,
  8. NOW(),
  9. 20
  10. FROM VENTAS GROUP BY ARTICULO ORDER BY SUM(UNIDADES_VENDIDAS) DESC LIMIT 1;)
  11.  


c) Da de alta una tienda en la provincia de 'MADRID' y abastécela con 20 unidades de cada uno de los artículos existentes.

Código:
INSERT INTO TIENDAS
VALUES ('1111-E','MADRID');

INSERT INTO PEDIDOS
SELECT '1111-E',ARTICULO,COD_FAB,PESO,CATEGORIA,NOW(),20
FROM ARTICULOS;

d) Da de alta dos tiendas en la provincia de 'SEVILLA' y abastécelas con 30 unidades de artículos de la marca de fabricante 'CANTIER'.

Código
  1. INSERT INTO TIENDAS
  2. VALUES
  3. ('2222-F','SEVILLA'),
  4. ('3333-G','SEVILLA');
  5.  
  6. INSERT INTO PEDIDOS
  7. SELECT '2222-F',ARTICULOS.ARTICULO,ARTICULOS.COD_FAB,ARTICULOS.PESO,ARTICULOS.CATEGORIA,SYSDATE(),30
  8. FROM ARTICULOS,FABRICANTES
  9. WHERE (FABRICANTES.MARCA='CANTIER')
  10. AND (FABRICANTES.COD_FAB=ARTICULOS.COD_FAB);
  11.  
  12. INSERT INTO PEDIDOS
  13. SELECT '3333-G', ARTICULOS.ARTICULO, ARTICULOS.COD_FAB,ARTICULOS.PESO,ARTICULOS.CATEGORIA,SYSDATE(),30
  14. FROM ARTICULOS,FABRICANTES WHERE
  15. (FABRICANTES.MARCA='CANTIER')
  16. AND
  17. (FABRICANTES.COD_FAB = ARTICULOS.COD_FAB);
  18.  

e) Realiza una venta para todas las tiendas de 'TOLEDO' de 10 unidades en los artículos de 'PRIMERA' categoría.

Código
  1. INSERT INTO VENTAS
  2. SELECT TIENDAS.NIF, ARTICULOS.ARTICULO,ARTICULOS.COD_FAB,ARTICULOS.PESO,ARTICULOS.CATEGORIA,SYSDATE(), 10
  3. FROM (ARTICULOS.CATEGORIA='PRIMERA');
  4.  

f) Para aquellos artículos de los que se hayan vendido más de 30 unidades, realiza un pedido de 10 unidades para la tienda con NIF '5555-B' con la fecha actual.


Código
  1. ALTER TABLE  PEDIDOS DROP PRIMARY KEY,ADD PRIMARY KEY(NIF,ARTICULO,COD_FAB,FECHA_PEDIDO);
  2.  
  3. INSERT INTO PEDIDOS
  4. SELECT DISTINCT '5555-B',
  5. ARTICULOS.ARTICULO,ARTICULOS.COD_FAB,ARTICULOS.PESO,ARTICULOS.CATEGORIA,SYSDATE(),10
  6. FROM ARTICULOS,VENTAS,
  7. (SELECT SUM(VENTAS.UNIDADES_VENDIDAS) AS A,
  8. VENTAS.ARTICULO AS B FROM VENTAS GROUP BY VENTAS.ARTICULO) AS C,
  9. WHERE ARTICULO.ARTICULO=VENTAS.ARTICULO
  10. AND A>30
  11. AND C.B = ARTICULOS.ARTICULO;
  12.  

g) Cambia los datos de la tienda con NIF '1111-A' igualándolos a los de la tienda con NIF '2222-A'.

Código
  1. UPDATE TIENDAS AS A, (SELECT PROVINCIA FROM TIENDAS WHERE NIF='2222-a') AS B
  2. SET A.PROVINCIA = B.PROVINCIA
  3. WHERE NIF = 1111
  4.  

h) Cambia todos los artículos de 'PRIMERA' categoría a 'SEGUNDA' categoría del país 'ITALIA'.

Código
  1. UPDATE ARTICULOS A
  2. SET A.CATEGORIA = 'SEGUNDA'
  3. WHERE A.CATEGORIA = 'PRIMERA'
  4. AND A.COD_FAB = (SELECT COD_FAB FROM FABRICANTE WHERE NOMBRE_PAIS LIKE 'ITALIA')
  5.  

i) Modifica aquellos pedidos en los que la cantidad pedida sea superior a las existencias del artículo, asignando el 20 por 100 de las existencias a la cantidad que se ha pedido.

Código
  1. ALTER TABLE ARTICULOS ADD COLUMN EXISTENCIAS INT(10) NULL DEFAULT 10000 AFTER CATEGORIA;
  2.  
  3. UPDATE PEDIDOS AS P, ARTICULOS AS AR,
  4. (SELECT P.UNIDADES_PEDIDAS FROM PEDIDOS GROUP BY P.ARTICULO),
  5. (SELECT AR.ARTICULO AS A FROM ARTICULOS, PEDIDOS,
  6. (SELECT SUM(P.UNIDADES_PEDIDAS) AS B, P.ARTICULO AS C FROM PEDIDOS GROUP BY P.ARTICULO) AS D WHERE AR.EXISTENCIAS<B
  7. AND
  8. AR.ARTICULO=P.ARTICULO AND D.C=AR.ARTICULO GROUP BY P.ARTICULO) AS E
  9. SET P.UNIDADES_PEDIDAS=(P.UNIDADES_PEDIDAS*(20/100)) WHERE P.ARTICULO=E.A;
  10.  

j) Elimina aquellas tiendas que no hayan realizado ventas.

Código
  1. DELETE FROM TIENDAS
  2. WHERE NIF
  3. NOT IN(SELECT DISTINCT NIF FROM VENTAS);
  4.  

k) Elimina los artículos que no hayan tenido ni compras ni ventas.

Código
  1. DELETE FROM ARTICULOS
  2. WHERE ARTICULO NOT IN (SELECT DISTINCT ARTICULO FROM VENTAS)
  3. AND
  4. ARTICULO NOT IN (SELECT DISTINCT ARTICULO FROM PEDIDOS);
  5. [/code=SQL]
  6.  
  7. [SIZE=10pt][i][b]l) Borra los pedidos de 'PRIMERA' categoría cuyo país de procedencia sea 'FRANCIA'.
  8. [/b][/i][/SIZE]
  9. [code=SQL]
  10. DELETE FROM PEDIDOS
  11. WHERE ARTICULO IN(SELECT ARTICULO FROM ARTICULOS WHERE CATEGORIA = 'PRIMERA')
  12. AND
  13. COD_FAB = ANY(SELECT COD_FAB FROM FABRICANTE WHERE NOMBRE_PAIS = 'FRANCIA')
  14.  

m) Resta uno a las unidades de los últimos pedidos de la tienda con NIF '5555-B'.

Código
  1. OPCION B
  2. UPDATE PEDIDOS AS A,(SELECT NIF FROM PEDIDOS WHERE NIF =5555 ORDER BY FECHA_PEDIDO DESC LIMIT 1) AS B
  3. SET UNIDADES_PEDIDAS = UNIDADES_PEDIDAS-1
  4. WHERE
  5. A.NIF = B.NIF
  6.  





n) Crea una tabla INFORME, que contenga en tres columnas las marcas, artículo y la suma total de unidades vendidas de cada artículo.

Código
  1. CREATE TABLE INFORME
  2. SELECT FABRICANTES.MARCA,ARTICULOS.ARTICULO,NULL,(S,0)
  3. FROM FABRICANTES, ARTICULOS
  4. LEFT OUTER JOIN
  5. (SELECT VENTAS.ARTICULO AS B,
  6. SUM(VENTAS.UNIDADES_VENDIDAS) AS S FROM VENTAS
  7. GROUP BY VENTAS.ARTICULO) AS A
  8. ON ARTICULOS.ARTICULO = A.B
  9. WHERE ARTICULOS.COD_FAB=FABRICANTES.COD_FAB
  10.  

o) Borra el contenido de la tabla anterior.
[
Código
  1. TRUNCATE TABLE INFORME
  2. code]
  3.  
  4.  
  5. [SIZE=10pt][i][b]p) Elimina la tabla anterior.[/b][/i][/SIZE]  
  6.  
  7. [code=SQL]
  8. DROP TABLE INFORME
  9.  
[/code][/code][/code]
2  Programación / Bases de Datos / El mejor cliente SQL para Bases de Datos ? en: 10 Abril 2012, 13:33 pm
Estoy buscando un cliente potente para linux, alguna recomendación ? gracias ^^
3  Seguridad Informática / WarZone / Re: Hack Google, Help? en: 9 Abril 2012, 03:59 am
Dios estoy muriendo con vuestros juanitos... , no me costo nada llegar al panel pero me estoy despellejando con la maldita pass....

neo
morpheo
pax

Segun Azielito estos deberían ser los usuarios ya que es como cifra unix las pass, no se si estaré cerca o por el ártico lo q se esq me vuelvo loco, he hecho una recopilación con las referencias a juan...., (no entiendo lo de juan)

PD: " Juan el Vecino Rulez "
Juanito esta sediento
juanito se las arregla solo
isto, ya la pase, reinstale juan, maquille el archivo y ya

Algo para tirar del hilo plzzz =??

Loaded 3 password hashes with 3 different salts (Traditional DES [64/64 BS])
guesses: 0  time: 0:00:00:00 100%  c/s: 1108K  trying: �tiles - �vulas
4  Seguridad Informática / WarZone / Re: Hack Web_Cross en: 8 Abril 2012, 23:35 pm
Yo después de documentarme bastante, conseguí pasarlo casi sin darme cuenta, seguro que es mucho mas simple de lo que pensais
5  Programación / Bases de Datos / Re: Problema con outer join en: 29 Febrero 2012, 14:27 pm
Diosss llevo 2 semanas con esta consulta y nada de nada he probado con outers, con not in etcccc....

Esto es lo mas "limpio" que he sacado pero.... nada :

Código
  1. SELECT ALUMNO.NOMBRE
  2. FROM ALUMNO,ANTIGUO,NUEVO
  3. WHERE ALUMNO.NOMBRE
  4. AND ALUMNO.NOMBRE=NUEVO.NOMBRE
  5. AND ALUMNO.NOMBRE=ANTIGUO.NOMBRE
  6. NOT IN (ANTIGUO.NOMBRE,NUEVO.NOMBRE)
  7.  
6  Programación / Bases de Datos / Problema con outer join en: 26 Febrero 2012, 16:13 pm
Hola tengo una problemilla con esta consulta :

8.- Visualiza los nombres de los alumnos de la tabla ALUMNO que no estén en la tabla ANTIGUO ni en la tabla NUEVO.


 ALUMNO;
+----------+------+------------+
| NOMBRE   | EDAD | LOCALIDAD  |
+----------+------+------------------+
| JUAN         |   20    | VIGO       |
| MANUEL     |   16    | PONTEAREAS |
| FERNANDO |   32 | TUI                   |
| PACA         |   25 | SALAMANCA     |
| PEPA         |   19 | LUGO               |
+----------+------+------------+


ANTIGUO;
+----------+------+-----------+
| NOMBRE   | EDAD | LOCALIDAD |
+----------+------+-----------+
| PEPA          |   19 | LUGO      |
| FERNANDO  |   32 | TUI       |
| JULIA         |   19 | CANARIAS  |
| CHONI       |   22 | MADRID    |
| PEPE         |   43 | BARCELONA |
+----------+------+-----------+


 NUEVO;
+----------+------+------------+
| NOMBRE   | EDAD | LOCALIDAD  |
+----------+------+------------+
| MANUEL     |   16 | PONTEAREAS |
| RODRIGO  |   32 | CORU�A        |
| PILI          |   43 | POLLO            |
| FERNANDO |   32 | TUI               |
+----------+------+------------+

Sé que hay que utilizar outer join pero no soy capaz de escribir bien la sintaxis y llevo ya horas ralladísimo.

Si útilizo por ejemplo los left y right outers join y quitando los NULL me acaba devolviendo los que coinciden y necesito justamente todos los que NO se repitan



Gracias :)
7  Programación / Bases de Datos / Re: Ejercicio para Bases de datos en: 8 Febrero 2012, 20:04 pm
bueno como lo prometido es deuda, cuelgo el resultado entero del boletin, desde el principio al final :


BOLETÍN 6

CONSULTAS BÁSICAS


1.- Diseña la base de datos para una librería que desea mantener la información de cada tema (cadena de caracteres de longitud fija 15 única y no nula), el estante en que se ubica (1 carácter) y el número de ejemplares de que dispone (valor numérico longitud 2).

Introduce datos de forma aleatoria, teniendo en cuenta que los temas encajan dentro de la siguiente lista: HISTORIA, FICCIÓN, MEDICINA, INFORMATICA, ARTE, RELIGION. Y que el estante es una letra del abecedario.


SENTENCIAS DE CREACIÓN E INTRODUCCIÓN DE DATOS (LIBRERIA):

Código
  1. # Dumping DATABASE STRUCTURE FOR LIBRERIA
  2. DROP DATABASE IF EXISTS `LIBRERIA`;
  3. CREATE DATABASE IF NOT EXISTS `LIBRERIA` /*!40100 DEFAULT CHARACTER SET utf8 */;
  4. USE `LIBRERIA`;
  5.  
  6. # Dumping STRUCTURE FOR TABLE LIBRERIA.LIBROS
  7. DROP TABLE IF EXISTS `LIBROS`;
  8. CREATE TABLE IF NOT EXISTS `LIBROS` (
  9.  `TEMA` VARCHAR(15) NOT NULL,
  10.  `ESTANTE` CHAR(1) DEFAULT NULL,
  11.  `EJEMPLARES` SMALLINT(2) DEFAULT NULL,
  12.  PRIMARY KEY (`TEMA`),
  13.  UNIQUE KEY `TEMA` (`TEMA`)
  14. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  15.  
  16. # Dumping DATA FOR TABLE LIBRERIA.LIBROS: 6 ROWS
  17. DELETE FROM `LIBROS`;
  18. /*!40000 ALTER TABLE `LIBROS` DISABLE KEYS */;
  19. INSERT INTO `LIBROS` (`TEMA`, `ESTANTE`, `EJEMPLARES`) VALUES
  20. ('HISTORIA', 'B', 8),
  21. ('FICCION', 'A', 20),
  22. ('MEDICINA', 'F', 12),
  23. ('INFORMATICA', 'E', 56),
  24. ('ARTE', 'D', 80),
  25. ('RELIGION', 'C', 15);
  26. /*!40000 ALTER TABLE `LIBROS` ENABLE KEYS */;
  27. /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
  28. /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
  29. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

Realiza las siguientes consultas:

a) Obtener todos los datos cuyo tema sea “FICCION” usando “=” y posteriormente “LIKE”. ¿Es el resultado el mismo? ¿Y si modificaras la tabla asignando longitud variable al campo tema?


Código
  1. SELECT * FROM LIBROS WHERE TEMA LIKE 'FICCION'
  2. SELECT * FROM LIBROS WHERE TEMA='FICCION'

- El resultado es el mismo


b) Obtener el tema, estante y ejemplares de las filas con ejemplares comprendidos entre 8 y 15.
Código
  1. SELECT TEMA,ESTANTE,EJEMPLARES FROM LIBROS WHERE EJEMPLARES BETWEEN  8 AND 15

c) Obtener las columnas tema, estante y ejemplares de las filas cuyo estante no esté comprendido entre 'B' y 'D'.

Código
  1. SELECT TEMA,ESTANTE,EJEMPLARES FROM LIBROS WHERE ESTANTE NOT BETWEEN  'B' AND 'D'


d) Obtener con una única sentencia SELECT todos los temas de la librería cuyo número de ejemplares sea inferior a los que hay en 'MEDICINA'.

Código
  1. SELECT TEMA FROM LIBROS WHERE EJEMPLARES<(SELECT EJEMPLARES FROM LIBROS WHERE TEMA='MEDICINA')


e) Obtener los temas de la librería cuyo número de ejemplares no esté entre 15 y 20, ambos incluid

Código
  1. SELECT TEMA FROM LIBROS WHERE EJEMPLARES NOT BETWEEN 15 AND 20





2.- En un colegio se desea almacenar la información de los alumnos (DNI [10] no nulo y único, Apellidos_Nombre [30], Dirección [30], Población [15] y Teléfono [10], todos cadenas de caracteres de longitud variable), las asignaturas que cursan (Código como valor numérico de 2 cifras no nulo y único; y Nombre, cadena de caracteres de longitud variable 20) y las notas que obtienen dichos alumnos en las diferentes asignaturas que cursen (el valor de la nota será un número de 2 cifras).

SENTENCIAS DE CREACIÓN E INTRODUCCIÓN DE DATOS (COLEGIO):
Código
  1. DROP DATABASE IF EXISTS `COLEGIO`;
  2. CREATE DATABASE IF NOT EXISTS `COLEGIO` /*!40100 DEFAULT CHARACTER SET utf8 */;
  3. USE `COLEGIO`;
  4.  
  5.  
  6. # Dumping STRUCTURE FOR TABLE COLEGIO.ALUMNOS
  7. DROP TABLE IF EXISTS `ALUMNOS`;
  8. CREATE TABLE IF NOT EXISTS `ALUMNOS` (
  9.  `DNI` VARCHAR(10) NOT NULL,
  10.  `APELLIDOS_NOMBRE` VARCHAR(30) DEFAULT NULL,
  11.  `DIRECCION` VARCHAR(30) DEFAULT NULL,
  12.  `POBLACION` VARCHAR(15) DEFAULT NULL,
  13.  `TELEFONO` VARCHAR(10) DEFAULT NULL,
  14.  PRIMARY KEY (`DNI`),
  15.  UNIQUE KEY `DNI` (`DNI`)
  16. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  17.  
  18. # Dumping DATA FOR TABLE COLEGIO.ALUMNOS: ~7 ROWS (approximately)
  19. DELETE FROM `ALUMNOS`;
  20. /*!40000 ALTER TABLE `ALUMNOS` DISABLE KEYS */;
  21. INSERT INTO `ALUMNOS` (`DNI`, `APELLIDOS_NOMBRE`, `DIRECCION`, `POBLACION`, `TELEFONO`) VALUES
  22. ('25889878C', 'Martienz_Pepe_Lolo', 'Calle_Juas', 'SEVILLA', '987755465'),
  23. ('45665448K', 'Rouco_Varela_Nolo', 'Calle_Lamer', 'CORUÑA', '686987785'),
  24. ('45665884R', 'Del_Pan_Pepe', 'Calle_Roja', 'VIGO', '623154687'),
  25. ('45687998X', 'Guitierrez_Gomez_Elias', 'Calle_Nova', 'SANTIAGO', '614658779'),
  26. ('53259877Q', 'Diaz_Fernandez_Maria', 'Calle_Azul', 'MADRID', '684455664'),
  27. ('67897546S', 'Rodriguez_Alonso_Juan', 'Calle_Verde', 'BARCELONA', '651154465'),
  28. ('68798545B ', 'Fernandez_Maria_Justo', 'Calle_Madrid', 'MADRID', '987756654');
  29. /*!40000 ALTER TABLE `ALUMNOS` ENABLE KEYS */;
  30.  
  31.  
  32. # Dumping STRUCTURE FOR TABLE COLEGIO.ASIGNATURAS
  33. DROP TABLE IF EXISTS `ASIGNATURAS`;
  34. CREATE TABLE IF NOT EXISTS `ASIGNATURAS` (
  35.  `COD_AS` tinyint(2) NOT NULL,
  36.  `NOMBRE` VARCHAR(20) DEFAULT NULL,
  37.  PRIMARY KEY (`COD_AS`),
  38.  UNIQUE KEY `COD_AS` (`COD_AS`)
  39. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  40.  
  41. # Dumping DATA FOR TABLE COLEGIO.ASIGNATURAS: ~5 ROWS (approximately)
  42. DELETE FROM `ASIGNATURAS`;
  43. /*!40000 ALTER TABLE `ASIGNATURAS` DISABLE KEYS */;
  44. INSERT INTO `ASIGNATURAS` (`COD_AS`, `NOMBRE`) VALUES
  45. (1, 'FOL'),
  46. (2, 'ORTODONCISMO'),
  47. (3, 'LM'),
  48. (4, 'PRG'),
  49. (5, 'ED');
  50. /*!40000 ALTER TABLE `ASIGNATURAS` ENABLE KEYS */;
  51.  
  52.  
  53. # Dumping STRUCTURE FOR TABLE COLEGIO.CURSAN
  54. DROP TABLE IF EXISTS `CURSAN`;
  55. CREATE TABLE IF NOT EXISTS `CURSAN` (
  56.  `DNI` VARCHAR(10) NOT NULL,
  57.  `COD_AS` tinyint(2) NOT NULL DEFAULT '0',
  58.  `NOTA` INT(2) DEFAULT NULL,
  59.  PRIMARY KEY (`DNI`,`COD_AS`),
  60.  KEY `FK_CURSAN_ASIGNATURAS` (`COD_AS`),
  61.  CONSTRAINT `FK_CURSAN_ALUMNOS` FOREIGN KEY (`DNI`) REFERENCES `ALUMNOS` (`DNI`),
  62.  CONSTRAINT `FK_CURSAN_ASIGNATURAS` FOREIGN KEY (`COD_AS`) REFERENCES `ASIGNATURAS` (`COD_AS`)
  63. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  64.  
  65. # Dumping DATA FOR TABLE COLEGIO.CURSAN: ~9 ROWS (approximately)
  66. DELETE FROM `CURSAN`;
  67. /*!40000 ALTER TABLE `CURSAN` DISABLE KEYS */;
  68. INSERT INTO `CURSAN` (`DNI`, `COD_AS`, `NOTA`) VALUES
  69. ('25889878C', 5, 6),
  70. ('45665884R', 1, 8),
  71. ('45665884R', 2, 8),
  72. ('45687998X', 1, 7),
  73. ('53259877Q', 1, 6),
  74. ('53259877Q', 2, 6),
  75. ('67897546S', 3, 10),
  76. ('68798545B ', 2, 2),
  77. ('68798545B ', 5, 4);
  78.  
  79.  
  80.  
  81.  



Diseña el modelo E/R, a continuación transfórmalo a Grafo Relacional, para posteriormente implementar la base de datos y sus consecuentes tablas, campos y tipos de datos.









Introduce datos aleatorios para poder realizar las consultas detalladas más abajo.


Realiza a continuación las siguientes consultas:

a) Obtener el nombre y apellidos de cada alumno, asignatura que cursa y nota obtenida en dicha asignatura.

Código
  1. SELECT APELLIDOS_NOMBRE,NOMBRE,NOTA FROM ALUMNOS,ASIGNATURAS,CURSAN WHERE ALUMNOS.DNI=CURSAN.DNI AND  ASIGNATURAS.COD_AS=CURSAN.COD_AS


b) Obtener los nombres y apellidos de los alumnos que han cursado 'FOL'.
Código
  1. SELECT APELLIDOS_NOMBRE FROM ALUMNOS,CURSAN,ASIGNATURAS WHERE ALUMNOS.DNI=CURSAN.DNI AND CURSAN.COD_AS=ASIGNATURAS.COD_AS AND ASIGNATURAS.NOMBRE = "FOL"



c) Obtener los nombres y apellidos de los alumnos que tengan una nota entre 7 y 8 en 'FOL'.
Código
  1. SELECT APELLIDOS_NOMBRE FROM ALUMNOS,CURSAN,ASIGNATURAS WHERE ALUMNOS.DNI=CURSAN.DNI AND CURSAN.COD_AS=ASIGNATURAS.COD_AS AND ASIGNATURAS.NOMBRE = "FOL" AND CURSAN.NOTA BETWEEN 7 AND 8


d) Obtener los nombres y apellidos de los alumnos que no tengan nada suspenso.

Código
  1. SELECT APELLIDOS_NOMBRE FROM CURSAN,ALUMNOS,ASIGNATURAS WHERE CURSAN.NOTA BETWEEN 5 AND 10 AND ASIGNATURAS.COD_AS=CURSAN.COD_AS AND ALUMNOS.DNI=CURSAN.DNI
  2.  
e) Obtener todas las asignaturas que contengan 2 letras 'o' en su interior y tengan alumnos matriculados de 'Madrid'.
Código
  1. SELECT NOMBRE FROM ASIGNATURAS,CURSAN,ALUMNOS WHERE NOMBRE LIKE '%o%o%' AND ALUMNOS.DNI=CURSAN.DNI AND CURSAN.COD_AS=ASIGNATURAS.COD_AS AND POBLACION='MADRID'



f) Obtener los nombres y apellidos de los alumnos de 'Madrid' que tengan alguna asignatura suspensa.

Código
  1. SELECT APELLIDOS_NOMBRE FROM ALUMNOS,CURSAN,ASIGNATURAS WHERE POBLACION='MADRID' AND CURSAN.NOTA<5 AND ALUMNOS.DNI=CURSAN.DNI AND CURSAN.COD_AS=ASIGNATURAS.COD_AS
  2.  
  3.  
g) Obtener los nombres y apellidos de alumnos que tengan la misma nota que tiene 'Díaz Fernández, María' en 'FOL' en alguna asignatura.
Código
  1. SELECT APELLIDOS_NOMBRE FROM ALUMNOS,CURSAN,ASIGNATURAS WHERE CURSAN.NOTA=(SELECT NOTA FROM ALUMNOS,ASIGNATURAS,CURSAN WHERE ALUMNOS.APELLIDOS_NOMBRE ='DIAZ_FERNANDEZ_MARIA' AND ASIGNATURAS.NOMBRE='FOL' AND CURSAN.DNI=ALUMNOS.DNI AND ASIGNATURAS.COD_AS=CURSAN.COD_AS)
  2. AND CURSAN.DNI=ALUMNOS.DNI AND ASIGNATURAS.COD_AS=CURSAN.COD_AS

* En esta consulta devuelve a DIAZ_FERNANNDEZ_MARIA pero como la consulta no especifica si debe aparecer o no lo dejo así, de todas formas solo habría que añadir al final AND APELLIDOS_NOMBRE !='DIAZ_FERNANDEZ_MARIA'

h) Obtener los datos de las asignaturas que no tengan alumnos.

Código
  1. SELECT CURSAN.COD_AS FROM CURSAN,ASIGNATURAS,ALUMNOS WHERE CURSAN.COD_AS=ASIGNATURAS.COD_AS AND ALUMNOS.DNI = CURSAN.DNI  AND NOT EXISTS (SELECT CURSAN.COD_AS FROM CURSAN,ASIGNATURAS WHERE CURSAN.COD_AS=ASIGNATURAS.COD_AS)
  2.  
* Hice lo que pude




i) Obtener los nombres y apellidos de los alumnos que tengan nota en la asignatura con código 1.
Código
  1. SELECT APELLIDOS_NOMBRE FROM ASIGNATURAS,ALUMNOS,CURSAN WHERE CURSAN.DNI=ALUMNOS.DNI AND CURSAN.COD_AS = ASIGNATURAS.COD_AS AND CURSAN.COD_AS=1
  2.  

j) Obtener los nombres y apellidos de los alumnos que no tengan nota en la asignatura con código 3.

Código
  1. SELECT APELLIDOS_NOMBRE FROM ASIGNATURAS,ALUMNOS,CURSAN WHERE CURSAN.DNI=ALUMNOS.DNI AND CURSAN.COD_AS = ASIGNATURAS.COD_AS AND CURSAN.COD_AS!=3
8  Programación / Java / Re: Mi primera interfaz gráfica que funciona !!! en: 8 Febrero 2012, 18:48 pm
Lo hice solo para probrar :) que el juego tenga algo de lógica ya es bastante xD !
9  Programación / Java / Mi primera interfaz gráfica que funciona !!! en: 8 Febrero 2012, 18:22 pm
Bueno, es mi primera interfaz gráfica con eclipse en Java, hay que decir que :

- eventos,
- swing
y etc...

 todavía no lo he dado en clase, lo máximo que hemos dado es arrays y todo lo que hacemos se hace por consola por Scanner (xD)

Se trata de un jueguillo que trata de que el usuario adivine los numeros de los textAreas de la derecha.

Un saludo !!!

https://rapidshare.com/files/1239131820/Juego_adivina.jar
10  Programación / Java / Re: Ordenar array bidimensional en: 1 Febrero 2012, 18:52 pm
Muchisimas gracias bewa, pero me desanimo al ver esto xDD llevo 3 días rayandome la cabeza y nada
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines