Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
888
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.54 KB | None | 0 0
  1. USE MASTER;
  2. GO
  3.  
  4. BEGIN TRY
  5. DROP DATABASE SPOTIFY;
  6. END TRY
  7. BEGIN CATCH
  8. end CATCH;
  9.  
  10. CREATE DATABASE SPOTIFY;
  11. GO
  12.  
  13. USE SPOTIFY;
  14. GO
  15.  
  16. CREATE TABLE MUSICA(
  17. ID INT NOT NULL IDENTITY PRIMARY KEY,
  18. NOME VARCHAR(50) NOT NULL,
  19. DURACAO TIME NOT NULL,
  20. ANO INT
  21. );
  22.  
  23. CREATE TABLE CANTOR(
  24. ID INT NOT NULL IDENTITY PRIMARY KEY,
  25. NOME VARCHAR(100) NOT NULL,
  26. NACIONALIDADE VARCHAR(20) NOT NULL
  27. );
  28.  
  29. CREATE TABLE MUSICA_CANTOR(
  30. MUSICA_ID INT NOT NULL,
  31. CANTOR_ID INT NOT NULL,
  32. PRIMARY KEY(MUSICA_ID, CANTOR_ID)
  33. );
  34. --ALTERANDO A TABELA DE RELACIONAMENTOS PARA ADICIONAR A FK DE MUSICA
  35. ALTER TABLE MUSICA_CANTOR
  36. ADD CONSTRAINT FK_MUSICA
  37. FOREIGN KEY (MUSICA_ID)
  38. REFERENCES MUSICA(ID);
  39.  
  40. --ALTERANDO A TABELA DE RELACIONAMENTOS PARA ADICIONAR A FK DE CANTOR
  41. ALTER TABLE MUSICA_CANTOR
  42. ADD CONSTRAINT FK_CANTOR
  43. FOREIGN KEY (CANTOR_ID)
  44. REFERENCES CANTOR(ID);
  45.  
  46. --POPULAR DADOS DO CANTOR
  47. INSERT INTO
  48. CANTOR(NOME, NACIONALIDADE)
  49. VALUES
  50. ('Luan Santana', 'Brasileira'),
  51. ('Marilia Mendonça', 'Brasileira'),
  52. ('Jorge e Mateus', 'Brasileira'),
  53. ('Felipe Original', 'Brasileira'),
  54. ('MC Kevin o Cris', 'Brasileira'),
  55. ('João Gustavo e Murilo','Brasileira'),
  56. ('Matuê', 'Brasileira'),
  57. ('Matheus e Kauan', 'Brasileira'),
  58. ('Shawn Mendes', 'Canadense'),
  59. ('Camila Cabello', 'Cubana'),
  60. ('Post Malone', 'Americana');
  61.  
  62. --POPULAR DADOS DAS MUSICAS
  63. INSERT INTO
  64. MUSICA(NOME, ANO, DURACAO)
  65. VALUES
  66. ('quando a bad bater - ao vivo', 2019, '00:02:50'),
  67. ('Supera - Ao vivo', 2019, '00:03:50'),
  68. ('Tijolão - Ao vivo', 2019, '00:03:43'),
  69. ('Hit Contagiante', 2019, '00:01:00'),
  70. ('Lençol Dobrado', 2019, '00:03:55'),
  71. ('Kenny G', 2019, '00:02:55'),
  72. ('Quarta Cadeira - Ao vivo', 2019, '00:03:21'),
  73. ('Señorita', 2019, '00:04:01'),
  74. ('Circles', 2019, '00:03:51');
  75.  
  76.  
  77. --CRIAR E POPULAR TABELA DE ESTILOS MUSICAIS
  78. CREATE TABLE ESTILO_MUSICAL(
  79. ID INT NOT NULL IDENTITY PRIMARY KEY,
  80. NOME VARCHAR(50)
  81. );
  82.  
  83. INSERT INTO
  84. ESTILO_MUSICAL (NOME)
  85. VALUES
  86. ('Sertanejo'),
  87. ('Rock'),
  88. ('Podcast'),
  89. ('Eletrônica/Dance'),
  90. ('Indie'),
  91. ('Para dormir'),
  92. ('Punk');
  93.  
  94. -- CRIAR E POPULAR TABELAS DE USUARIOS
  95.  
  96. CREATE TABLE USUARIO(
  97. ID INT NOT NULL IDENTITY PRIMARY KEY,
  98. NOME VARCHAR(100) NOT NULL,
  99. ULTIMO_ACESSO DATETIME,
  100. EMAIL VARCHAR(100) NOT NULL,
  101. EMAIL_CONFIRMADO BIT NOT NULL DEFAULT 0,
  102. DATA_CADASTRO DATETIME NOT NULL DEFAULT GETDATE(),
  103. SENHA VARCHAR(50) NOT NULL
  104. );
  105.  
  106. INSERT INTO
  107. USUARIO(NOME, EMAIL, SENHA)
  108. VALUES
  109. ('João Antonio Bulgareli', 'jabulgareli@gmail.com', 'BD2019'),
  110. ('Walison Barberá', 'fafibe@gmail.com', 'FAFIBE');
  111.  
  112. INSERT INTO
  113. USUARIO(NOME, EMAIL, SENHA)
  114. VALUES
  115. ('Jean Marcelo', 'jean@gmail.com', (SELECT HASHBYTES('MD5', 'FAFIBE3')));
  116.  
  117. --CRIAR, RELACIONAR E POPULAR PLAYLIST
  118. CREATE TABLE PLAYLIST(
  119. ID INT NOT NULL IDENTITY PRIMARY KEY,
  120. NOME VARCHAR(100) NOT NULL,
  121. USUARIO_ID INT,
  122. ESTILO_MUSICAL_ID INT NOT NULL
  123. );
  124.  
  125. ALTER TABLE PLAYLIST
  126. ADD CONSTRAINT FK_ESTILO_MUSICAL
  127. FOREIGN KEY (ESTILO_MUSICAL_ID)
  128. REFERENCES ESTILO_MUSICAL(ID);
  129.  
  130. ALTER TABLE PLAYLIST
  131. ADD CONSTRAINT FK_USUARIO
  132. FOREIGN KEY (USUARIO_ID)
  133. REFERENCES USUARIO(ID);
  134.  
  135.  
  136.  
  137. CREATE TABLE PLAYLIST_MUSICA(
  138. PLAYLIST_ID INT NOT NULL,
  139. MUSICA_ID INT NOT NULL,
  140. ADICIONADA_EM DATETIME NOT NULL DEFAULT GETDATE(),
  141. PRIMARY KEY (PLAYLIST_ID, MUSICA_ID)
  142. );
  143.  
  144. ALTER TABLE PLAYLIST_MUSICA
  145. ADD CONSTRAINT FK_PLAYLIST_MUSICA_PLAYLIST
  146. FOREIGN KEY (PLAYLIST_ID)
  147. REFERENCES PLAYLIST(ID);
  148.  
  149. ALTER TABLE PLAYLIST_MUSICA
  150. ADD CONSTRAINT FK_PLAYLIST_MUSICA_MUSICA
  151. FOREIGN KEY (MUSICA_ID)
  152. REFERENCES MUSICA(ID);
  153.  
  154. -- Paramos aqui
  155.  
  156. INSERT INTO ESTILO_MUSICAL(NOME) VALUES ('Ranking');
  157.  
  158. INSERT INTO PLAYLIST(ESTILO_MUSICAL_ID, NOME, USUARIO_ID)
  159. VALUES (1, 'Sertanejo pra viajar', 1),
  160. (3, 'Eletronicas para corrigir prova', 2),
  161. (8, 'As mais tocadas do Brasil', NULL),
  162. (8, 'As mais tocadas dos Estados Unidos', NULL);
  163.  
  164. INSERT INTO PLAYLIST_MUSICA(PLAYLIST_ID, MUSICA_ID)
  165. VALUES (1, 1),
  166. (1, 2),
  167. (1, 3),
  168. (2, 8),
  169. (2, 9),
  170. (3, 1),
  171. (3, 2),
  172. (3, 3),
  173. (3, 4),
  174. (3, 5),
  175. (3, 6),
  176. (3, 7),
  177. (4, 8),
  178. (4, 9);
  179.  
  180. INSERT INTO MUSICA_CANTOR (CANTOR_ID, MUSICA_ID)
  181. VALUES (1, 1),
  182. (2, 2),
  183. (3, 3),
  184. (4, 4),
  185. (5, 4),
  186. (6, 5),
  187. (7, 6),
  188. (8, 7),
  189. (3, 7),
  190. (9, 8),
  191. (10, 8),
  192. (11, 9);
  193.  
  194. INSERT INTO USUARIO(EMAIL, NOME, SENHA)
  195. VALUES ('bruna@gmail.com', 'Bruna', '123'),
  196. ('antonio@gmail.com', 'Antonio', '123');
  197.  
  198. CREATE TABLE FAMILIA (
  199. USUARIO_ID_ADMINISTRADOR INT NOT NULL,
  200. USUARIO_ID_INTEGRANTE INT NOT NULL,
  201. PRIMARY KEY (USUARIO_ID_ADMINISTRADOR, USUARIO_ID_INTEGRANTE)
  202. );
  203.  
  204. ALTER TABLE FAMILIA ADD CONSTRAINT FK_USUARIO_USUARIO_ADMINISTRADOR FOREIGN KEY (USUARIO_ID_ADMINISTRADOR) REFERENCES USUARIO(ID);
  205. ALTER TABLE FAMILIA ADD CONSTRAINT FK_USUARIO_USUARIO_INTEGRANTE FOREIGN KEY (USUARIO_ID_ADMINISTRADOR) REFERENCES USUARIO(ID);
  206.  
  207. INSERT INTO FAMILIA VALUES (1, 3), (1, 4);
  208.  
  209. CREATE TABLE PLANO (
  210. ID INT NOT NULL PRIMARY KEY IDENTITY,
  211. NOME VARCHAR(100) NOT NULL,
  212. PRECO DECIMAL (14,2) NOT NULL
  213. );
  214.  
  215. INSERT INTO PLANO (NOME, PRECO) VALUES ('Free', 0.00), ('Família', 29.90), ('Estudante', 19.90);
  216. ALTER TABLE USUARIO ADD PLANO_ID INT NOT NULL DEFAULT 1;
  217. ALTER TABLE USUARIO ADD CONSTRAINT FK_PLANO FOREIGN KEY (PLANO_ID) REFERENCES PLANO(ID);
  218.  
  219. CREATE TABLE FATURA (
  220. ID INT NOT NULL PRIMARY KEY IDENTITY,
  221. USUARIO_ID INT NOT NULL,
  222. CRIADA_EM DATETIME NOT NULL,
  223. VENCIMENTO_EM DATETIME NOT NULL,
  224. PAGAMENTO_REALIZADO_EM DATETIME,
  225. VALOR DECIMAL(14,2) DEFAULT 0);
  226.  
  227.  
  228. INSERT INTO FATURA (USUARIO_ID, CRIADA_EM, VENCIMENTO_EM, VALOR)
  229. SELECT ID, GETDATE(), DATEADD(DAY, 15, GETDATE()), 19.99 FROM USUARIO
  230.  
  231. INSERT INTO FATURA (USUARIO_ID, CRIADA_EM, VENCIMENTO_EM, VALOR)
  232. SELECT ID, '2019-11-09', DATEADD(DAY, 15, '2019-11-09'), 21.01 FROM USUARIO
  233.  
  234. INSERT INTO FATURA (USUARIO_ID, CRIADA_EM, VENCIMENTO_EM, VALOR)
  235. SELECT ID, '2019-08-09', DATEADD(DAY, 15, '2019-08-09'), 19.99 FROM USUARIO
  236.  
  237.  
  238. /*
  239. Relatório: Usuários Ativos
  240. Campos: Código
  241. */
  242.  
  243. SELECT * FROM USUARIO;
  244.  
  245. SELECT
  246. ID AS 'CÓDIGO',
  247. NOME AS 'NOME',
  248. DATA_CADASTRO AS 'DATA DE CADASTRO'
  249. FROM
  250. USUARIO
  251. WHERE
  252. EMAIL_CONFIRMADO = 1;
  253.  
  254.  
  255. --CONFIRMANDO *TODOS* OS EMAILS LEMBREM DO WHERE
  256. UPDATE USUARIO
  257. SET
  258. EMAIL_CONFIRMADO = 1,
  259. ULTIMO_ACESSO = GETDATE();
  260.  
  261. UPDATE
  262. USUARIO
  263. SET
  264. NOME = 'BRUNA LETICIA'
  265. WHERE
  266. ID = 4;
  267.  
  268.  
  269. --COMECANDO UMA TRANSACAO
  270. BEGIN TRAN;
  271.  
  272. --UPDATE ERRADO
  273. UPDATE USUARIO SET NOME = 'NOME ERRADO';
  274.  
  275. --VOLTA AS ALTERAÇÕES (CTRL z)
  276. ROLLBACK;
  277.  
  278. --EFETIVA A TRANSAÇÃO
  279. COMMIT;
  280.  
  281. --REGISTRAR NOVO USUÁRIO
  282. INSERT INTO
  283. USUARIO(EMAIL, NOME, SENHA)
  284. VALUES
  285. ('CESAR@GMAIL.COM', 'CESAR', '1231231');
  286.  
  287. /* RELATÓRIO: USÁRIOS POR PLANO
  288. CAMPOS: CÓDIGO, NOME, QUANTIDADE DE USUÁRIOS
  289. */
  290.  
  291. SELECT * FROM USUARIO;
  292. SELECT * FROM PLANO;
  293.  
  294. SELECT
  295. PLANO.ID AS 'CÓDIGO',
  296. PLANO.NOME AS 'NOME',
  297. COUNT(*) AS 'QUANTIDADE DE USUARIOS'
  298. FROM
  299. PLANO
  300. INNER JOIN
  301. USUARIO ON USUARIO.PLANO_ID = PLANO.ID
  302. GROUP BY
  303. PLANO.ID, PLANO.NOME;
  304.  
  305. /*
  306. RELATÓRIO: RESTIMATIVA DE LUCRO POR PLANO
  307. CAMPOS: CÓDIGO, NOME, QUANTIDADE DE USUÁRIOS, PREÇO DO PLANO, A ESTIMATIVA DE LUCRO
  308. */
  309.  
  310. SELECT
  311. PLANO.ID AS 'CÓDIGO',
  312. PLANO.NOME AS 'NOME',
  313. COUNT(*) AS 'QTD DE USUÁRIOS'
  314.  
  315. SELECT *
  316. FROM
  317. PLANO
  318. LEFT JOIN
  319. USUARIO ON USUARIO.PLANO_ID = PLANO.ID
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement