SQL
This commit is contained in:
parent
2eb0e06e7b
commit
e0be3772ad
BIN
Practicas/Practicas_SQL/codigo/COMANDOS SQL.jpg
Normal file
BIN
Practicas/Practicas_SQL/codigo/COMANDOS SQL.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 146 KiB |
83
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DDL.sql
Normal file
83
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DDL.sql
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
|
||||||
|
-- Principales comandos DDL (Data Definition Language): Utilizado para definir estructuras de bases de datos y objetos como tablas, índices, y vistas.
|
||||||
|
|
||||||
|
-- CREATE DATABASE: permite crear una base de datos
|
||||||
|
|
||||||
|
CREATE DATABASE MiBaseDeDatos
|
||||||
|
CHARACTER SET utf8mb4
|
||||||
|
COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
|
||||||
|
-- CREATE TABLE: Se utiliza para crear una nueva tabla en la base de datos.
|
||||||
|
|
||||||
|
USE MiBaseDeDatos; -- indicamos que tabla vamos a usar
|
||||||
|
|
||||||
|
CREATE TABLE departamentos (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
nombre VARCHAR(50)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE Empleados (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
nombre VARCHAR(50),
|
||||||
|
dni VARCHAR(50) UNIQUE,
|
||||||
|
salario DECIMAL(10, 2),
|
||||||
|
fecha_contratacion DATE,
|
||||||
|
departamento_id INT,
|
||||||
|
CHECK (salario < 10000),
|
||||||
|
CONSTRAINT fk_departamento
|
||||||
|
FOREIGN KEY (departamento_id)
|
||||||
|
REFERENCES departamentos(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Restricciones
|
||||||
|
Restricción Descripción
|
||||||
|
NOT NULL Indica que una columna no puede contener un valor NULL
|
||||||
|
UNIQUE Indica que cada fila de la columna debe tener un valor único
|
||||||
|
PRIMARY KEY Combinación entre NOT NULL y UNIQUE. Asegura que una o más columnas tienen una identidad única
|
||||||
|
FOREIGN KEY Asegura la integridad referencial de los datos
|
||||||
|
CHECK Asegura que el valor de una columna cumple con una condición específica
|
||||||
|
DEFAULT Establece un valor por defecto en una columna
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- ALTER TABLE: Se utiliza para modificar una tabla existente, agregando, modificando o eliminando columnas.
|
||||||
|
|
||||||
|
ALTER TABLE Empleados
|
||||||
|
ADD COLUMN departamento VARCHAR(50), -- Añade
|
||||||
|
MODIFY COLUMN salario DECIMAL(12, 2), -- Modifica el tipo
|
||||||
|
DROP COLUMN fecha_contratacion, --Elimina
|
||||||
|
RENAME TO Empleados2; -- Renombra la tabla
|
||||||
|
|
||||||
|
|
||||||
|
-- Añadir una restricción
|
||||||
|
|
||||||
|
ALTER TABLE orders -- Tabla sobre la que actuamos
|
||||||
|
ADD CONSTRAINT fk_customerNumber -- Nombre restricción
|
||||||
|
FOREIGN KEY (customerNumber) -- Restricción
|
||||||
|
REFERENCES customers(customerNumber); -- Tabla de la clave primaria
|
||||||
|
|
||||||
|
-- CREATE INDEX: Se utiliza para crear un índice en una tabla para acelerar la búsqueda de registros.
|
||||||
|
CREATE INDEX idx_nombre ON Empleados(nombre);
|
||||||
|
-- DROP INDEX: Se utiliza para eliminar un índice existente de la base de datos.
|
||||||
|
DROP INDEX idx_nombre ON Empleados;
|
||||||
|
|
||||||
|
--CREATE VIEW: Se utiliza para crear una vista, que es una tabla virtual basada en los resultados de una consulta
|
||||||
|
CREATE VIEW VistaEmpleados AS
|
||||||
|
SELECT id, nombre, salario FROM Empleados WHERE departamento = 'Ventas';
|
||||||
|
--DROP VIEW VistaEmpleados; para borrarla
|
||||||
|
|
||||||
|
--CREATE PROCEDURE: Se utiliza para crear un procedimiento almacenado, que es un conjunto de instrucciones SQL que se pueden ejecutar de forma repetida.
|
||||||
|
|
||||||
|
DELIMITER //
|
||||||
|
CREATE PROCEDURE ObtenerPedidosUsuario(usu_id INT )
|
||||||
|
BEGIN
|
||||||
|
SELECT * FROM pedidos WHERE cliente_id = usu_id;
|
||||||
|
END//
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
--Para ejecutarlo
|
||||||
|
CALL ObtenerPedidosUsuario('ID_DEL_USUARIO');
|
||||||
|
--Para borrarlo
|
||||||
|
DROP PROCEDURE ObtenerPedidosUsuario;
|
||||||
78
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DML.sql
Normal file
78
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DML.sql
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
|
||||||
|
-- Principales comandos DML (Data Manipulation Language) se utilizan para manipular los datos en una base de datos.
|
||||||
|
--SELECT: Se utiliza para recuperar datos de una o más tablas de la base de datos.
|
||||||
|
SELECT columna1, columna2 FROM tabla WHERE condicion;
|
||||||
|
|
||||||
|
--INSERT: Se utiliza para agregar nuevos registros a una tabla.
|
||||||
|
INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2);
|
||||||
|
|
||||||
|
--UPDATE: Se utiliza para actualizar registros existentes en una tabla. ¡¡¡¡¡¡¡WHERE!!!!!!!
|
||||||
|
UPDATE tabla SET columna1 = valor1, columna2 = valor2 WHERE condicion;
|
||||||
|
|
||||||
|
--DELETE: Se utiliza para eliminar registros de una tabla.
|
||||||
|
DELETE FROM tabla WHERE condicion;
|
||||||
|
|
||||||
|
--REPLACE: En MySQL, REPLACE es similar a INSERT, pero si hay un registro existente con la misma clave primaria o única, se elimina antes de insertar el nuevo registro. Si no hay conflicto, se comporta igual que INSERT.
|
||||||
|
REPLACE INTO tabla (columna1, columna2) VALUES (valor1, valor2);
|
||||||
|
|
||||||
|
--LOAD DATA INFILE: Se utiliza para cargar datos de un archivo CSV o de texto en una tabla de la base de datos.
|
||||||
|
LOAD DATA INFILE 'archivo.csv' INTO TABLE tabla;
|
||||||
|
|
||||||
|
|
||||||
|
--SELECT
|
||||||
|
--SELECT DISTINCT solo valores diferentes, no repetidos.
|
||||||
|
|
||||||
|
--Operadores WHERE establecer una condición (puede ser múltiple AND OR) y WHERE NOT.
|
||||||
|
|
||||||
|
= Igual
|
||||||
|
<> No igual (en algunas versiones de SQL es !=)
|
||||||
|
> Mayor que
|
||||||
|
< Menor que
|
||||||
|
>= Mayor o igual que
|
||||||
|
<= Menor o igual que
|
||||||
|
BETWEEN Entre un rango de valores
|
||||||
|
LIKE Buscar un patrón
|
||||||
|
IN Especifica múltiples posibles valores para una columna
|
||||||
|
LIMIT establecer un límite de filas
|
||||||
|
|
||||||
|
--LIKE para establecer patrones en combinación con WHERE
|
||||||
|
% Sustituye por cero o más caracteres
|
||||||
|
_ Sustituye por un sólo carácter
|
||||||
|
[caracteres] Establece y crea rangos de caracteres a encontrar
|
||||||
|
[^caracteres] ó [!caracteres] Establece y crea rangos de caracteres a evitar
|
||||||
|
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM productos
|
||||||
|
WHERE precio BETWEEN 50 AND 100; -- Rango entre 50 y 100
|
||||||
|
|
||||||
|
|
||||||
|
SELECT * FROM Clientes
|
||||||
|
WHERE Ciudad LIKE '%[a-j]' --Que terminen en un rango entre a-j
|
||||||
|
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM clientes
|
||||||
|
WHERE pais IN ('USA', 'Canadá', 'México'); -- Si coinciden con alguno de los valores
|
||||||
|
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM clientes
|
||||||
|
WHERE id IN (SELECT cliente_id FROM pedidos WHERE total > 1000); -- Combinando dos SELECT
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM productos
|
||||||
|
LIMIT 5 OFFSET 5; -- Limitidado a 5 registros y descartando los 5 primeros
|
||||||
|
|
||||||
|
-- LIMIT 10,5 o esta LIMIT 5 OFFSET 10
|
||||||
|
|
||||||
|
|
||||||
|
--ORDER BY (ASC|DESC)
|
||||||
|
--Ordenados según orden ascendente de NombreCliente y descendente de Ciudad
|
||||||
|
SELECT * FROM Clientes
|
||||||
|
ORDER BY NombreCliente DESC
|
||||||
|
|
||||||
|
SELECT * FROM Clientes
|
||||||
|
ORDER BY NombreCliente ASC, Ciudad DESC
|
||||||
|
|
||||||
|
|
||||||
192
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DML_2.sql
Normal file
192
Practicas/Practicas_SQL/codigo/INTRO_SQL_comandos_DML_2.sql
Normal file
|
|
@ -0,0 +1,192 @@
|
||||||
|
|
||||||
|
-- Principales comandos DML (Data Manipulation Language) se utilizan para manipular los datos en una base de datos.
|
||||||
|
--SELECT: Se utiliza para recuperar datos de una o más tablas de la base de datos.
|
||||||
|
SELECT columna1, columna2 FROM tabla WHERE condicion;
|
||||||
|
|
||||||
|
--INSERT: Se utiliza para agregar nuevos registros a una tabla.
|
||||||
|
INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2);
|
||||||
|
|
||||||
|
--UPDATE: Se utiliza para actualizar registros existentes en una tabla. ¡¡¡¡¡¡¡WHERE!!!!!!!
|
||||||
|
UPDATE tabla SET columna1 = valor1, columna2 = valor2 WHERE condicion;
|
||||||
|
|
||||||
|
--DELETE: Se utiliza para eliminar registros de una tabla.
|
||||||
|
DELETE FROM tabla WHERE condicion;
|
||||||
|
|
||||||
|
--REPLACE: En MySQL, REPLACE es similar a INSERT, pero si hay un registro existente con la misma clave primaria o única, se elimina antes de insertar el nuevo registro. Si no hay conflicto, se comporta igual que INSERT.
|
||||||
|
REPLACE INTO tabla (columna1, columna2) VALUES (valor1, valor2);
|
||||||
|
|
||||||
|
--LOAD DATA INFILE: Se utiliza para cargar datos de un archivo CSV o de texto en una tabla de la base de datos.
|
||||||
|
LOAD DATA INFILE 'archivo.csv' INTO TABLE tabla;
|
||||||
|
|
||||||
|
|
||||||
|
--SELECT
|
||||||
|
--SELECT DISTINCT solo valores diferentes, no repetidos.
|
||||||
|
|
||||||
|
--Operadores WHERE establecer una condición (puede ser múltiple AND OR) y WHERE NOT.
|
||||||
|
|
||||||
|
= Igual
|
||||||
|
<> No igual (en algunas versiones de SQL es !=)
|
||||||
|
> Mayor que
|
||||||
|
< Menor que
|
||||||
|
>= Mayor o igual que
|
||||||
|
<= Menor o igual que
|
||||||
|
BETWEEN Entre un rango de valores
|
||||||
|
LIKE Buscar un patrón
|
||||||
|
IN Especifica múltiples posibles valores para una columna
|
||||||
|
LIMIT establecer un límite de filas
|
||||||
|
|
||||||
|
--LIKE para establecer patrones en combinación con WHERE
|
||||||
|
% Sustituye por cero o más caracteres por% %es
|
||||||
|
_ Sustituye por un sólo carácter prue_a
|
||||||
|
[caracteres] Establece y crea rangos de caracteres a encontrar
|
||||||
|
[^caracteres] ó [!caracteres] Establece y crea rangos de caracteres a evitar
|
||||||
|
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM productos
|
||||||
|
WHERE precio BETWEEN 50 AND 100; -- Rango entre 50 y 100
|
||||||
|
|
||||||
|
|
||||||
|
SELECT * FROM Clientes
|
||||||
|
WHERE Ciudad LIKE '%[a-j]' --Que terminen en un rango entre a-j
|
||||||
|
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM clientes
|
||||||
|
WHERE pais IN ('USA', 'Canadá', 'México'); -- Si coinciden con alguno de los valores
|
||||||
|
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM clientes
|
||||||
|
WHERE id IN (SELECT cliente_id FROM pedidos WHERE total > 1000); -- Combinando dos SELECT
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM productos
|
||||||
|
LIMIT 5 OFFSET 5; -- Limitidado a 5 registros y descartando los 5 primeros
|
||||||
|
|
||||||
|
-- LIMIT 10,5 o esta LIMIT 5 OFFSET 10
|
||||||
|
|
||||||
|
|
||||||
|
--ORDER BY (ASC|DESC)
|
||||||
|
--Ordenados según orden ascendente de NombreCliente y descendente de Ciudad
|
||||||
|
SELECT * FROM Clientes
|
||||||
|
ORDER BY NombreCliente DESC;
|
||||||
|
|
||||||
|
SELECT * FROM Clientes
|
||||||
|
ORDER BY NombreCliente ASC, Ciudad DESC;
|
||||||
|
|
||||||
|
-- ***********Más contenido************* --
|
||||||
|
|
||||||
|
--ALIAS: para abreviar nombres de tablas y columnas, o para renombrar columnas.
|
||||||
|
--COLUMNAS
|
||||||
|
SELECT nombre
|
||||||
|
AS nombre_ciudad
|
||||||
|
FROM ciudad;
|
||||||
|
|
||||||
|
--TABLAS
|
||||||
|
SELECT ci.nombre
|
||||||
|
FROM ciudad AS ci;
|
||||||
|
|
||||||
|
--ALIAS sin AS
|
||||||
|
SELECT nombre primer_nombre, apellido
|
||||||
|
FROM empleados;
|
||||||
|
|
||||||
|
--*******************
|
||||||
|
|
||||||
|
--FUNCIONES DE AGREGACIÓN
|
||||||
|
COUNT: Calcula el número de filas en un conjunto de resultados. No cuenta los nulos.
|
||||||
|
SUM: Calcula la suma de los valores en una columna.
|
||||||
|
AVG: Calcula el promedio de los valores en una columna.
|
||||||
|
MAX: Devuelve el valor máximo en una columna.
|
||||||
|
MIN: Devuelve el valor mínimo en una columna.
|
||||||
|
|
||||||
|
| id_empleado | nombre | departamento | salario |
|
||||||
|
|-------------|----------|--------------|---------|
|
||||||
|
| 1 | Juan | Ventas | 3000 |
|
||||||
|
| 2 | María | Ventas | 3500 |
|
||||||
|
| 3 | Pedro | Recursos Hum | 4000 |
|
||||||
|
| 4 | Ana | Finanzas | 3800 |
|
||||||
|
| 5 | José | Ventas | 3200 |
|
||||||
|
|
||||||
|
--COUNT Calcula el número de filas en un conjunto de resultados. No cuenta los nulos.
|
||||||
|
SELECT COUNT(*) AS total_empleados
|
||||||
|
FROM empleados;
|
||||||
|
| total_empleados |
|
||||||
|
|-----------------|
|
||||||
|
| 5 |
|
||||||
|
|
||||||
|
--SUM Calcula la suma de los valores en una columna.
|
||||||
|
SELECT SUM(salario) AS salarios_empleados
|
||||||
|
FROM empleados;
|
||||||
|
| salarios_empleados |
|
||||||
|
|--------------------|
|
||||||
|
| 17500 |
|
||||||
|
|
||||||
|
--AVG Calcula el promedio de los valores en una columna.
|
||||||
|
SELECT AVG(salario) AS salario_promedio
|
||||||
|
FROM empleados;
|
||||||
|
| salario_promedio |
|
||||||
|
|------------------|
|
||||||
|
| 3500 |
|
||||||
|
|
||||||
|
--MAX Devuelve el valor máximo en una columna.
|
||||||
|
SELECT MAX(salario) AS salario_maximo
|
||||||
|
FROM empleados;
|
||||||
|
| salario_maximo |
|
||||||
|
|------------------|
|
||||||
|
| 4000 |
|
||||||
|
|
||||||
|
--MIN Devuelve el valor mínimo en una columna.
|
||||||
|
SELECT MIN(salario) AS salario_minimo
|
||||||
|
FROM empleados;
|
||||||
|
| salario_minimo |
|
||||||
|
|------------------|
|
||||||
|
| 3000 |
|
||||||
|
|
||||||
|
--**************
|
||||||
|
--GROUP BY
|
||||||
|
-- Para agrupar filas que comparten un valor común en una o más columnas y para aplicar funciones de agregación.
|
||||||
|
--Agregación de datos - Salario promedio por departamento:
|
||||||
|
SELECT departamento, AVG(salario) AS salario_promedio
|
||||||
|
FROM empleados
|
||||||
|
GROUP BY departamento;
|
||||||
|
| departamento | salario_promedio |
|
||||||
|
|----------------|------------------|
|
||||||
|
| Ventas | 3233.33 |
|
||||||
|
| Recursos Hum | 4000.00 |
|
||||||
|
| Finanzas | 3800.00 |
|
||||||
|
|
||||||
|
--Agrupación por departamentos
|
||||||
|
SELECT departamento, COUNT(*) AS cantidad_empleados
|
||||||
|
FROM empleados
|
||||||
|
GROUP BY departamento;
|
||||||
|
| departamento | cantidad_empleados |
|
||||||
|
|----------------|--------------------|
|
||||||
|
| Ventas | 3 |
|
||||||
|
| Recursos Hum | 1 |
|
||||||
|
| Finanzas | 1 |
|
||||||
|
|
||||||
|
|
||||||
|
--HAVING filtrar los resultados de una consulta que incluye una cláusula GROUP BY
|
||||||
|
--Filtrado de resultados
|
||||||
|
SELECT departamento, AVG(salario) AS salario_promedio --4
|
||||||
|
FROM empleados --1
|
||||||
|
GROUP BY departamento --2
|
||||||
|
HAVING AVG(salario) > 3500; --3
|
||||||
|
| departamento | salario_promedio |
|
||||||
|
|----------------|------------------|
|
||||||
|
| Recursos Hum | 4000 |
|
||||||
|
| Finanzas | 3800 |
|
||||||
|
|
||||||
|
------------*********ORDEN*********-----------
|
||||||
|
--Orden de escritura Orden de ejecución
|
||||||
|
SELECT FROM
|
||||||
|
DISTINCT JOIN
|
||||||
|
FROM WHERE
|
||||||
|
JOIN GROUP BY
|
||||||
|
WHERE HAVING
|
||||||
|
GROUP BY SELECT
|
||||||
|
HAVING DISTINCT
|
||||||
|
ORDER BY ORDER BY
|
||||||
|
LIMIT OFFSET LIMIT OFFSET
|
||||||
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
//Pasos básicos para la realización de una consulta SQL a la base de datos desde PHP
|
||||||
|
|
||||||
|
// Configuración de la conexión a la base de datos
|
||||||
|
$nombre_servidor = "localhost";
|
||||||
|
$nombre_usuario = "root";
|
||||||
|
$contraseña = "laquesea";
|
||||||
|
$nombre_base_datos = "laquesea";
|
||||||
|
|
||||||
|
// Establecer la conexión
|
||||||
|
// mysqli_connect() devuelve un identificador de la conexión y si falla devuelve false.
|
||||||
|
$conexion = mysqli_connect($nombre_servidor, $nombre_usuario, $contraseña, $nombre_base_datos);
|
||||||
|
|
||||||
|
// Verificar la conexión
|
||||||
|
if (!$conexion) {
|
||||||
|
//mysqli_conexionect_error() nos da información(una cadena) del error de conexión
|
||||||
|
exit("Error de conexión: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Crear y ejecutar la consulta
|
||||||
|
$insercion_sql = "INSERT INTO productos (nombre, precio) VALUES ('$nombre', '$precio')";
|
||||||
|
|
||||||
|
// mysqli_query() Dos parametros indentificador de conexión y consulta.
|
||||||
|
// Si la consulta es INSERT, UPDATE, DELETE, etc devolverá un valor boleano.
|
||||||
|
$resultado = mysqli_query($conexion, $insercion_sql);
|
||||||
|
|
||||||
|
//var_dump($resultado);
|
||||||
|
// Manejar el error de consulta
|
||||||
|
if (!$resultado) {
|
||||||
|
exit("Error al ejecutar la inserción: " . mysqli_error($conexion));
|
||||||
|
}else {
|
||||||
|
echo "<p>La inserción ha sido realizada</p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cerrar la conexión
|
||||||
|
mysqli_close($conexion);
|
||||||
|
?>
|
||||||
|
|
||||||
BIN
Practicas/Practicas_SQL/codigo/db-relaciontabla.jpg
Normal file
BIN
Practicas/Practicas_SQL/codigo/db-relaciontabla.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 103 KiB |
BIN
Practicas/Practicas_SQL/codigo/mapaconceptual_SQL.jpg
Normal file
BIN
Practicas/Practicas_SQL/codigo/mapaconceptual_SQL.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
|
|
@ -0,0 +1,23 @@
|
||||||
|
Alumno 04
|
||||||
|
|
||||||
|
|
||||||
|
- Precio medio de los productos(tienda)
|
||||||
|
SELECT AVG(precio) AS 'Precio medio' FROM `productos`;
|
||||||
|
|
||||||
|
- Precio total de los productos de la tienda disponibles
|
||||||
|
SELECT SUM(precio) AS 'Precio total' FROM `productos`;
|
||||||
|
|
||||||
|
- Productos que están por debajo de 100 Euros
|
||||||
|
SELECT * FROM `productos` WHERE precio<100 ORDER BY precio DESC;
|
||||||
|
|
||||||
|
- Productos que contienen "inalámbrico"
|
||||||
|
SELECT * FROM `productos` WHERE nombre like '%inalámbrico%';
|
||||||
|
|
||||||
|
- Productos cuyo precio termina en 5
|
||||||
|
SELECT * FROM `productos` WHERE precio like '%5';
|
||||||
|
|
||||||
|
- Lista de productos con precio con IVA en una columna
|
||||||
|
SELECT *,(precio*1.21) as 'Precio con iva' FROM `productos`;
|
||||||
|
|
||||||
|
- Producto con segundo mayor precio
|
||||||
|
SELECT * FROM `productos` ORDER BY precio DESC LIMIT 1 OFFSET 1;
|
||||||
58
Practicas/Practicas_SQL/ejercicios/tienda/estilo.css
Normal file
58
Practicas/Practicas_SQL/ejercicios/tienda/estilo.css
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
/* Estilos generales */
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20px;
|
||||||
|
color: #4CAF50;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Estilos para etiquetas y campos de entrada */
|
||||||
|
label {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="text"],
|
||||||
|
input[type="email"],
|
||||||
|
input[type="password"] {
|
||||||
|
width: 100%;
|
||||||
|
padding: 10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="submit"] {
|
||||||
|
background-color: #4CAF50;
|
||||||
|
color: white;
|
||||||
|
padding: 15px 20px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="submit"]:hover {
|
||||||
|
background-color: #45a049;
|
||||||
|
}
|
||||||
|
|
||||||
11
Practicas/Practicas_SQL/ejercicios/tienda/productos.csv
Normal file
11
Practicas/Practicas_SQL/ejercicios/tienda/productos.csv
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
1,Destornillador electrico,19.95
|
||||||
|
2,Teléfono móvil,299.94
|
||||||
|
3,Tablet,199.99
|
||||||
|
4,Ordenador portátil,799.85
|
||||||
|
5,Smartwatch,149.25
|
||||||
|
6,Cámara digital,249.99
|
||||||
|
7,Auriculares inalámbricos,99.50
|
||||||
|
8,Altavoz Bluetooth,78.00
|
||||||
|
9,Cargador USB,19.45
|
||||||
|
10,Teclado inalámbrico,49.35
|
||||||
|
11,Ratón óptico,29.75
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" href="estilo.css">
|
||||||
|
<title>Regsitro Productos</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<form action="" method="POST">
|
||||||
|
<label for="nombre">Nombre producto:</label><br>
|
||||||
|
<input type="text" id="nombre" name="nombre" required><br><br>
|
||||||
|
|
||||||
|
<label for="precio">Precio Producto:</label><br>
|
||||||
|
<input type="text" id="precio" name="precio" required><br><br>
|
||||||
|
|
||||||
|
<input type="submit" value="Enviar">
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||||
|
$nombre = $_POST['nombre'];
|
||||||
|
$precio = $_POST['precio'];
|
||||||
|
|
||||||
|
$nombre_servidor = "localhost";
|
||||||
|
$nombre_usuario = "root";
|
||||||
|
$contraseña = "Logomark8";
|
||||||
|
$nombre_base_datos = "tienda";
|
||||||
|
|
||||||
|
$conexion = mysqli_connect($nombre_servidor, $nombre_usuario, $contraseña, $nombre_base_datos);
|
||||||
|
if (!$conexion) {
|
||||||
|
exit("Error de conexión: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
$insercion_sql = "INSERT INTO productos (nombre, precio) VALUES ('$nombre', '$precio')";
|
||||||
|
|
||||||
|
$resultado = mysqli_query($conexion, $insercion_sql);
|
||||||
|
if (!$resultado) {
|
||||||
|
exit("Error al ejecutar la inserción: " . mysqli_error($conexion));
|
||||||
|
} else {
|
||||||
|
echo "<p>La inserción ha sido realizada</p>";
|
||||||
|
}
|
||||||
|
mysqli_close($conexion);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user