· 6 years ago · Oct 14, 2019, 09:10 AM
1
2CREATE DATABASE hosteleria;
3
4DROP TABLE restauracion;
5CREATE TABLE restauracion
6(
7 id_hotel int PRIMARY KEY,
8 nombre varchar(255) NOT NULL,
9 direccion varchar(255) ,
10 num_estrellas int(1),
11 num_habitaciones int(2),
12 pistas boolean,
13 discoteca boolean
14);
15
16INSERT INTO restauracion
17VALUES
18 (1, "Meliá Valencia", "València", 1, 90, TRUE, FALSE),
19 (2, "NH Málaga", "Málaga", 2, 85, FALSE, TRUE),
20 (3, "ME Madrid Reina Victoria", "Madrid", 4, 75, FALSE, FALSE),
21 (4, "Ejemplo", "Lugar", 1, 150, FALSE, FALSE),
22 (5, "Hostal", "Pueblo", 700, 4, TRUE, FALSE);
23SELECT *
24FROM restauracion;
25
26ALTER TABLE restauracion
27ADD beneficio int;
28
29/*
30UPDATE restauracion
31SET beneficio = 25000
32WHERE id_hotel = 3;
33SELECT * FROM restauracion;
34
35UPDATE restauracion
36SET num_estrellas = 5
37WHERE id_hotel = 3;
38SELECT * FROM restauracion;
39
40UPDATE restauracion
41SET num_estrellas = 5
42WHERE num_estrellas > 2 OR pistas = TRUE;
43SELECT * FROM restauracion;
44
45UPDATE restauracion
46SET num_estrellas = 5
47WHERE num_estrellas > 2 AND discoteca = TRUE;
48SELECT * FROM restauracion;
49
50UPDATE restauracion
51SET num_estrellas = 5
52WHERE num_estrellas >= 2 AND discoteca = TRUE AND pistas = TRUE;*/
53
54SELECT *
55FROM restauracion;
56
57/*******************************************/
58
59DROP TABLE IF EXISTS limpieza;
60CREATE TABLE limpieza
61(
62 id_empresa int PRIMARY KEY,
63 trabajadores int(4),
64 empresa varchar(255),
65 id_hotel int,
66 CONSTRAINT FK_LIMPRESTA FOREIGN KEY (id_hotel) REFERENCES restauracion(id_hotel)
67);
68
69INSERT INTO limpieza
70VALUES
71 (1, 100, "Servicios Pepito", 1),
72 (24, 34, "Catering Ejemplar", NULL),
73 (32, 457, "Construcciones LadrilloPlus", 3),
74 (436, 7, "Asesoría Pro", 7),
75 (512, 1908, "NAME_GOES_HERE", 9);
76
77SELECT *
78FROM limpieza;
79
80/********************************************/
81
82CREATE USER 'anon'@'localhost' IDENTIFIED
83BY '4chanSQL';
84
85GRANT SELECT, INSERT, * ON beneficios TO anon;
86
87--REVOKE *.* FROM beneficios TO anon;
88
89--SET DEFAULT rol TO anon;
90
91--ALTER USER anon IDENTIFIED BY "asdqwe";
92
93CREATE ROLE admin;
94
95GRANT ALL ON hosteleria.restauracion TO admin;
96
97/********************************************/
98
99DROP VIEW IF EXISTS vista_hotel;
100CREATE VIEW vista_hotel
101AS
102 SELECT id_hotel, nombre, num_habitaciones, beneficio, discoteca
103 FROM restauracion;
104
105DROP VIEW IF EXISTS vista_limpieza;
106CREATE VIEW vista_limpieza
107AS
108 SELECT id_empresa, trabajadores, id_hotel
109 FROM limpieza;
110
111/*ACTIVAR EL LOG*/
112SET GLOBAL log_output
113='table';
114
115/*DAR PERMISOS AL USUARIO*/
116GRANT ALL ON vista_hotel TO 'anon';
117GRANT ALL ON vista_limpieza TO 'anon';
118/***********************************************/
119
120CREATE VIEW beneficios
121AS
122 SELECT nombre, beneficio
123 FROM restauracion;
124
125/********************TIME TO CHANGE SOME SHIT***********************/
126UPDATE vista_hotel
127SET nombre = 'hotel_nuevo'
128WHERE num_habitaciones > 50;
129
130UPDATE vista_hotel
131SET nombre = 'hotel_marchoso'
132WHERE (num_habitaciones > 70) AND discoteca = TRUE;
133--Guess what: discoteca no necesita el = TRUE.
134
135UPDATE vista_hotel
136SET nombre = 'hotel_grande'
137WHERE ((num_habitaciones >= 100) OR (discoteca = FALSE)) AND (beneficio > 100000);
138--Remember: >= y no =>
139
140UPDATE vista_hotel
141SET nombre = 'hotel_curioso'
142WHERE nombre LIKE '%marchoso%';
143
144UPDATE vista_hotel
145SET beneficio = 100000
146WHERE num_habitaciones > 100
147ORDER BY beneficio
148LIMIT 1;