Twitter Flickr Pinterest LinkedIn YouTube Google Maps E-mail RSS
formats

Ejemplo básico de un fichero .sql para creación de tablas relacionadas, inserción y consultas en MYSQL

Ejemplo de aprendizaje básico de un fichero .sql. Creación de tablas relacionales en MYSQL.

Se muestran  cómo insertar datos y realizar consultas de iniciación.


Los nombres y datos son ficticios. Los comentarios emplean  doble guión medio.

-- COMIENZO DEL FICHERO .sql --
 
-- He creado una estructura de tablas relacionales para ver el ejemplo funcionamiento
-- en MYSQL y para realizar consultas en 2 tablas.
-- La cuota figura en la tabla cuotas relacionada con la tabla socios gracias a InnoDB.
 
-- ZONA DE DEFINICION 
 
DROP DATABASE mi_club;
CREATE DATABASE mi_club;
USE mi_club;
CREATE TABLE socios
(
id_socio INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(15),
apellidos VARCHAR(25),
dni VARCHAR(9),
domicilio VARCHAR(50),
localidad VARCHAR(30),
tipo_socio ENUM('A','B','C'),
fecha_alta DATE,
fecha_baja DATE,
-- importe_cuota Decimal (8,2),
paga_ult_recibo SET ('S','N'),
anotaciones BLOB,
PRIMARY KEY (id_socio)
-- Usamos el motor InnoDB en vez de MyISAM para el sistema relacional
) ENGINE=InnoDB;
 
-- Existen diversas formas de indexar, esta me resulta más facil.
ALTER TABLE socios
ADD INDEX dni(dni),
ADD INDEX apellidos(apellidos);
 
CREATE TABLE cuotas
(
id_cuota INT NOT NULL AUTO_INCREMENT ,
id_socio INT,
fecha_pago DATE,
importe_cuota DECIMAL(8,2),
anotaciones TEXT,
-- OJO, ejemplo de cómo crear la relación entre tablas.
PRIMARY KEY(id_cuota),
FOREIGN KEY (id_socio) REFERENCES socios(id_socio)
) ENGINE=InnoDB;
 
-- ZONA DE EJEMPLO DE INSERCION
 
-- Inserción de datos en la base, tabla socios.
 
INSERT INTO socios VALUES (1,'Oscar','De la Cuesta ','12660481','La direcion', 'Palencia','A','2010-11-25','2010-12-20','S','Este cliente soy yo');
INSERT INTO socios VALUES (2,'Joel', 'Morta','78546754','C\ Gandia','Valencia','C', '2010-11-25',NULL,'N','Este cliente es un moroso');
INSERT INTO socios VALUES (3,'Pedro','Anero','124342340','C\ Buenos aires','Barcelona','B','2010-12-01','2010-12-20','S','Cliente habitual');
INSERT INTO socios VALUES (4,'Ana','Rodriguez','34343444','C\ Serrano','Madrid','B','2010-12-01','2010-12-20','S','Solo veranos');
INSERT INTO socios VALUES (5,'Luis','Serrit','12776043','C\ Las brisas','Santander','C','2010-11-25','2010-12-25','S','Invierno');
INSERT INTO socios VALUES (6,'Maria','Arcona','33176043','C\ Asador','Santander','C',NULL,NULL,'S','Epoca de Verano');
INSERT INTO socios VALUES (7,'Jose','Coma','12773343','C\ Valverde','Palencia','A','2010-11-25','2010-12-25','S','No es un cliente habitual');
INSERT INTO socios VALUES (8,'Marcos','Garcia','12224343','C\ Los pedernales','Palencia','A','2010-11-25','2010-12-25','S','Le gusta el senderismo');
INSERT INTO socios VALUES (9,'Beatriz','Arconada','12324343','C\ Los Girasoles','Palencia','B','2010-11-25','2010-12-25','S','Posee tarjeta de descuento');
INSERT INTO socios VALUES (10,'Veronica','Artea','54124343','C\ lobro','Palencia','A','2010-11-25','2010-12-25','S','Cliente bastante formal');
 
-- Inserción de datos en la base, tabla cuotas.
INSERT INTO cuotas VALUES(1,1,'2010-12-25', 100,' El cliente tiene las cuentas saldadas');
INSERT INTO cuotas VALUES(2,2,NULL, 0,' El cliente no paga');
INSERT INTO cuotas VALUES(3,3,'2010-12-25', 50,' El cliente tiene las cuentas saldadas');
INSERT INTO cuotas VALUES(4,4,'2010-12-25', 40,' El cliente tiene las cuentas saldadas');
INSERT INTO cuotas VALUES(5,5,'2010-12-25', 30,' El cliente tiene las cuentas saldadas');
INSERT INTO cuotas VALUES(6,6,'2010-12-25', 5,' El cliente debe dinero');
INSERT INTO cuotas VALUES(7,7,'2010-12-25', 4,' El cliente debe dinero');
INSERT INTO cuotas VALUES(8,8,'2010-12-25', 2,' El cliente debe dinero');
INSERT INTO cuotas VALUES(9,1,'2010-12-25', 15,'El cliente tiene dinero');
INSERT INTO cuotas VALUES(10,10,'2010-12-25',120,'Cliente solvente');
 
-- ZONA DE CONSULTAS
-- en función de los datos introducidos. Siete ejemplos.
 
-- 1 - Todos los campos de todos los registros de la tabla “socios”.
SELECT * FROM SOCIOS;
 
-- 2 - Los campos nombre, apellidos, fecha_alta y localidad sólo de los socios de tipo "A" o "C"
SELECT nombre, apellidos, fecha_alta, localidad FROM socios WHERE tipo_socio = 'A' OR tipo_socio='C';
 
-- 3 - Los campos dni, id_socio, tipo_socio y fecha_baja sólo de los socios cuyo campo paga_ult_recibo contenga "N".
SELECT dni, id_socio, tipo_socio, fecha_baja FROM socios WHERE paga_ult_recibo = 'N';
 
-- 4 - Todos los campos de los registros de la tabla “cuotas” de aquellos socios que tengan vacío el campo fecha_baja.
SELECT cuotas.* FROM cuotas RIGHT JOIN socios ON cuotas.id_socio=socios.id_socio WHERE socios.fecha_baja IS NULL;
 
-- 5 - La suma de todas las cuotas pagadas por un determinado socio (esto es el importe acumulado), por ejemplo id_socio igual a 3.
SELECT SUM(cuotas.importe_cuota) FROM cuotas WHERE cuotas.id_socio=1;
 
-- 6 - Los campos nombre y importe_acumulado (campo calculado que contendrá, en euros,
-- la cantidad acumulada que ha pagado el socio en todas las cuotas. Es decir, es la suma
-- de todas las cuotas para un socio dado.) de los socios cuyo importe_acumulado exceda
-- de una determinada cantidad, por ejemplo 10,00 €.
SELECT nombre, SUM(c.importe_cuota) FROM cuotas c INNER JOIN socios s ON c.id_socio=s.id_socio WHERE c.importe_cuota >= 10 GROUP BY nombre;
 
-- 7 - Lo mismo, pero cuyo importe_cuota no sobrepase esa misma cantidad.
SELECT nombre, SUM(c.importe_cuota) FROM cuotas c INNER JOIN socios s ON c.id_socio=s.id_socio WHERE c.importe_cuota < 10 GROUP BY nombre;
Etiquetas:, ,

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Home Bases de datos Ejemplo básico de un fichero .sql para creación de tablas relacionadas, inserción y consultas en MYSQL
© www.palentino.es, desde el 2012 - Un Blog para compartir conocimientos ...

Uso de cookies en mi sitio palentino.es

Este sitio web utiliza cookies para que tengamos la mejor experiencia de usuario. Si continúas navegando estás dando tu consentimiento para la aceptación de las mencionadas cookies y la aceptación de la política de cookies

ACEPTAR
Aviso de cookies