Sentencias básicas de SQL

Sentencias básicas de SQL

Mysql

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

Leave a reply