This commit is contained in:
Marklogo 2024-03-11 13:53:37 +01:00
parent 2eb0e06e7b
commit e0be3772ad
11 changed files with 538 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

View 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;

View 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

View 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

View File

@ -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);
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -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;

View 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;
}

View 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
1 1 Destornillador electrico 19.95
2 2 Teléfono móvil 299.94
3 3 Tablet 199.99
4 4 Ordenador portátil 799.85
5 5 Smartwatch 149.25
6 6 Cámara digital 249.99
7 7 Auriculares inalámbricos 99.50
8 8 Altavoz Bluetooth 78.00
9 9 Cargador USB 19.45
10 10 Teclado inalámbrico 49.35
11 11 Ratón óptico 29.75

View File

@ -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>