-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquery Twitter MySql.sql
113 lines (96 loc) · 2.96 KB
/
query Twitter MySql.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
DROP DATABASE IF EXISTS twitter;
CREATE DATABASE twitter;
USE twitter;
DROP TABLE IF EXISTS usuario;
CREATE TABLE usuario(
id INT auto_increment PRIMARY KEY,
nombre varchar(20) NOT NULL UNIQUE,
clave varchar(20) NOT NULL);
DROP TABLE IF EXISTS publicaciones;
CREATE TABLE publicaciones(
idUsuario INT,
FOREIGN KEY(idUsuario) REFERENCES usuario(id),
id INT auto_increment PRIMARY KEY,
publicacion varchar(280),
fecha DATETIME);
DROP TABLE IF EXISTS publicacionesXhashtags;
CREATE TABLE publicacionesXhashtags(
idPublicacionHashtag int auto_increment primary key,
idPublicacion int,
idUsuario int,
hashtag varchar(100),
FOREIGN KEY (idPublicacion) REFERENCES publicaciones(id),
FOREIGN KEY (idUsuario) REFERENCES usuario(id));
DROP VIEW IF EXISTS hashtagsPopulares;
CREATE VIEW hashtagsPopulares
AS
select hashtag from publicacionesXhashtags
group by hashtag
order by count(hashtag) desc
limit 10;
DROP VIEW IF EXISTS vistaPublicacion;
CREATE VIEW vistaPublicacion
AS
select p.id, u.nombre, p.publicacion, p.fecha
FROM publicaciones as p
inner join usuario as u
on u.id = p.idUsuario
order by p.id desc;
DROP PROCEDURE IF EXISTS verificarUsuario;
DELIMITER &&
CREATE PROCEDURE verificarUsuario(in nUsuario varchar(10))
BEGIN
SELECT nombre FROM usuario WHERE nombre = nUsuario;
END &&
DROP PROCEDURE IF EXISTS verificarUsuarioYClave;
DELIMITER &&
CREATE PROCEDURE verificarUsuarioYClave(in nUsuario varchar(10), in pass varchar(10))
BEGIN
SELECT nombre,clave FROM usuario WHERE nombre = nUsuario AND clave = pass;
END &&
DROP PROCEDURE IF EXISTS registrarUsuario;
DELIMITER &&
CREATE PROCEDURE registrarUsuario(in nUsuario varchar(10), in pass varchar(10))
BEGIN
INSERT INTO usuario(nombre,clave) VALUES(nUsuario,pass);
END &&
DROP PROCEDURE IF EXISTS escribirPost;
DELIMITER &&
CREATE PROCEDURE escribirPost(in id int, in post varchar(180))
BEGIN
INSERT INTO publicaciones(idUsuario, publicacion, fecha)
VALUES(id,post,now());
END &&
DROP PROCEDURE IF EXISTS registrarHashtag;
DELIMITER &&
CREATE PROCEDURE registrarHashtag(in idPost int, in tag varchar(100))
BEGIN
INSERT INTO publicacionesXhashtags(idPublicacion, hashtag)
VALUES(idPost,tag);
END &&
DROP PROCEDURE IF EXISTS buscarUsuario;
DELIMITER &&
CREATE PROCEDURE buscarUsuario(in nombreUsuario varchar(20))
BEGIN
SELECT nombre, publicacion, fecha FROM vistaPublicacion
WHERE nombre LIKE CONCAT('%',nombreUsuario,'%');
END &&
DROP PROCEDURE IF EXISTS buscarHashtag;
DELIMITER &&
CREATE PROCEDURE buscarHashtag(in hashtag varchar(100))
BEGIN
SELECT DISTINCT(u.nombre), p.publicacion, p.fecha
FROM publicacionesXhashtags AS ph
INNER JOIN publicaciones AS p
ON p.id = ph.idPublicacion
INNER JOIN usuario AS u
ON u.id = p.idUsuario
WHERE ph.hashtag LIKE CONCAT('%', hashtag, '%');
END &&
DROP PROCEDURE IF EXISTS insertarHashtags;
DELIMITER &&
CREATE PROCEDURE insertarHashtags(in idPost int, in idU int , in tag varchar(100))
BEGIN
INSERT INTO publicacionesXhashtags(idPublicacion, idUsuario, hashtag)
VALUES(idPost,idU,tag);
END &&