--CRIACAO DE TABELAS CREATE TABLE TAB_PAIS
(COD_PAIS VARCHAR2 (2) NOT NULL, NOME_PAIS VARCHAR2(50) NOT NULL, POP_PAIS NUMBER (12,2),
CONSTRAINT PK_PAIS PRIMARY KEY (NOME_PAIS) );
CREATE TABLE TAB_ESTADO (COD_ESTADO VARCHAR2(2), NOME_ESTADO VARCHAR(35),
SIGLA_ESTADO VARCHAR2(2) NOT NULL, POP_ESTADO NUMBER (12,2),
PAIS VARCHAR2(50),
CONSTRAINT PK_ESTADO PRIMARY KEY (SIGLA_ESTADO) );
ALTER TABLE TAB_ESTADO ADD CONSTRAINT FK_ESTADO FOREIGN KEY (PAIS) REFERENCES TAB_PAIS (NOME_PAIS);
CREATE TABLE TAB_CIDADE
(COD_CIDADE VARCHAR2 (2) NOT NULL, NOME_CIDADE VARCHAR2 (50) NOT NULL, SIGLA_ESTADO VARCHAR2(2) NOT NULL, POP_CIDADE NUMBER (12,2),
Constraint PK_CIDADE primary key (NOME_CIDADE, SIGLA_ESTADO) );
ALTER TABLE TAB_CIDADE ADD CONSTRAINT FK_CIDADE FOREIGN KEY (SIGLA_ESTADO) REFERENCES TAB_ESTADO (SIGLA_ESTADO);
--INSERIR DADOS NA TABELA PAIS
INSERT INTO TAB_PAIS (COD_PAIS,NOME_PAIS) VALUES ('1','BRASIL') INSERT INTO TAB_PAIS (COD_PAIS,NOME_PAIS) VALUES ('2','ARGENTINA') INSERT INTO TAB_PAIS (COD_PAIS,NOME_PAIS) VALUES ('3','EUA')
INSERT INTO TAB_PAIS (COD_PAIS,NOME_PAIS) VALUES ('4','FRANÇA') INSERT INTO TAB_PAIS (COD_PAIS,NOME_PAIS, POP_PAIS) VALUES ('5','ALEMANHA',12000000)
--INSERIR DADOS NA TABELA ESTADO
INSERT INTO TAB_ESTADO (COD_ESTADO, NOME_ESTADO, SIGLA_ESTADO, PAIS) VALUES('1','SÃO PAULO','SP','BRASIL')
INSERT INTO TAB_ESTADO (COD_ESTADO, NOME_ESTADO, SIGLA_ESTADO, PAIS) VALUES('2','MINAS GERAIS','MG','BRASIL')
INSERT INTO TAB_ESTADO (COD_ESTADO, NOME_ESTADO, SIGLA_ESTADO, PAIS) VALUES('3','RIO DE JANEIRO','RJ','BRASIL')
INSERT INTO TAB_ESTADO (COD_ESTADO, NOME_ESTADO, SIGLA_ESTADO, PAIS) VALUES('4','RIO GRANDE DO SUL','RS','BRASIL')
INSERT INTO TAB_ESTADO (COD_ESTADO, NOME_ESTADO, SIGLA_ESTADO, PAIS) VALUES('5','TEXAS','TX','EUA')
INSERT INTO TAB_ESTADO (COD_ESTADO, NOME_ESTADO, SIGLA_ESTADO, PAIS) VALUES('6','PLATINA','PL','ARGENTINA')
INSERT INTO TAB_ESTADO (COD_ESTADO, NOME_ESTADO, SIGLA_ESTADO) VALUES('7','PARANA','PR')
--INSERIR DADOS NA TABELA CIDADE
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('1','ORLANDIA','SP',60000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('2','ARARAQUARA','SP',230000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('3','BELO HORIZONTE','MG',1500000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('4','UBERLANDIA','MG',800000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('5','UBERABA','MG',760000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('6','PORTO ALEGRE','RS',2000000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('7','PELOTAS','RS',150000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('8','PASSO FUNDO','RS',102000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('9','RIO DE JANEIRO','RJ',3000000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('10','VOLTA REDONDA','RJ',160000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('11','BOTAFOGO','RJ',95000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('12','DALAS','TX',1800000)
INSERT INTO TAB_CIDADE (COD_CIDADE, NOME_CIDADE,SIGLA_ESTADO,POP_CIDADE) VALUES ('13','MAR DEL PLATA','PL',1600000);
---ALTERANDO O NOME DA TABELA
ALTER TABLE DEPTO
RENAME TO TAB_DEPARTAMENTO
---ADICIONANDO COLUNAS A TABELA
ADICIONAR A COLUNA "NOME_CHEFE" ALTER TABLE TAB_DEPARTAMENTO ADD NOME_CHEFE CHAR(12);
---ALTERANDO TIPO DE DADOS DE UMA TABELA
ALTER TABLE TAB_DEPARTAMENTO MODIFY NOME_CHEFE VARCHAR2(40);
---ALTERANDO NOME DE COLUNAS DE UMA TABELA
ALTER TABLE TAB_DEPARTAMENTO
RENAME COLUMN NOME_CHEFE TO RESPONSAVEL
---APAGANDO TABELAS
SELECT TABLE_NAME FROM USER_TABLES; DROP TABLE TAB_DEPARTAMENTO
---UPDATE NA TABELA PAIS
UPDATE TAB_PAIS
SET NOME_PAIS = 'ALEMANHA' WHERE NOME_PAIS = 'FRANÇA';
---DELETE NA TABELA PAIS
DELETE FROM TAB_PAIS WHERE COD_PAIS = 4 ---CRIANDO TABELA --################################# OPERADORES RELACIONAIS ############################################## -- = igual a -- > maior que -- >= maior e igual a -- < menor que -- <= menor e igual a
SELECT NOME_CIDADE, POP_CIDADE FROM TAB_CIDADE WHERE POP_CIDADE > 900000
SELECT NOME_CIDADE, POP_CIDADE FROM TAB_CIDADE WHERE POP_CIDADE >= 2000000
SELECT NOME_CIDADE, POP_CIDADE FROM TAB_CIDADE WHERE POP_CIDADE < 150000
SELECT NOME_CIDADE, POP_CIDADE FROM TAB_CIDADE WHERE POP_CIDADE <= 150000
--############################### OPERADORES SQL(BETWEEN/AND, IN, LIKE, IS NULL) ####################################
SELECT NOME_CIDADE, POP_CIDADE FROM TAB_CIDADE WHERE POP_CIDADE BETWEEN 150000 AND 760000
SELECT NOME_CIDADE, SIGLA_ESTADO FROM TAB_CIDADE WHERE SIGLA_ESTADO IN ('TX','MG','BA')
--LIKE(%):USANDO O OPERADOR LIKE É POSSÍVEL SELECIONAR LINHAS COMBINANDO --PARÂMETROS ALFANUMÉRICOS, MUITO ÚTIL QUANDO NAO SE CONHECE TOTALMENTE O DADO
--PROCURADO
SELECT * FROM TAB_CIDADE
WHERE NOME_CIDADE LIKE '%LANDIA' PALAVRAS QUE TENHA
SELECT * FROM TAB_CIDADE WHERE NOME_CIDADE LIKE 'P%'
SELECT NOME_PAIS, POP_PAIS FROM TAB_PAIS WHERE POP_PAIS IS NULL
SELECT NOME_CIDADE, POP_CIDADE FROM TAB_CIDADE WHERE POP_CIDADE NOT BETWEEN 95000 AND 2000000
--################### FUNÇÕES DE GRUPO OU AGREGAÇÃO(AVG, COUNT, SUM, MAX, MIN) ##########################
SELECT AVG(POP_CIDADE) FROM TAB_CIDADE WHERE POP_CIDADE < 100000
SELECT COUNT (NOME_PAIS) FROM TAB_PAIS
SELECT SUM(POP_CIDADE) AS "TOTAL" FROM TAB_CIDADE WHERE SIGLA_ESTADO = 'SP'
SELECT MAX(POP_CIDADE) FROM TAB_CIDADE WHERE SIGLA_ESTADO = 'SP'
SELECT SIGLA_ESTADO, MAX(POP_CIDADE) FROM TAB_CIDADE WHERE SIGLA_ESTADO = 'SP' GROUP BY SIGLA_ESTADO
SELECT MIN(POP_CIDADE) AS "MENOR POPULAÇÃO" FROM TAB_CIDADE WHERE SIGLA_ESTADO = 'RJ'
SELECT DISTINCT SIGLA_ESTADO FROM TAB_CIDADE SELECT department, SUM(sales) as "Total sales" FROM order_details
GROUP BY department;
SELECT C.SIGLA_ESTADO, SUM(c.pop_cidade) AS "TOTAL DE POP." FROM TAB_CIDADE C GROUP BY SIGLA_ESTADO
SELECT C.SIGLA_ESTADO, SUM(c.pop_cidade) AS "TOTAL DE POP." FROM TAB_CIDADE C GROUP BY SIGLA_ESTADO
HAVING SUM(c.pop_cidade) > 1500000
SELECT C.SIGLA_ESTADO, SUM(c.pop_cidade) AS "TOTAL DE POP." FROM TAB_CIDADE C GROUP BY SIGLA_ESTADO
HAVING SUM(c.pop_cidade) > 1500000 ORDER BY C.SIGLA_ESTADO DESC
--############################################################################# #########################
-- MINUS SELECT SIGLA_ESTADO FROM TAB_ESTADO MINUS
SELECT SIGLA_ESTADO FROM TAB_ESTADO WHERE SIGLA_ESTADO = 'RJ'
-- UNION SELECT SIGLA_ESTADO FROM TAB_ESTADO WHERE SIGLA_ESTADO = 'RJ'
UNION
SELECT SIGLA_ESTADO FROM TAB_ESTADO WHERE SIGLA_ESTADO = 'SP'
-- JOINS
--INNER JOIN:TRARÁ COMO RESULTADO SOMENTE REGISTROS QUE POSSUEM OS CAMPOS --PESQUISADOS PREENCHIDOS NAS RESPECTIVAS TABELAS.
SELECT P.NOME_PAIS, E.NOME_ESTADO FROM TAB_ESTADO E, TAB_PAIS P WHERE P.NOME_PAIS = E.PAIS
--ESTE JOIN RETORNA 6 LINHAS, OU SEJA, SOMENTE OS PAISES QUE POSSUEM ALGUM ESTADO
--CADASTADO
--OUTER JOIN:INDICADO PELO SINAL DE ADIÇÃO ENTRE PARENTESE "(+)" TRARÁ AO MENOS
--UM DOS CAMPOS CONTANTES NA CLAUSULA SELECT.
SELECT P.NOME_PAIS, E.NOME_ESTADO FROM TAB_ESTADO E, TAB_PAIS P WHERE P.NOME_PAIS = E.PAIS(+)
--NESTE JOIN SERÁ RETORNADO 8 LINHAS CONTENDO PAISES QUE POSSUEM E QUE NAO --POSSUEM ESTADO CADASTRADO, COMO E O CASO DA ALEMANHA E FRANÇA.
--AMBOS NAO POSSUEM ESTADO CADASTRADO
--EXECUTANDO A CONSULTA ABAIXO, TEREMOS COMO RETORNO 14 LINHAS, ISSO PORQUE NAO
--HÁ NENHUMA CIDADE CADASTRADA COM O ESTADO PARANA
select E.NOME_ESTADO, E.SIGLA_ESTADO, c.nome_cidade from tab_cidade c, TAB_ESTADO E
wherE E.SIGLA_ESTADO = C.SIGLA_ESTADO (+)
--CASO EXECUTEMOS O OUTER JOIN ABAIXO, TRAREMOS APENAS 13 REGISTROS, VISTO QUE
--NESTA MODALIDADE SÓ SERÁ RESULTADO SATISFATÓRIO OS ESTADOS QUE POSSUIREM --ALGUMA CIDADE.
select E.NOME_ESTADO, E.SIGLA_ESTADO, c.nome_cidade from tab_cidade c, TAB_ESTADO E
wherE E.SIGLA_ESTADO = C.SIGLA_ESTADO
--############################################################################# #########################
-- SUBQUERY --SUBQUERY/WHERE:
SELECT * FROM TAB_CIDADE C
WHERE C.SIGLA_ESTADO = (SELECT E.SIGLA_ESTADO FROM TAB_ESTADO E WHERE E.SIGLA_ESTADO = 'SP')
--SUBQUERY/FROM:
SELECT SUB1.NOME_CIDADE, SUB1.SIGLA_ESTADO FROM (SELECT * FROM TAB_CIDADE)SUB1
WHERE SUB1.SIGLA_ESTADO = 'RJ' --SUBQUERY/SELECT:
SELECT E.NOME_ESTADO, E.SIGLA_ESTADO, (SELECT SUM(C.POP_CIDADE) FROM TAB_CIDADE C
WHERE C.SIGLA_ESTADO ='MG') AS "TOTAL DE GENTE" FROM TAB_ESTADO E WHERE E.SIGLA_ESTADO = 'MG'
SELECT C.NOME_CIDADE, P.NOME_PAIS FROM TAB_CIDADE C, TAB_ESTADO E, TAB_PAIS P WHERE P.NOME_PAIS = E.PAIS AND
E.SIGLA_ESTADO = C.SIGLA_ESTADO AND P.NOME_PAIS = 'ARGENTINA'