**************************************************************************************************************************************************************** MANEJO DE CADENAS **************************************************************************************************************************************************************** consulta: 'nombre' es el nombre de una columna en la tabla 'producto'. El número 1 indica que se empezará a extraer desde el primer carácter de la cadena. El número 5 indica que se extraerán 5 caracteres a partir de la posición de inicio (1). MariaDB [almacen2]> SELECT SUBSTR(nombre, 1, 5) AS nombre_corto FROM producto; +--------------+ | nombre_corto | +--------------+ | panta | | panta | | panta | | blusa | | blusa | | chaqu | | chaqu | | chaqu | | vesti | | vesti | | camis | | falda | | pijam | | pijam | | pijam | | sudad | | sudad | | sudad | | Vesti | | Camis | | Camis | +--------------+ 21 rows in set (0.001 sec) **************************************************************************************************************************************************************** MANEJO DE CADENAS **************************************************************************************************************************************************************** consulta: FROM producto: Indica que los datos provienen de la tabla 'producto'. WHERE nombre LIKE 'C%': Filtra los registros donde el campo 'nombre' comienza con la letra 'C'. SELECT SUBSTR(nombre, 1, 3) AS primeros_tres_caracteres: Selecciona los primeros tres caracteres del campo 'nombre' de los registros que pasaron el filtro y los muestra bajo el alias 'primeros_tres_caracteres'. MariaDB [almacen2]> SELECT SUBSTR(nombre, 1, 3) AS primeros_tres_caracteres -> FROM producto -> WHERE nombre LIKE 'C%' -> ; +--------------------------+ | primeros_tres_caracteres | +--------------------------+ | cha | | cha | | cha | | cam | | Cam | | Cam | +--------------------------+ 6 rows in set (0.001 sec) MariaDB [almacen2]> select * from producto; +------------+----------+-----------------+---------+-------+--------+-------+-------------+--------+ | idproducto | codigotp | nombre | img_ref | stock | valor | iva | valor_venta | estado | +------------+----------+-----------------+---------+-------+--------+-------+-------------+--------+ | 1 | 2 | pantalon_mujer | NULL | 111 | 100000 | 19000 | 119000 | activo | | 2 | 1 | pantalon_hombre | NULL | 110 | 80000 | 15200 | 95200 | activo | | 3 | 3 | pantalon_ni os | NULL | 110 | 70000 | 13300 | 83300 | activo | | 4 | 2 | blusa_mujer | NULL | 212 | 60000 | 11400 | 71400 | activo | | 5 | 3 | blusa_ni os | NULL | 200 | 40000 | 7600 | 47600 | activo | | 6 | 1 | chaqueta_hombre | NULL | 99 | 180000 | 34200 | 214200 | activo | | 7 | 2 | chaqueta_mujer | NULL | 146 | 150000 | 28500 | 178500 | activo | | 8 | 3 | chaqueta_ni os | NULL | 295 | 100000 | 19000 | 119000 | activo | | 9 | 2 | vestido_mujer | NULL | 300 | 80000 | 15200 | 95200 | activo | | 10 | 3 | vestido_ni os | NULL | 395 | 50000 | 13300 | 63300 | activo | | 11 | 1 | camiseta_hombre | NULL | 180 | 70000 | 13300 | 83300 | activo | | 12 | 2 | falda | NULL | 250 | 70000 | 13300 | 83300 | activo | | 13 | 1 | pijama_hombre | NULL | 190 | 40000 | 7600 | 47600 | activo | | 14 | 2 | pijama_mujer | NULL | 260 | 50000 | 9500 | 59500 | activo | | 15 | 3 | pijama_ni os | NULL | 180 | 40000 | 7600 | 47600 | activo | | 16 | 1 | sudadera_hombre | NULL | 150 | 100000 | 19000 | 119000 | activo | | 17 | 2 | sudadera_mujer | NULL | 190 | 80000 | 15200 | 95200 | activo | | 18 | 3 | sudadera_ni os | NULL | 190 | 70000 | 13300 | 83300 | activo | | 19 | 1 | Vestido_nuevo | NULL | 100 | 120000 | 20000 | 140000 | activo | | 20 | 2 | Camisa_Hombre | NULL | 300 | 100000 | 50000 | 200000 | activo | | 21 | 3 | Camisa_Hombre | NULL | 300 | 100000 | 50000 | 200000 | activo | +------------+----------+-----------------+---------+-------+--------+-------+-------------+--------+ 21 rows in set (0.000 sec) **************************************************************************************************************************************************************** MANEJO DE CADENAS **************************************************************************************************************************************************************** consulta: FROM producto: Indica que los datos provienen de la tabla 'producto'. WHERE nombre LIKE 'C%': Filtra los registros donde el campo 'nombre' comienza con la letra 'C'. SELECT SUBSTR(nombre, 1, 8) AS primeros_ocho_caracteres: Selecciona los primeros ocho caracteres del campo 'nombre' de los registros que pasaron el filtro y los muestra bajo el alias 'primeros_ocho_caracteres'. MariaDB [almacen2]> SELECT SUBSTR(nombre, 1, 8) AS primeros_ocho_caracteres -> FROM producto -> WHERE nombre LIKE 'C%'; +--------------------------+ | primeros_ocho_caracteres | +--------------------------+ | chaqueta | | chaqueta | | chaqueta | | camiseta | | Camisa_H | | Camisa_H | +--------------------------+ 6 rows in set (0.000 sec) **************************************************************************************************************************************************************** MANEJO DE CADENAS **************************************************************************************************************************************************************** La consulta en resumen hace lo siguiente: FROM producto: Indica que los datos provienen de la tabla 'producto'. WHERE nombre LIKE 'P%': Filtra los registros donde el campo 'nombre' comienza con la letra 'P'. SELECT SUBSTR(nombre, 1, 8) AS primeros_ocho_caracteres: Selecciona los primeros ocho caracteres del campo 'nombre' de los registros que pasaron el filtro y los muestra bajo el alias 'primeros_ocho_caracteres'. MariaDB [almacen2]> SELECT SUBSTR(nombre, 1, 8) AS primeros_tres_caracteres -> FROM producto -> WHERE nombre LIKE 'P%'; +--------------------------+ | primeros_ocho_caracteres | +--------------------------+ | pantalon | | pantalon | | pantalon | | pijama_h | | pijama_m | | pijama_n | +--------------------------+ 6 rows in set (0.001 sec) **************************************************************************************************************************************************************** CREAR COPIA DE UNA TABLA **************************************************************************************************************************************************************** La consulta en detalle hace lo siguiente: CREATE TABLE productos_copia: Especifica que se está creando una nueva tabla llamada productos_copia. AS SELECT idproducto, nombre, valor, estado FROM producto; Define que los datos para la nueva tabla productos_copia se obtendrán seleccionando los campos idproducto, nombre, valor, y estado de la tabla original producto. MariaDB [almacen2]> CREATE TABLE productos_copia AS -> SELECT idproducto, nombre, valor, estado -> FROM producto; Query OK, 21 rows affected (0.432 sec) Records: 21 Duplicates: 0 Warnings: 0 MariaDB [almacen2]> select * from productos_copia; +------------+-----------------+--------+--------+ | idproducto | nombre | valor | estado | +------------+-----------------+--------+--------+ | 1 | pantalon_mujer | 100000 | activo | | 2 | pantalon_hombre | 80000 | activo | | 3 | pantalon_ni os | 70000 | activo | | 4 | blusa_mujer | 60000 | activo | | 5 | blusa_ni os | 40000 | activo | | 6 | chaqueta_hombre | 180000 | activo | | 7 | chaqueta_mujer | 150000 | activo | | 8 | chaqueta_ni os | 100000 | activo | | 9 | vestido_mujer | 80000 | activo | | 10 | vestido_ni os | 50000 | activo | | 11 | camiseta_hombre | 70000 | activo | | 12 | falda | 70000 | activo | | 13 | pijama_hombre | 40000 | activo | | 14 | pijama_mujer | 50000 | activo | | 15 | pijama_ni os | 40000 | activo | | 16 | sudadera_hombre | 100000 | activo | | 17 | sudadera_mujer | 80000 | activo | | 18 | sudadera_ni os | 70000 | activo | | 19 | Vestido_nuevo | 120000 | activo | | 20 | Camisa_Hombre | 100000 | activo | | 21 | Camisa_Hombre | 100000 | activo | +------------+-----------------+--------+--------+ 21 rows in set (0.001 sec) **************************************************************************************************************************************************************** VISTAS VIEW **************************************************************************************************************************************************************** La consulta realiza lo siguiente: CREATE VIEW DetallesPedido: Indica que se está creando una vista llamada DetallesPedido. AS SELECT ...: Define la consulta que será la base de datos de la vista. En este caso, la consulta une múltiples tablas (pedido, producto, factura, y cliente) usando cláusulas JOIN para obtener información detallada sobre los pedidos. Se seleccionan varias columnas de la tabla pedido (idpedido, idfactura, idproducto, cantidad, valor_unitario, subtotal, iva, total). Se seleccionan columnas adicionales de otras tablas usando JOINs: La tabla producto se une para obtener el nombre y el valor del producto (nombre_producto, valor_producto) relacionando el idproducto. La tabla factura se une para relacionar el idfactura. La tabla cliente se une para obtener información del cliente (nombre_cliente, cedula_cliente) relacionando la cédula del cliente. El resultado final es una vista llamada DetallesPedido que presenta información detallada sobre los pedidos, incluyendo el producto, la factura y la información del cliente asociada a cada pedido. MariaDB [almacen2]> CREATE VIEW DetallesPedido AS -> SELECT p.idpedido, p.idfactura, p.idproducto, p.cantidad, p.valor_unitario, p.subtotal, p.iva, p.total, -> pr.nombre AS nombre_producto, pr.valor AS valor_producto, -> CONCAT_WS(' ', c.primer_nombre, c.segundo_nombre) AS nombre_cliente, -> c.cedula_cliente -> FROM pedido p -> JOIN producto pr ON p.idproducto = pr.idproducto -> JOIN factura f ON p.idfactura = f.idfactura -> JOIN cliente c ON f.cedula_cliente = c.cedula_cliente; Query OK, 0 rows affected (0.055 sec) MariaDB [almacen2]> select * from DetallesPedido; +----------+-----------+------------+----------+----------------+----------+--------+---------+-----------------+----------------+------------------+----------------+ | idpedido | idfactura | idproducto | cantidad | valor_unitario | subtotal | iva | total | nombre_producto | valor_producto | nombre_cliente | cedula_cliente | +----------+-----------+------------+----------+----------------+----------+--------+---------+-----------------+----------------+------------------+----------------+ | 1 | 1 | 2 | 5 | 95200 | 476000 | 76000 | 552000 | pantalon_hombre | 80000 | Silvia Lorena | 46578 | | 2 | 1 | 1 | 4 | 119000 | 476000 | 76000 | 552000 | pantalon_mujer | 100000 | Silvia Lorena | 46578 | | 3 | 2 | 4 | 3 | 71400 | 214200 | 34200 | 248400 | blusa_mujer | 60000 | Michael Steven | 985423 | | 4 | 2 | 6 | 2 | 214200 | 428400 | 68400 | 496800 | chaqueta_hombre | 180000 | Michael Steven | 985423 | | 5 | 3 | 2 | 1 | 95200 | 95200 | 15200 | 110400 | pantalon_hombre | 80000 | Maria Victoria | 11023 | | 6 | 3 | 7 | 4 | 178500 | 714000 | 114000 | 828000 | chaqueta_mujer | 150000 | Maria Victoria | 11023 | | 7 | 4 | 8 | 2 | 119000 | 238000 | 38000 | 276000 | chaqueta_ni os | 100000 | Katherin Cecilia | 1107659 | | 8 | 4 | 10 | 5 | 63300 | 316500 | 66500 | 383000 | vestido_ni os | 50000 | Katherin Cecilia | 1107659 | | 9 | 5 | 6 | 3 | 214200 | 642600 | 102600 | 745200 | chaqueta_hombre | 180000 | Cristian Camilo | 96780 | | 10 | 5 | 8 | 3 | 119000 | 357000 | 57000 | 414000 | chaqueta_ni os | 100000 | Cristian Camilo | 96780 | | 11 | 6 | 6 | 6 | 214200 | 1285200 | 205200 | 1490400 | chaqueta_hombre | 180000 | Carlos Eduardo | 11203 | | 12 | 7 | 1 | 5 | 119000 | 595000 | 95000 | 690000 | pantalon_mujer | 100000 | Maria Nataly | 96234 | | 13 | 7 | 2 | 4 | 95200 | 380800 | 60800 | 441600 | pantalon_hombre | 80000 | Maria Nataly | 96234 | +----------+-----------+------------+----------+----------------+----------+--------+---------+-----------------+----------------+------------------+----------------+ 13 rows in set (0.022 sec) **************************************************************************************************************************************************************** VISTAS VIEW **************************************************************************************************************************************************************** La consulta realiza lo siguiente: CREATE VIEW FacturasPendientes: Indica que se está creando una vista llamada FacturasPendientes. AS SELECT ...: Define la consulta que será la base de datos de la vista. En este caso, se seleccionan varias columnas de la tabla factura. Se eligen columnas específicas como idfactura, cedula_cliente, fecha, hora, subtotal, total_iva, descuento, total, idtipopago, descripcion, estado_sistema, estado_factura. La condición WHERE estado_factura = 'activo' AND total > 0 filtra los registros para seleccionar solo aquellas facturas que tienen un estado activo y un total mayor que cero. El resultado final es una vista llamada FacturasPendientes que presenta información sobre las facturas que tienen un estado activo y un total mayor que cero. Esencialmente, esta vista proporciona una lista de las facturas pendientes que cumplen con esos criterios específicos. MariaDB [almacen2]> CREATE VIEW FacturasPendientes AS -> SELECT idfactura, cedula_cliente, fecha, hora, subtotal, total_iva, descuento, total, idtipopago, descripcion, estado_sistema, estado_factura -> FROM factura -> WHERE estado_factura = 'activo' AND total > 0; Query OK, 0 rows affected (0.135 sec) MariaDB [almacen2]> select * from FacturasPendientes; +-----------+----------------+------------+----------+----------+-----------+-----------+---------+------------+-------------+----------------+----------------+ | idfactura | cedula_cliente | fecha | hora | subtotal | total_iva | descuento | total | idtipopago | descripcion | estado_sistema | estado_factura | +-----------+----------------+------------+----------+----------+-----------+-----------+---------+------------+-------------+----------------+----------------+ | 1 | 46578 | 2023-01-10 | 11:30:34 | 952000 | 152000 | 95200 | 1104000 | 1 | | activo | activo | | 2 | 985423 | 2023-02-25 | 09:27:35 | 642600 | 102600 | 64260 | 745200 | 2 | | activo | activo | | 3 | 11023 | 2023-02-25 | 11:00:00 | 809200 | 129200 | 80920 | 938400 | 1 | | activo | activo | | 4 | 1107659 | 2023-03-02 | 12:27:34 | 554500 | 104500 | 55450 | 659000 | 3 | | activo | activo | | 5 | 96780 | 2023-03-02 | 10:09:55 | 999600 | 159600 | 99960 | 1159200 | 2 | | activo | activo | | 6 | 11203 | 2023-04-12 | 07:24:10 | 1285200 | 205200 | 128520 | 1490400 | 1 | | activo | activo | | 7 | 96234 | 2023-04-12 | 11:10:03 | 975800 | 155800 | 97580 | 1131600 | 1 | | activo | activo | +-----------+----------------+------------+----------+----------+-----------+-----------+---------+------------+-------------+----------------+----------------+ 7 rows in set (0.001 sec) **************************************************************************************************************************************************************** MANEJO DE FECHAS **************************************************************************************************************************************************************** Esto devuelve todas las filas de la tabla factura donde el valor en la columna fecha está entre el 1 de enero de 2023 y el 1 de mayo de 2023, ambos inclusive. La cláusula BETWEEN '2023-01-01' AND '2023-05-01' se utiliza para filtrar los registros según la condición especificada en la columna fecha. MariaDB [almacen2]> SELECT * FROM factura WHERE fecha BETWEEN '2023-01-01' AND '2023-05-01'; +-----------+----------------+-----------------+------------+----------+----------+-----------+-----------+---------+------------+-------------+----------------+----------------+ | idfactura | cedula_cliente | cedula_empleado | fecha | hora | subtotal | total_iva | descuento | total | idtipopago | descripcion | estado_sistema | estado_factura | +-----------+----------------+-----------------+------------+----------+----------+-----------+-----------+---------+------------+-------------+----------------+----------------+ | 1 | 46578 | 110243 | 2023-01-10 | 11:30:34 | 952000 | 152000 | 95200 | 1104000 | 1 | | activo | activo | | 2 | 985423 | 10043 | 2023-02-25 | 09:27:35 | 642600 | 102600 | 64260 | 745200 | 2 | | activo | activo | | 3 | 11023 | 10043 | 2023-02-25 | 11:00:00 | 809200 | 129200 | 80920 | 938400 | 1 | | activo | activo | | 4 | 1107659 | 43418 | 2023-03-02 | 12:27:34 | 554500 | 104500 | 55450 | 659000 | 3 | | activo | activo | | 5 | 96780 | 98620 | 2023-03-02 | 10:09:55 | 999600 | 159600 | 99960 | 1159200 | 2 | | activo | activo | | 6 | 11203 | 98620 | 2023-04-12 | 07:24:10 | 1285200 | 205200 | 128520 | 1490400 | 1 | | activo | activo | | 7 | 96234 | 110243 | 2023-04-12 | 11:10:03 | 975800 | 155800 | 97580 | 1131600 | 1 | | activo | activo | | 8 | 43200 | 43418 | 2023-05-01 | 12:20:46 | 0 | 0 | 0 | 0 | 2 | | activo | activo | | 9 | 98986 | 43418 | 2023-05-01 | 10:20:46 | 0 | 0 | 0 | 0 | 4 | | activo | activo | +-----------+----------------+-----------------+------------+----------+----------+-----------+-----------+---------+------------+-------------+----------------+----------------+ 9 rows in set (0.020 sec) **************************************************************************************************************************************************************** MANEJO DE FECHAS **************************************************************************************************************************************************************** Esto devuelve todas las filas de la tabla empleado donde el valor en la columna fecha_nacimiento es posterior al 1 de enero de 1990. La cláusula WHERE fecha_nacimiento > '1990-01-01' se utiliza para filtrar los registros según la condición de que la fecha de nacimiento sea después del 1 de enero de 1990. MariaDB [almacen2]> SELECT * FROM empleado WHERE fecha_nacimiento > '1990-01-01'; +-----------------+---------------+----------------+------------------+------------------+------------------+---------------------+----------+-----------------------+----------+--------+ | cedula_empleado | primer_nombre | segundo_nombre | primero_apellido | segundo_apellido | fecha_nacimiento | direccion | telefono | correo | genero | estado | +-----------------+---------------+----------------+------------------+------------------+------------------+---------------------+----------+-----------------------+----------+--------+ | 110243 | Jaqueline | Isabel | Castrillon | Botero | 1996-08-15 | carrera50 nro 68-19 | 2124576 | lcastrillon@gmail.com | femenino | activo | +-----------------+---------------+----------------+------------------+------------------+------------------+---------------------+----------+-----------------------+----------+--------+ 1 row in set (0.023 sec) **************************************************************************************************************************************************************** MANEJO DE FECHAS **************************************************************************************************************************************************************** Esto devuelve todas las filas de la tabla factura donde el valor en la columna fecha corresponde al mes de mayo (mes 5) del año 2023. La función MONTH(fecha) = 5 se utiliza para filtrar los registros según el mes de la fecha en la columna fecha, y YEAR(fecha) = 2023 se utiliza para asegurar que estos registros correspondan al año 2023. MariaDB [almacen2]> SELECT * FROM factura WHERE MONTH(fecha) = 5 AND YEAR(fecha) = 2023; +-----------+----------------+-----------------+------------+----------+----------+-----------+-----------+-------+------------+-------------+----------------+----------------+ | idfactura | cedula_cliente | cedula_empleado | fecha | hora | subtotal | total_iva | descuento | total | idtipopago | descripcion | estado_sistema | estado_factura | +-----------+----------------+-----------------+------------+----------+----------+-----------+-----------+-------+------------+-------------+----------------+----------------+ | 8 | 43200 | 43418 | 2023-05-01 | 12:20:46 | 0 | 0 | 0 | 0 | 2 | | activo | activo | | 9 | 98986 | 43418 | 2023-05-01 | 10:20:46 | 0 | 0 | 0 | 0 | 4 | | activo | activo | | 10 | 43894 | 98620 | 2023-05-05 | 12:00:00 | 0 | 0 | 0 | 0 | 2 | | activo | activo | +-----------+----------------+-----------------+------------+----------+----------+-----------+-----------+-------+------------+-------------+----------------+----------------+ 3 rows in set (0.000 sec)