Sentencias básicas de SQL
Algunas sentencias básicas de SQL que se utilizan para la mayoría de consultas. Se trata de unas nociones básicas para saber cómo crear una base de datos, usuarios y tablas, así como inserción, actualización y eliminación de registros utilizando SQL.
Listar usuarios
select * from mysql. user
Crear usuario
Creamos un usuario llamado manolo y le asignamos una contraseña.
CREATE USER 'manolo'@'localhost' IDENTIFIED BY 'contraseñademanolo';
Crear base de datos
Creamos una base de datos de ejemplo llamada taller.
CREATE DATABASE taller;
Crear tabla
Para este ejemplo crearemos dos tablas: cliente y reparacion.
CREATE TABLE `taller`.`cliente` ( `id` INT NOT NULL AUTO_INCREMENT, `nombre` VARCHAR(15) NOT NULL, `apellido1` VARCHAR(15) NOT NULL, `nota` TEXT NOT NULL, `ultima_actualizacion` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `estado` INT(1) NOT NULL, PRIMARY KEY (`id`)) DEFAULT CHARSET=utf8;
CREATE TABLE `taller`.`reparacion` ( `id` INT NOT NULL AUTO_INCREMENT, `id_cliente` INT NOT NULL, `reparacion` TEXT NOT NULL, `precio` FLOAT(25), `cobrado` INT(1), `ultima_actualizacion` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) DEFAULT CHARSET=utf8;
Las dos tablas van a estar relacionadas por el campo de identificación del cliente.
Permisos de usuario en base de datos
Estos son los permisos que se le pueden asignar a un usuario:
ALL PRIVILEGES
CREATE
DROP
DELETE
INSERT
SELECT
UPDATE
GRANT OPTION
Si queremos asignarle todos los permisos:
GRANT ALL PRIVILEGES ON `taller`.`cliente` TO 'manolo'@'localhost';
GRANT ALL PRIVILEGES ON `taller`.`reparacion` TO 'manolo'@'localhost';
Este comando específico permite al usuario leer, editar, ejecutar y realizar todas las tareas en todas las bases de datos y tablas.
Tenga en cuenta que en este ejemplo estamos otorgando al usuario manolo acceso de root completo a todo en la base de datos taller.
Si sólo queremos asignar, por ejemplo, el permiso de lectura, podremos hacerlo así:
GRANT SELECT ON `taller`.`cliente` TO 'manolo'@'localhost';
GRANT SELECT ON `taller`.`reparacion` TO 'manolo'@'localhost';
Ver permisos de un usuario
Sentencia para ver lo permisos del usuario manolo.
SHOW GRANTS FOR 'manolo'@'localhost';
Revocar un permiso a un usuario
Con la siguiente sentencia revocaremos el permiso de lectura al usuario manolo.
REVOKE SELECT ON `taller`.`cliente` FROM 'manolo'@'localhost';
Eliminar un usuario
DROP USER 'manolo'@'localhost';
Añadir clave externa (FOREIGN KEY)
ALTER TABLE `taller`.`reparacion` ADD FOREIGN KEY (id_cliente) REFERENCES `taller`.`cliente`(id);
Añadir restricción entre tablas
ALTER TABLE `taller`.`reparacion` ADD CONSTRAINT FK_ClienteReparacion FOREIGN KEY (id_cliente) REFERENCES `taller`.`cliente`(id) ON DELETE CASCADE;
Eliminar restricción entre tablas
ALTER TABLE `taller`.`reparacion` DROP FOREIGN KEY FK_ClienteReparacion;
Inserción de una fila
A modo de ejemplo, crearemos un cliente en la tabla principal y dos reparaciones realizadas a ese mismo cliente.
INSERT INTO `taller`.`cliente` (`nombre`, `apellido1`, `nota`, `estado`)
VALUES ( 'Antonio', 'Gómez', 'Siempre paga al contado.', '1');
INSERT INTO `taller`.`reparacion` (`id_cliente`, `reparacion`, `precio`, `cobrado`)
VALUES ('1', 'Cambio de aceite Seat Ibiza matrículo 4587HKK', '78', '1');
INSERT INTO `taller`.`reparacion` (`id_cliente`, `reparacion`, `precio`, `cobrado`)
VALUES ('1', 'Reparación de la aleta derecha Seat Ibiza matrículo 4587HKK', '321.50', '1');
Consulta en tabla
Con la siguiente consulta listaremos todos los clientes que tengan como estado el valor 1. Este es el ejemplo de consulta más sencillo.
SELECT * FROM `taller`.`cliente` WHERE estado=1;
Consulta en varias tablas
Realizamos una consulta en la que necesitamos cargar los clientes y las reparaciones de cada uno de ellos.
SELECT c.nombre, c.apellido1, r.reparacion, r.precio, r.cobrado
FROM `taller`.`cliente` c
LEFT JOIN `taller`.`reparacion` r
ON c.id=r.id_cliente;
Actualización de una fila
Modificaremos un valor en la tabla de cliente.
UPDATE `taller`.`cliente` SET `nota` = 'Siempre paga al contado. Solicita factura por email.'
WHERE `cliente`.`id` = 1;
Eliminación de una fila
Ejemplo de cómo eliminar una fila, según el id.
DELETE FROM `taller`.`reparacion` WHERE id=1;
Vaciar tabla
Es importante no confundir esta sentencia con la de eliminación de una tabla.
TRUNCATE TABLE `taller`.`reparacion`;
Eliminar tabla
Ejemplo de cómo eliminar una tabla en SQL.
DROP TABLE `taller`.`reparacion`;
Eliminar base de datos
DROP DATABASE `taller`;
Eliminar usuario
DROP USER `manolo`@`localhost`;