Dominando SQL: Consultas Avanzadas, Gestión de Usuarios y Operaciones de Bases de Datos

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,51 KB

Ejemplos Prácticos de Consultas SQL y Gestión de Usuarios

Gestión de Usuarios y Permisos

2. Usuarios

A continuación, se detallan los comandos para la creación y asignación de permisos a diferentes tipos de usuarios en la base de datos.

Administrador con todos los permisos
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin123';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Empleado con permisos limitados
CREATE USER 'empleado'@'localhost' IDENTIFIED BY 'empleado123';
GRANT SELECT, DELETE ON Hardware.Ordenador TO 'empleado'@'localhost';

Consultas de Selección (SELECT)

Ejemplos de consultas SQL para la recuperación y filtrado de datos.

3. Ordenadores I5 o I7 entre 500 y 1500€

SELECT * FROM Ordenador WHERE procesador IN ('I5', 'I7') AND precio BETWEEN 500 AND 1500;

4. Top 5 ordenadores más caros con I3 o I5

SELECT * FROM Ordenador WHERE procesador IN ('I3', 'I5')
ORDER BY precio DESC
LIMIT 5;

5. Precio medio, máximo y mínimo de componentes (sin Francia ni Alemania)

SELECT paisFabricacion, AVG(precio), MAX(precio), MIN(precio)
FROM Componente
WHERE paisFabricacion NOT IN ('Francia', 'Alemania')
GROUP BY paisFabricacion;

6. Ordenador más caro con más de 16GB de RAM

SELECT * FROM Ordenador
WHERE memoria > 16
ORDER BY precio DESC
LIMIT 1;

7. Modelo y procesador con algún componente con más de 2 unidades

SELECT DISTINCT modelo, procesador
FROM Ordenador o
JOIN Contiene c ON o.idOrdenador = c.idOrdenador WHERE c.unidades > 2;

8. Unidades totales de componentes fabricados en Japón o Taiwán

SELECT c.idComponente, c.nombre, SUM(co.unidades) AS total
FROM Componente c
JOIN Contiene co ON c.idComponente = co.idComponente WHERE paisFabricacion IN ('Japón', 'Taiwán')
GROUP BY c.idComponente, c.nombre;

9. Ordenadores con precio superior a cualquiera con procesador I7

SELECT * FROM Ordenador
WHERE precio > ANY (SELECT precio FROM Ordenador WHERE procesador = 'I7');

10. Nombre del componente y número de ordenadores que lo contienen (si es más de 1)

SELECT c.nombre, COUNT(DISTINCT co.idOrdenador) AS cantidad
FROM Componente c
JOIN Contiene co ON c.idComponente = co.idComponente
GROUP BY c.idComponente, c.nombre
HAVING COUNT(DISTINCT co.idOrdenador) > 1;


🛠️ DDL (Data Definition Language)

El Lenguaje de Definición de Datos (DDL) se utiliza para definir o modificar la estructura de la base de datos.

Crear tabla

CREATE TABLE nombre_tabla (
  id INT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  capital VARCHAR(100),
  poblacion BIGINT,
  pib BIGINT
);

Clave Foránea (FOREIGN KEY)

Define una relación entre dos tablas, asegurando la integridad referencial.

FOREIGN KEY (campo) REFERENCES otra_tabla(campo_clave)

Modificar tabla (ALTER TABLE)

Comandos para alterar la estructura de una tabla existente.

Añadir columna

ALTER TABLE tabla ADD nueva_columna tipo;

Eliminar columna

ALTER TABLE tabla DROP COLUMN columna;

Modificar tipo de columna

ALTER TABLE tabla MODIFY COLUMN columna NUEVO_TIPO;

Renombrar tabla

ALTER TABLE tabla RENAME TO nuevo_nombre;

Restricciones (Constraints)

Gestión de restricciones, como claves foráneas.

Añadir restricción de clave foránea

ALTER TABLE tabla ADD CONSTRAINT nombre FOREIGN KEY (campo) REFERENCES tabla_ref(clave);

Eliminar restricción de clave foránea

ALTER TABLE tabla DROP FOREIGN KEY nombre;


✏️ DML (Data Manipulation Language)

El Lenguaje de Manipulación de Datos (DML) se utiliza para gestionar los datos dentro de las tablas.

INSERT (Insertar datos)

INSERT INTO tabla (col1, col2) VALUES ('valor1', 'valor2');

UPDATE (Actualizar datos)

UPDATE tabla SET col = 'nuevo_valor' WHERE condicion;
-- ⚠️ Sin WHERE → cambia todos los registros

Con subconsulta

UPDATE tabla SET col = 'valor' WHERE otra_col = (SELECT MAX(col) FROM tabla);

DELETE (Eliminar datos)

DELETE FROM tabla WHERE condicion;


🧢 DTL (Transacciones)

El Lenguaje de Control de Transacciones (DTL) permite gestionar las transacciones en la base de datos, asegurando la atomicidad, consistencia, aislamiento y durabilidad (ACID).

START TRANSACTION;
UPDATE cuentas SET saldo = saldo - 200 WHERE id = 1;
UPDATE cuentas SET saldo = saldo + 200 WHERE id = 2;
INSERT INTO transferencias (id_origen, id_destino, monto) VALUES (1, 2, 200);
COMMIT;
-- Si algo falla: ROLLBACK;


📊 Índices

Los índices mejoran la velocidad de recuperación de datos en las bases de datos.

Crear índice

CREATE INDEX nombre_indice ON tabla (columna);

Crear índice único

CREATE UNIQUE INDEX nombre_indice ON tabla (columna);

Entradas relacionadas: