( cod_func int, cod_cargo int, nome_func varchar(50), sal_func decimal(10,2) default 0, constraint pk_funcionario --tabela na qual quero que seja chave prim�ria (primary key) primary key (cod_func), constraint fk_funcionario_cargo --chave secund�ria fazendo relacionamento da tabela funcionario com a tabela cargo foreign key (cod_cargo) references cargo, constraint ch_funcionario_sal_func --informar que n�o pode haver valor negativo (constraint do tipo cheque) check (sal_func >= 0) )
select * from cargo, funcionario, dependente --comando join na forma antiga
(juntar tabelas)
select nome_cargo, nome_func, nome_dep from cargo, funcionario, dependente
select cargo.cod_cargo, funcionario.cod_func,
cod_dep from cargo, funcionario, dependente --listando o campo por exemplo (cargo.cod_cargo) dizendo a tabela antes e o campo que quer listar
select c.cod_cargo, f.cod_func, d.cod_dep
from cargo c, funcionario f, dependente d
-- cross join --
select c.cod_cargo, f.cod_func, d.cod_dep
from cargo c cross join funcionario f cross join dependente d
-- inner join --
select c.*, f.* from cargo c inner join funcionario f
on c.cod_cargo = f.cod_cargo
select f.*, d.* from funcionario f inner join dependente d
on f.cod_func = d.cod_func
select f.*, d.* from funcionario f inner join dependente d
on f.cod_func = d.cod_func where f.cod_func = 2 --forma nova com join
--ou
select f.*, d.* from funcionario f inner join dependente d
on f.cod_func = d.cod_func and f.cod_func = 2
select f.*, d.* from funcionario f, dependente d
where f.cod_func = d.cod_func and f.cod_func =2 --forma antiga do select acima
select f.*, d.* from funcionario f inner join dependente d
on f.cod_func = d.cod_func where d.nome_dep like '%du%'
-- left join --
select f.*, d.* from funcionario f left join dependente d
on f.cod_func = d.cod_func
select c.*, f.* from cargo c left join funcionario f
on c.cod_cargo = f.cod_cargo
select c.* from cargo c left join funcionario f
on c.cod_cargo = f.cod_cargo where f.cod_func is null
select c.* from cargo c left join funcionario f
on c.cod_cargo = f.cod_cargo where f.cod_func is not null
-- neste caso abaixo n�o precisa de JOIN --
select f.* from funcionario f where f.cod_cargo is null
-- right join --
select * from cargo c right join funcionario f
on c.cod_cargo = f.cod_cargo
select c.*, f.* from funcionario f right join cargo c
on f.cod_cargo = c.cod_cargo
-- full join --
select c.*, f.* from funcionario f full join cargo c
on c.cod_cargo = f.cod_cargo --n�o � full join (extra)-- select c.* from cargo c left join funcionario f on c.cod_cargo = f.cod_cargo left join dependente d on f.cod_func = d.cod_func where d.cod_dep is null
--para quando duas linhas se repetem, enxergar uma linha somente
select distinct c.* from cargo c left join funcionario f on c.cod_cargo = f.cod_cargo left join dependente d on f.cod_func = d.cod_func where d.cod_dep is null
select distinct c.* from cargo c inner join funcionario f
on c.cod_cargo = f.cod_cargo left join dependente d on f.cod_func = d.cod_func where d.cod_dep is null
select distinct c.* from cargo c inner join funcionario f
on c.cod_cargo = f.cod_cargo inner join dependente d on f.cod_func = d.cod_func