-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathblog.sql
152 lines (113 loc) · 3.88 KB
/
blog.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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
DROP DATABASE IF EXISTS blog;
CREATE DATABASE blog;
\c blog;
CREATE TABLE usuario (
id serial PRIMARY KEY,
nome character varying(150) not null,
email character varying(150) unique,
senha text not null,
bairro text,
rua text,
nro text,
cep character(8),
data_registro date default current_date,
data_nascimento date
);
INSERT INTO usuario (nome, email, senha) VALUES
('IGOR', 'igor.pereira@riogrande.ifrs.edu.br', md5('123'));
CREATE TABLE telefone (
id serial primary key,
nro character varying(15) not null,
-- fk oriunda da tabela usuario (id serial primary key)
usuario_id integer references usuario (id)
);
CREATE TABLE categoria (
id serial primary key,
nome text not null
);
INSERT INTO categoria (nome) values ('ação');
CREATE TABLE artigo (
id serial primary key,
titulo character varying(150) not null,
texto text not null,
data_hora timestamp default current_timestamp,
usuario_id integer references usuario (id),
categoria_id integer references categoria (id)
);
INSERT INTO artigo (titulo, texto, usuario_id, categoria_id) values
('titulo', 'texto', 1, 1);
INSERT INTO artigo (titulo, texto, usuario_id, categoria_id) values
('atitulo', 'atexto', 1, 1);
CREATE TABLE curtida (
id serial primary key,
data_hora timestamp default current_timestamp,
artigo_id integer,
usuario_id integer,
FOREIGN KEY (artigo_id) references artigo (id) ON DELETE CASCADE,
FOREIGN KEY (usuario_id) references usuario (id)
);
INSERT INTO curtida (artigo_id, usuario_id) VALUES
(1, 1);
CREATE TABLE comentario (
id serial primary key,
conteudo text not null,
data_hora timestamp default current_timestamp,
artigo_id integer,
usuario_id integer,
FOREIGN KEY (artigo_id) references artigo (id) ON DELETE CASCADE,
FOREIGN KEY (usuario_id) references usuario (id)
);
-- Exercícios de Consulta (SELECT)
--1)
SELECT nome, data_nascimento FROM usuario ORDER BY nome ASC, data_nascimento DESC;
-- OFF:TOPIC:
SELECT * FROM usuario WHERE data_nascimento IS NOT NULL;
-- 2)
select * from artigo ORDER BY titulo;
--3)
SELECT * FROM usuario WHERE bairro IS NOT NULL;
-- 4)
SELECT * FROM artigo WHERE cast(data_hora as date) >= CURRENT_DATE - interval '7 days' AND cast(data_hora as date) <= CURRENT_dATE;
-- 4) com between
SELECT * FROM artigo WHERE cast(data_hora as date) between CURRENT_DATE - interval '7 days' AND CURRENT_dATE order by titulo;
-- 5)
-- off-topic: SELECt titulo, data_hora, extract(month from cast(data_hora as date)) as mes_publicacao from artigo;
-- 6)
SELECT * FROM usuario WHERE nome ILIKE 'i%';
--OFF:TOPIC: SELECT * FROM usuario WHERE nome LIKE 'I___';
-- 7)
select * from telefone where usuario_id = 1;
-- 8)
SELECT * FROM artigo where texto ILIKE '%TEXTO%';
-- 10)
SELECT * FROM usuario where cep = '12345678';
--Exercícios de Atualização (UPDATE)
--1)
UPDATE usuario SET nome = 'Igor Pereira' where id =1 ;
UPDATE usuario SET bairro = 'centro' where id =1 ;
-- 2)
update usuario set senha = md5('nova_senha') where email = 'igor.pereira@riogrande.ifrs.edu.br';
-- Exercícios de Deleção (DELETE)
--1) Delete o usuário com ID 1.
BEGIN;
DELETE FROM artigo where usuario_id = 1;
DELETE FROM curtida where usuario_id = 1;
DELETE FROM comentario WHERE usuario_id = 1;
DELETE FROM usuario where id = 1;
COMMIT;
--2)
DELETE FROM artigo WHERE extract(year from cast(data_hora as date)) < 2024;
--Delete todos os comentários associados ao artigo com ID 1.
-- jump
--Delete todas as curtidas associadas ao usuário com ID 1.
-- jump
--Delete todos os telefones associados ao usuário com ID 1.
-- jump
-- Exercícios de DDL (Data Definition Language)
-- 1) Adicione uma coluna apelido na tabela usuario.
ALTER TABLE usuario ADD COLUMN apelido text;
-- 2)
ALTER TABLE usuario DROP COLUMN bairro;
-- 3) jump
-- 4) jump
-- 5) ALTER TABLE telefone RENAME TO telefones;