Please enable JavaScript.
Coggle requires JavaScript to display documents.
Mso SQL / sql Instructions (SQL (DTL (Data Transaction Language) (Begin,…
Mso SQL / sql Instructions
SQL other coogle.it
https://coggle.it/diagram/WcFB55b4bAABOZDS/t/sql
DQL - Data Query Language
SQL
DCL
Grant
Revoke
DQL /SELECT
DDL
CREATE
Functions
IF/ELSE
https://www.postgresql.org/docs/9.6/static/plpgsql-control-structures.html
drop function nome_funcao(var1 tipo,... ,varN tipo);
create function nome_funca(var1 tipo1,..,varN tipoN) returns tipo
as $$
select $1 + $2
$$
LANGUAGE SQL
Volatile Functions
https://www.postgresql.org/docs/current/static/xfunc-volatility.html
modifica comportaento da funcao
VOLATILE, STABLE, or IMMUTABLE
Trigger
https://www.postgresql.org/docs/9.6/static/sql-createtrigger.html
CREATE TRIGGER creates a new trigger. The trigger will be associated with the specified table or view and will execute the specified function function_name when certain events occur.
Table
Primary key (column)
Foreign Key (column) referece otherTable (column_key)
Role
DROP
ALTER
CONCEITOS IMPORTANTES
ACID
Consistência
Isolamento
Durabilidade
Atomicidade
Indivisível, execute tudo ou retorne ao estado original
Manipulação de erros
https://www.postgresql.org/docs/9.6/static/ecpg-errors.html
Implementação Herança no Database
Exemplo de Implementação (Pessoa--> Estudante, Professor, Pai)
https://www.devmedia.com.br/implementando-heranca-de-tabela-no-sql-server-parte-03/12921
Pode ser voltado para performance ou normalização
Performance
pode aplicar tabela desnormalizada unindo todos os tipos de elementos/classes na mesma tabela
Normalização
Pode ser subdividido em várias tabelas (ex: Pessoa-->Estudante)
DML
UPDATE
DELETE
INSERT
Reference:
https://www.postgresql.org/docs/current/static/sql-insert.html
ON CONFLICT
conflict_action
DO NOTHING
Example
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO NOTHING;
DO UPDATE SET
Example
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.id + 1;
conflict_target
Insert with MD5
insert into funcionario values (21,'Maria',md5('password'),'2007-12-15')
Bases de Testes
Empresa
Cliente Perfil Produto
https://github.com/projetosdatamining/database_perfil_cliente_produto
Locadora
https://github.com/discipbd2/base-de-testes-locadora
DTL (Data Transaction Language)
Begin
Commit
Rollback
Savepoint
DTL - Data Transaction Language
map_prova (prova)
1 - conceitos chave
conceptual model
association
relationship
Primeira letra maiúscula
cadinality
1:1
0:1
1:N
0:N
Entity
Letras maiúsculas
Atributes
letras minúsculas
N:N = nova tabela
2 - conceitos chave
a) DDL
Create Table
resposta:
Create table produto (cod_produto int primary key, nome varchar(80) , preco_venda float, data_aquisicao data, preco_aquisicao float, qtd_estoque int);
b) DML
insert
insert into produto (cod_produto, nome, preco_venda,data_aquisicao,preco_aqusicao,qtd_estoque) values (1,'produto01',10.00,'10/06/2018', 8.00,10), (5, 'produto02', 30.00,'11/06/2018',25.00,20);
c) DML
update
update produto set preco_venda = 35 where cod_produto =5
d) DQL
select
select cod_produto, nome, preco_venda, preco_aquisicao, qtd_estoque where cod_produto =5 or preco_aquisicao <10
e) DML
delete
delete from produto where cod_produto = 1 or nome = 'produto02'
3 - conceitos chave
DQL
select
group by
funções agregação
SUM
COUNT
Order by sum(qtd)
Planejamento
Atributos envolvidos (operadores aritmeticos e funcoes de agregação)
Atributos
cli.nome
COUNT(comp.cod_compra)
SUM(comp.qtd))
tabelas envolvidas com joins
cliente as cli, compra as comp on cli.cod_cliente = comp.fk_cliente)
where, subconsultas (in) operadores lógicos e parenteses
não necessário
group by e having
cli.nome
order by (asc,desc) e limit/offset
order by SUM(qtd) desc
Solução:
select cli.nome,
COUNT(comp.cod_compra)
SUM(comp.qtd)
from cliente as cli
inner join
compra as comp
on (cli.cod_cliente = comp.fk_cliente)
GROUP BY cli.nome
ORDER BY sum(comp.qtd) desc
4 - conceitos chave
Planejamento
Atributos envolvidos (operadores aritmeticos e funcoes de agregação)
atributos
cli.cod_cliente
cli.nome
prod.nome
cli.sexo
prod.preco_aquisicao
tabelas envolvidas com joins
cliente, produto, compra, perfis
cliente as cli inner join compra as comp on (cli.cod_cliente = comp.fk_cliente)
inner join produto prod on (prod.cod_produto = comp.fk_produto)
inner join perfil perf on (perf.cod_perfil = cli.fk_perfil)
where, subconsultas (in) operadores lógicos e parenteses
where (cli.nome like '%/c%' or cli.sexo = 'F') and (perf.cod_perfil =1000 or perf.cod_perfil =4000)
order by (asc,desc) e limit/offset
order by prod.nome desc
group by e having
nenhum
select
a ) atributos
junção de múliplas tabelas com uso do inner join
c) definição de operações predecessoras com uso do parenteses
d) ordenação de forma descendente