{"id":307,"date":"2012-07-10T15:36:59","date_gmt":"2012-07-10T15:36:59","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=307"},"modified":"2012-07-10T15:42:15","modified_gmt":"2012-07-10T15:42:15","slug":"ejemplo-basico-de-un-fichero-sql-para-creacion-de-tablas-relacionadas-insercion-y-consultas-en-mysql","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/ejemplo-basico-de-un-fichero-sql-para-creacion-de-tablas-relacionadas-insercion-y-consultas-en-mysql\/","title":{"rendered":"Ejemplo b\u00e1sico de un fichero .sql para creaci\u00f3n de tablas relacionadas, inserci\u00f3n y consultas en MYSQL"},"content":{"rendered":"<p>Ejemplo de aprendizaje b\u00e1sico de un fichero .sql. Creaci\u00f3n de tablas relacionales en MYSQL.<\/p>\n<p>Se muestran \u00a0c\u00f3mo insertar datos y realizar consultas de\u00a0iniciaci\u00f3n.<\/p>\n<p><!--more--><br \/>\nLos nombres y datos son ficticios. Los comentarios emplean \u00a0doble gui\u00f3n medio.<br \/>\n<strong><\/strong><\/p>\n<pre lang=\"sql\">-- COMIENZO DEL FICHERO .sql --\r\n\r\n-- He creado una estructura de tablas relacionales para ver el ejemplo funcionamiento\r\n-- en MYSQL y para realizar consultas en 2 tablas.\r\n-- La cuota figura en la tabla cuotas relacionada con la tabla socios gracias a InnoDB.\r\n\r\n-- ZONA DE DEFINICION\u00a0\r\n\r\nDROP database mi_club;\r\nCREATE DATABASE mi_club;\r\nUSE mi_club;\r\nCREATE TABLE socios\r\n(\r\nid_socio INT NOT NULL AUTO_INCREMENT,\r\nnombre VARCHAR(15),\r\napellidos VARCHAR(25),\r\ndni VARCHAR(9),\r\ndomicilio VARCHAR(50),\r\nlocalidad VARCHAR(30),\r\ntipo_socio ENUM('A','B','C'),\r\nfecha_alta DATE,\r\nfecha_baja DATE,\r\n-- importe_cuota Decimal (8,2),\r\npaga_ult_recibo SET ('S','N'),\r\nanotaciones BLOB,\r\nPRIMARY KEY (id_socio)\r\n-- Usamos el motor InnoDB en vez de MyISAM para el sistema relacional\r\n) ENGINE=InnoDB;\r\n\r\n-- Existen diversas formas de indexar, esta me resulta m\u00e1s facil.\r\nALTER TABLE socios\r\nADD INDEX dni(dni),\r\nADD INDEX apellidos(apellidos);\r\n\r\nCREATE TABLE cuotas\r\n(\r\nid_cuota INT NOT NULL AUTO_INCREMENT ,\r\nid_socio INT,\r\nfecha_pago DATE,\r\nimporte_cuota Decimal(8,2),\r\nanotaciones TEXT,\r\n-- OJO, ejemplo de c\u00f3mo crear la relaci\u00f3n entre tablas.\r\nPRIMARY KEY(id_cuota),\r\nFOREIGN KEY (id_socio) REFERENCES socios(id_socio)\r\n) ENGINE=InnoDB;\r\n\r\n-- ZONA DE EJEMPLO DE INSERCION\r\n\r\n-- Inserci\u00f3n de datos en la base, tabla socios.\r\n\r\nINSERT INTO socios VALUES (1,'Oscar','De la Cuesta ','12660481','La direcion', 'Palencia','A','2010-11-25','2010-12-20','S','Este cliente soy yo');\r\nINSERT INTO socios VALUES (2,'Joel', 'Morta','78546754','C\\ Gandia','Valencia','C', '2010-11-25',NULL,'N','Este cliente es un moroso');\r\nINSERT INTO socios VALUES (3,'Pedro','Anero','124342340','C\\ Buenos aires','Barcelona','B','2010-12-01','2010-12-20','S','Cliente habitual');\r\nINSERT INTO socios VALUES (4,'Ana','Rodriguez','34343444','C\\ Serrano','Madrid','B','2010-12-01','2010-12-20','S','Solo veranos');\r\nINSERT INTO socios VALUES (5,'Luis','Serrit','12776043','C\\ Las brisas','Santander','C','2010-11-25','2010-12-25','S','Invierno');\r\nINSERT INTO socios VALUES (6,'Maria','Arcona','33176043','C\\ Asador','Santander','C',NULL,NULL,'S','Epoca de Verano');\r\nINSERT INTO socios VALUES (7,'Jose','Coma','12773343','C\\ Valverde','Palencia','A','2010-11-25','2010-12-25','S','No es un cliente habitual');\r\nINSERT INTO socios VALUES (8,'Marcos','Garcia','12224343','C\\ Los pedernales','Palencia','A','2010-11-25','2010-12-25','S','Le gusta el senderismo');\r\nINSERT INTO socios VALUES (9,'Beatriz','Arconada','12324343','C\\ Los Girasoles','Palencia','B','2010-11-25','2010-12-25','S','Posee tarjeta de descuento');\r\nINSERT INTO socios VALUES (10,'Veronica','Artea','54124343','C\\ lobro','Palencia','A','2010-11-25','2010-12-25','S','Cliente bastante formal');\r\n\r\n-- Inserci\u00f3n de datos en la base, tabla cuotas.\r\nINSERT INTO cuotas VALUES(1,1,'2010-12-25', 100,' El cliente tiene las cuentas saldadas');\r\nINSERT INTO cuotas VALUES(2,2,NULL, 0,' El cliente no paga');\r\nINSERT INTO cuotas VALUES(3,3,'2010-12-25', 50,' El cliente tiene las cuentas saldadas');\r\nINSERT INTO cuotas VALUES(4,4,'2010-12-25', 40,' El cliente tiene las cuentas saldadas');\r\nINSERT INTO cuotas VALUES(5,5,'2010-12-25', 30,' El cliente tiene las cuentas saldadas');\r\nINSERT INTO cuotas VALUES(6,6,'2010-12-25', 5,' El cliente debe dinero');\r\nINSERT INTO cuotas VALUES(7,7,'2010-12-25', 4,' El cliente debe dinero');\r\nINSERT INTO cuotas VALUES(8,8,'2010-12-25', 2,' El cliente debe dinero');\r\nINSERT INTO cuotas VALUES(9,1,'2010-12-25', 15,'El cliente tiene dinero');\r\nINSERT INTO cuotas VALUES(10,10,'2010-12-25',120,'Cliente solvente');\r\n\r\n-- ZONA DE CONSULTAS\r\n-- en funci\u00f3n de los datos introducidos. Siete ejemplos.\r\n\r\n-- 1 - Todos los campos de todos los registros de la tabla \u201csocios\u201d.\r\nSELECT * FROM SOCIOS;\r\n\r\n-- 2 - Los campos nombre, apellidos, fecha_alta y localidad s\u00f3lo de los socios de tipo \"A\" o \"C\"\r\nSELECT nombre, apellidos, fecha_alta, localidad FROM socios WHERE tipo_socio = 'A' or tipo_socio='C';\r\n\r\n-- 3 - Los campos dni, id_socio, tipo_socio y fecha_baja s\u00f3lo de los socios cuyo campo paga_ult_recibo contenga \"N\".\r\nSELECT dni, id_socio, tipo_socio, fecha_baja FROM socios WHERE paga_ult_recibo = 'N';\r\n\r\n-- 4 - Todos los campos de los registros de la tabla \u201ccuotas\u201d de aquellos socios que tengan vac\u00edo el campo fecha_baja.\r\nSELECT cuotas.* FROM cuotas RIGHT JOIN socios ON cuotas.id_socio=socios.id_socio WHERE socios.fecha_baja IS NULL;\r\n\r\n-- 5 - La suma de todas las cuotas pagadas por un determinado socio (esto es el importe acumulado), por ejemplo id_socio igual a 3.\r\nSELECT SUM(cuotas.importe_cuota) FROM cuotas WHERE cuotas.id_socio=1;\r\n\r\n-- 6 - Los campos nombre y importe_acumulado (campo calculado que contendr\u00e1, en euros,\r\n-- la cantidad acumulada que ha pagado el socio en todas las cuotas. Es decir, es la suma\r\n-- de todas las cuotas para un socio dado.) de los socios cuyo importe_acumulado exceda\r\n-- de una determinada cantidad, por ejemplo 10,00 \u20ac.\r\nSELECT nombre, sum(c.importe_cuota) FROM cuotas c INNER JOIN socios s ON c.id_socio=s.id_socio WHERE c.importe_cuota &gt;= 10 GROUP BY nombre;\r\n\r\n-- 7 - Lo mismo, pero cuyo importe_cuota no sobrepase esa misma cantidad.\r\nSELECT nombre, sum(c.importe_cuota) FROM cuotas c INNER JOIN socios s ON c.id_socio=s.id_socio WHERE c.importe_cuota &lt; 10 GROUP BY nombre;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ejemplo de aprendizaje b\u00e1sico de un fichero .sql. Creaci\u00f3n de tablas relacionales en MYSQL. Se muestran \u00a0c\u00f3mo insertar datos y realizar consultas de\u00a0iniciaci\u00f3n.<\/p>\n","protected":false},"author":1,"featured_media":315,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40,5,14],"tags":[38,37,39],"class_list":["post-307","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bases-de-datos","category-programacion","category-varios","tag-ejemplo","tag-mysql","tag-sql"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=307"}],"version-history":[{"count":27,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/307\/revisions"}],"predecessor-version":[{"id":382,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/307\/revisions\/382"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/315"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}