Capítulos
Ejercicios

ico SQL SQL
La persistencia del dato

Luis Felipe Ramírez Varela
https://luis.ramirez.cl
luis@ramirez.cl
luisfel

en construcción

Objetivo del capítulo:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius perferendis fugit debitis, animi magnam iure culpa, vitae similique minus sunt ipsa nam ea error eaque ipsum dolorem ad dolore commodi.

 

Objetivo del capítulo:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius perferendis fugit debitis, animi magnam iure culpa, vitae similique minus sunt ipsa nam ea error eaque ipsum dolorem ad dolore commodi.

 

Ejemplo:
CREATE TABLE `productos` (
  `id` int(6) NOT NULL,
  `nombre` varchar(50) NOT NULL DEFAULT '',
  `codigo` varchar(12) NOT NULL DEFAULT '',
  `categoria` varchar(20) NOT NULL DEFAULT '',
  `frase_promocional` varchar(250) NOT NULL DEFAULT '',
  `descripcion` text NOT NULL,
  `colores` set('rojo','verde','azul','negro') NOT NULL DEFAULT '',
  `precio` float NOT NULL DEFAULT '0',
  `disponibilidad` enum('1','0') NOT NULL DEFAULT '1',
  `promocion` enum('1','0') NOT NULL DEFAULT '0',
  `fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Indices de la tabla `productos`
--
ALTER TABLE `productos`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `codigo` (`codigo`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

--
-- AUTO_INCREMENT de la tabla `productos`
--
ALTER TABLE `productos`
  MODIFY `id` int(6) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;
COMMIT;

Objetivo del capítulo:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius perferendis fugit debitis, animi magnam iure culpa, vitae similique minus sunt ipsa nam ea error eaque ipsum dolorem ad dolore commodi.

Resumen:
INSERT INTO <tabla> (<campo/s>) VALUES (<valor/es>);
Ejemplo:
INSERT INTO `productos` (`id`, `nombre`, `codigo`, `categoria`, `frase_promocional`, `descripcion`, `colores`, `precio`, `disponibilidad`, `promocion`, `fecha`) 
VALUES (NULL, 'nombre', 'codigo', 'categoria', 'frase promociona', 'descripcio', 'rojo,verde', '12345678', '1', '1', NOW());
Ejemplo:
INSERT INTO `productos`  VALUES (NULL, 'nombre2', 'codigo2', 'categoria2', 'frase promociona2', 'descripcio2', 'rojo,verde', '123456782', '1', '1', NOW());
Ejemplo:

INSERT INTO `productos` (`id`, `nombre`, `codigo`, `categoria`, `frase_promocional`, `descripcion`, `colores`, `precio`, `disponibilidad`, `promocion`, `fecha`) VALUES
(1, 'Rayita Vertical', 'LFR100001RFL', 'verticales', 'La mejor rayita para las paredes vac?as', 'Ponga una hermosa Rayita Vertical en cualquier sector de su casa!\r\n\r\nVivamus in velit ut metus porttitor lacinia. In porttitor suscipit tortor. Aliquam sit amet est eget velit venenatis consequat. Morbi convallis fermentum nunc. Vestibulum hendrerit. Donec congue velit vel ligula. Morbi nulla nisi, tincidunt at, volutpat aliquam, hendrerit nullam.\r\n\r\nVivamus in velit ut metus porttitor lacinia. In porttitor suscipit tortor. Aliquam sit amet est eget velit venenatis consequat. Morbi convallis fermentum nunc. Vestibulum hendrerit. Donec congue velit vel ligula. Morbi nulla nisi, tincidunt at, volutpat aliquam, hendrerit nullam.\r\n\r\nVivamus in velit ut metus porttitor lacinia. In porttitor suscipit tortor. Aliquam sit amet est eget velit venenatis consequat. Morbi convallis fermentum nunc. Vestibulum hendrerit. Donec congue velit vel ligula. Morbi nulla nisi, tincidunt at, volutpat aliquam, hendrerit nullam.\r\n\r\nVivamus in velit ut metus porttitor lacinia. In porttitor suscipit tortor. Aliquam sit amet est eget velit venenatis consequat. Morbi convallis fermentum nunc. Vestibulum hendrerit. Donec congue velit vel ligula. Morbi nulla nisi, tincidunt at, volutpat aliquam, hendrerit nullam.\r\n\r\nVivamus in velit ut metus porttitor lacinia. In porttitor suscipit tortor. Aliquam sit amet est eget velit venenatis consequat. Morbi convallis fermentum nunc. Vestibulum hendrerit. Donec congue velit vel ligula. Morbi nulla nisi, tincidunt at, volutpat aliquam, hendrerit nullam.\r\n\r\nVivamus in velit ut metus porttitor lacinia. In porttitor suscipit tortor. Aliquam sit amet est eget velit venenatis consequat. Morbi convallis fermentum nunc. Vestibulum hendrerit. Donec congue velit vel ligula. Morbi nulla nisi, tincidunt at, volutpat aliquam, hendrerit nullam.', 'rojo,verde,azul', 1254, '1', '1', '2008-04-04 15:25:37'),
(2, 'Rayitas Superflex', '579000000975', 'curvas', 'Rayitas Curvas Super Flexibles', 'Unicas en el mercado, permiten envolver, retener y anidar sus objetos, sin ahorcarlos en el proceso. Vienen en dos tama?os, grande Superflex y peque?o Superflex.', 'rojo,verde,azul', 5000, '1', '0', '2007-09-22 00:28:14'),
(3, 'Rayita Horizontales Ommm', 'RPQ300003QPR', 'horizontales', 'El descanso hecho Rayita', 'Descanse y apoye todo cuanto desee en estas ?tiles, pr?cticas y ayudadoras Rayitas', 'rojo,azul,negro', 1500, '1', '0', '2007-09-22 00:28:14'),
(4, 'Rayitas Diagonales Woderflin', 'MPD100000DPM', 'diagonales', 'Ambiente sus espacios', 'La mejor opci?n del mercado: resistentes, diligentes y de gran aguante', 'rojo,negro', 2000, '1', '0', '2007-09-22 00:28:14'),
(5, 'Rayitas Curvas OH-QiDA2', 'MLDI0000IDLM', 'curvas', 'El riesgo y la emoci?n en Rayitas', 'Toda una revoluci?n en Rayitas, se aconseja discreci?n al adquirirlas', 'negro', 1750, '1', '0', '2007-09-22 00:28:14'),
(6, 'Rayitas Punteadas Pare-Siga', 'FLMN0000NMLF', 'punteadas', 'Ideal para sus procesos productivos', 'Nada mejor en la aplicaci?n de la misericordia laboral, ?ptimiza a sus trabajadores', 'rojo,verde', 6000, '1', '0', '2007-09-22 00:28:14'),
(7, 'Rayitas Oblicuas Oli', 'PDDI0000IDDP', 'oblicuas', '\"Lo\" d?scolo en Rayitas', 'El poder de la contradicci?n misma en Rayitas', 'rojo,verde,azul,negro', 3000, '1', '0', '2008-06-06 01:59:12'),
(8, 'Rayitas Verticales Akastoy', 'KGBAY00YABGK', 'verticales', 'Contenci?n al mejor precio', 'Contenci?n, apoyo y seguridad, son algunas vitudes de estas amables y robustas Rayitas, no se arrepentir', 'rojo,negro', 2500, '1', '0', '2008-06-06 01:59:39'),
(9, 'Rayitas Horizontales ZZzzz', 'AHH000000HHA', 'horizontales', 'Su sue?o hecho realidad', 'Consiga el sociego y el reposo que tanto busca en los m?s c?modos atributos', 'azul', 5480, '1', '0', '2008-06-06 01:59:48'),
(10, 'Rayitas Oblicuas Yupi', 'VRL000000LRV', 'oblicuas', 'Vaya de arriba para abajo sin complicaciones', 'Disfrute y regoc?jese de los altos y bajos que tiene la vida, lib?rse de la rutina', 'rojo,verde,azul,negro', 3640, '1', '0', '2008-06-06 01:59:55'),
(11, 'Rayitas Diagonales PAY', 'UHF000000FHU', 'diagonales', 'Direccionales y Multifuncionales', 'No se puede perder esta oportunidad, con Rayitas Diagonales no perder? el rumbo', 'rojo,verde,azul', 1000, '1', '0', '2008-06-06 02:00:09'),
(12, 'Rayitas Punteadas AKsiAKno', 'PLOP0000POLP', 'punteadas', 'La maravillosa posibilidad de elegir', 'Con Rayitas Punteadas \"AKsiAKno\" se hace acreedor del reconfortante privilegio  de la desici?n, soporta indesiciones arbitrarias, qu? est? esperando!', 'rojo,verde,azul,negro', 1245, '1', '0', '2008-06-06 02:00:17'),
(13, 'Rayitas Verticales Nostah', 'JLQD0000DQLJ', 'verticales', 'Ci?rrele la puerta a los abatares', 'P?ngale fin a los Turururus y abatares en su ofina, qu? ley de Murphy! con Rayitas \"Nostah\" volver? la paz al su templo de la productividad', 'rojo,verde,azul,negro', 4750, '1', '0', '2008-06-06 02:00:41'),
(14, 'Rayitas Curvas Pegalawelta', 'OLP000000LPO', 'curvas', 'Haga un alto en el camino', 'Con Rayitas Curvas \"Pegalawelta\" podr? darse el lujo de indicar a sus cong?neres la direcci?n de sus acciones, no se la pierda!', 'rojo,verde,negro', 4251, '1', '0', '2008-06-06 02:00:50'),
(15, 'Rayitas Oblicuas PHP', 'LFLF0000FLFL', 'oblicuas', 'Descubre el programador que hay en ti', 'D?jate seducir por el poder de un lenguaje sublime e ilegible pero re-?til, -dicen-, de exportaci', 'rojo,verde,negro', 2354, '1', '0', '2008-06-06 02:00:33'),
(16, 'Rayitas Horizontales OK', 'INBOX00XOBNI', 'horizontales', 'Haga suyas la leyes de Causa e Efecto', 'Incorpore ancestrales tecnolog?as con estas Rayitas \"OK\", asienta y disienta con total holgura, total, no se aceptan devoluciones!', 'verde,azul', 6540, '1', '0', '2008-06-06 02:00:56'),
(17, 'Rayitas Diagonales CHUEK', 'DWE21234DES', 'diagonales', 'Un monumeto inquietante', 'Haciendo gala de nuestra cultura, ponemos a vuestra disposici?n esta bella Rayita \"CHUEK\", ni proactiva, ni reactiva, sino que todo lo contrario, cons?ltenos!', 'rojo,azul', 3500, '1', '0', '2008-06-06 02:00:26');

Objetivo del capítulo:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius perferendis fugit debitis, animi magnam iure culpa, vitae similique minus sunt ipsa nam ea error eaque ipsum dolorem ad dolore commodi.

Resumen:
SELECT <campo/s> FROM <tabla> [WHERE] [GROUP BY] [ORDER BY] [LIMIT]

SELECT

Ejemplo:
SELECT nombre, codigo, precio FROM productos
Ejemplo:
SELECT * FROM productos

WHERE

Operadores de comparación
Operador Nombre
= Igual
<> Distinto
< Menor que
> Mayor que
<= Menor o igual
>= Mayor o igual
Ejemplo:
SELECT * FROM `productos` WHERE 1  id = 14
Operadores lógicos
Operador Título
AND Y
OR O
LIKE Parecido a
NOT No es
IN Está en
BETWEEN Entre medio de
IS NULL As nulo
Ejemplo:
SELECT * FROM productos WHERE 1 AND categoria="horizontales" AND precio < 2000
Ejemplo:
SELECT * FROM `productos` WHERE 1 AND id < 14 AND id > 2
Ejemplo:
SELECT * FROM `productos` WHERE 1 AND id < 14 or codigo LIKE "%lfr%"
Ejemplo:
SELECT * FROM `productos` WHERE codigo LIKE "%lfr%"
Ejemplo:
SELECT * FROM `productos` WHERE 1 AND id IN(1,3,4,5,7,9);

GROUP BY

Ejemplo:
SELECT categoria FROM productos GROUP BY categoria;

ORDER BY

Ejemplo:
SELECT * FROM productos WHERE 1 ORDER BY nombre
Ejemplo:
SELECT * FROM productos WHERE 1 AND categoria ="oblicuas" ORDER BY id DESC LIMIT 2

LIMIT

Ejemplo:
SELECT * FROM productos ORDER BY precio LIMIT 3
Ejemplo:
SELECT * FROM productos ORDER BY precio LIMIT 6,3

AS

Ejemplo:
SELECT t1.name, t2.salary FROM employee AS t1, info AS t2   WHERE
t1.name = t2.name;
Ejemplo:
SELECT productos.nombre AS estito, lacat.categoria FROM `productos`
LEFT JOIN categorias AS lacat ON productos.categoria_id=lacat.id

Objetivo del capítulo:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius perferendis fugit debitis, animi magnam iure culpa, vitae similique minus sunt ipsa nam ea error eaque ipsum dolorem ad dolore commodi.

Resumen:
UPDATE <tabla> SET campo1=valor1, campo2=valor2 [WHERE]
Ejemplo:
UPDATE productos SET precio=1000
Ejemplo:
UPDATE productos SET precio=2000 WHERE 1 AND id=2
Ejemplo:
 UPDATE productos SET precio=3000 WHERE 1 AND id > 6
Ejemplo:
UPDATE productos SET precio=5000 WHERE 1 AND categoria ="horizontales"
Ejemplo:
UPDATE productos SET precio=5000, nombre="estito" WHERE 1 AND categoria ="horizontales"

Objetivo del capítulo:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius perferendis fugit debitis, animi magnam iure culpa, vitae similique minus sunt ipsa nam ea error eaque ipsum dolorem ad dolore commodi.

Resumen:
DELETE FROM <tabla>  [WHERE];
Ejemplo:
DELETE FROM productos WHERE 1 AND nombre="nombre3"

Objetivo del capítulo:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius perferendis fugit debitis, animi magnam iure culpa, vitae similique minus sunt ipsa nam ea error eaque ipsum dolorem ad dolore commodi.

LEFT JOIN

Ejemplo:
SELECT productos.nombre, productos.codigo, categorias.categoria FROM `productos`
LEFT JOIN categorias ON productos.categoria_id=categorias.id
Ejemplo:
SELECT productos.nombre, productos.codigo, categorias.categoria FROM `productos`
LEFT JOIN categorias ON productos.categoria_id=categorias.id GROUP BY productos.categoria_id

RIGHT JOIN

Objetivo del capítulo:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eius perferendis fugit debitis, animi magnam iure culpa, vitae similique minus sunt ipsa nam ea error eaque ipsum dolorem ad dolore commodi.

DISTINCT

 

CONCAT()

Ejemplo:
SELECT nombres, apellidos, CONCAT(apellidos,', ',nombres) as nombre_completo FROM clientes WHERE 1

COUNT()

Ejemplo:
SELECT *, COUNT(id) AS cantidad FROM `productos` GROUP BY categoria_id

COUNT(DISTINCT)

MAX()

MIN()

AVG()

SUM()

repla
Ejemplo:
SELECT categorias.categoria, SUM(precio) as suma FROM `productos` 
LEFT JOIN categorias ON productos.categoria_id=categorias.id
GROUP BY categoria_id ORDER BY precio ASC

YEAR()

Ejemplo:
SELECT * FROM productos WHERE 1 AND YEAR(fecha) = "2020"

MONTH()

Ejemplo:
SELECT * FROM productos WHERE 1 AND MONTH(fecha) = "06"
Ejemplo:
SELECT * FROM uf WHERE 1 and year(fecha)=2020 AND month(fecha)=10

REPLACE()

Ejemplo:
UPDATE productos SET categoria_id=REPLACE(categoria_id,"verticales",1);

REVERSE()

Ejemplo:
SELECT nombre, reverse(nombre) AS alverre FROM productos;

IF()

Ejemplo:
IF(condition, value_if_true, value_if_false)
Ejemplo:
SELECT nombre, codigo, precio, if(precio > 5000,"revisar","está bien") AS estado FROM productos

Truncate

Ejemplo:
TRUNCATE TABLE `productos`

Bibliografía

Webliografía