Buscar

11 - SQL

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

*
*
 Prof: Márcio Soussa Centro Universitário Jorge Amado
*
 
		Referências Bibliográficas
 Sistemas de Banco de Dados, Navathe
 Introdução a Sistemas de Bancos de Dados, C.J. Date, Ed. Campus.
 Sistema de Banco de Dados, A Silberschatz, H.F. Korth, Ed. Makron Books
 
*
SQL Introdução
 Motivação: sistemas de banco de dados comerciais precisam de uma linguagem de consulta mais fácil para o usuário. 
Não se trata apenas de uma linguagem de consulta (inclui recursos para definição da estrutura de dados, para modificação de dados no banco de dados e para a especificação de restrições de segurança) 
*
SQL Histórico
Versão original IBM, chamava-se Sequel
implementada em 1970
Evoluiu e passou a chamar-se SQL (Structured Query Language) 
Existem vários produtos no mercado que suportam SQL (Oracle, SQL Server, Sybase)
*
SQL Histórico
1986: American National Standards Institute (ANSI) e a International Standards Organization (ISO) publicaram padrões para SQL ( SQL-86)
1987: IBM publica seus padrões - Systems Application Architecture Database Interface (SAA-SQL)
versão em uso: padrão ANSI/ISO SQL (SQL-92)
*
SQL Características
DDL - Linguagem de definição de dados (Data-definition Language) 
Definição das estruturas e esquemas
Definição de visões dos usuários
Definição de restrições de integridade
Definição de segurança e autorizações
Controle de transações
DML - Linguagem de manipulação de dados (Data-manipulation Language) 
Consultas
Inserções, Atualizações e Deleções
Pode ser embutida em outras linguagens
*
SQL DDL (Data Definition Language)
Alguns domínios aceitos por SQL-92:
char (n)	varchar(n)
Int			smallint
Numeric	real, double precision
float(n)		date
time 
Domínios criados por usuário:
Create domain nome_pessoa char(20)
*
SQL DDL (Data Definition Language)
CREATE TABLE
Create table R (A1 D1, A2 D2,.....,An Dn)
			<regras de integridade1>
			<regras de integridade2>
			.....
			<regras de integridaden>
ALTER TABLE
Adicionar ou retirar atributos
Alterar definição de coluna
Adicionar ou retirar restrições de tabela
Alter table R Add/Drop A Tipo do atributo
		DROP TABLE
			Drop table R
*
SQL DDL (Data Definition Language)
create table Empregado
 (nome varchar(20) not null,
 rua varchar(30),
 cod_cidade int not null,
 primary key (nome),
	 foreign key (codigo) references cidade)
create table cidade
 (codigo int not null,
 nome varchar(15) not null,
 UF char(02),
	 primary key codigo),
 check (UF in (“BA”, “RJ”)))
*
SQL DDL (Data Definition Language)
create table Empregado
 (codigo int identity,
 nome varchar(45) not null,
	 sexo char(1) default ‘F’,
	 RG int unique not null,
	 CPF int unique not null,
	 datanasc smalldatetime not null,
	 codcargo int,
	 telefone varchar(10),
	 dataatualizacao smalldatetime default getdate(),
	 primary key (codigo),
	 foreign key (codcargo) references Cargo on delete 		set null on update cascade,
	 check (sexo in (‘F’, ‘M’)))		
*
*
SQL DDL (Data Definition Language)
DROP TABLE
Remove a tabela
	 Drop table Empregado
*
*
*
ALTER TABLE
 Adicionar coluna em uma tabela
	ALTER TABLE Cargo ADD sigla char(5)
 Alterar coluna em uma tabela
	ALTER TABLE Cargo Alter column sigla varchar(10) 	 		
 Excluir coluna em uma tabela
 	ALTER TABLE Cargo DROP column sigla
SQL DDL (Data Definition Language)
*
*
*
 Adicionar uma restrição de verificação (CHECK) a uma tabela
	ALTER TABLE Cargo ADD CONSTRAINT simbolo
	check (simb in (‘A’, ‘B’, ‘C’))
Remover uma restrição de verificação
	ALTER TABLE Cargo DROP CONSTRAINT 	simbolo
	
SQL DDL (Data Definition Language)
*
*
SQL DDL (Data Definition Language)
Adicionar uma chave primária 
	ALTER TABLE Funcao ADD CONSTRAINT pk_codigo 	PRIMARY KEY (codigo)
Adicionar uma chave estrangeira em uma tabela
	ALTER TABLE Empregado ADD CONSTRAINT 	fk_codfuncao FOREIGN KEY (codFuncao) 	REFERENCES Funcao (codigo)
	
*
*
Comandos de Manipulação de dados
INSERT ( Inserção de dados )
INSERT INTO CARGO (codigo, nome, simb) VALUES 
( 1, ‘PROGRAMADOR’, ’PRG’ )
	INSERT INTO empregadonovo (nome, sexo, rg, cpf, 	datanasc, codcargo, telefone)
	SELECT nome, sexo, rg, cpf, datanasc, codcargo, 	telefone FROM empregado WHERE codigo <= 5
*
*
Comandos de Manipulação de dados
DELETE (Deleção de dados)
DELETE FROM Cargo
WHERE CODIGO = 1
DELETE FROM EMPREGADONOVO
DELETE FROM EMPREGADO
WHERE CODIGO NOT IN
(SELECT COD_EMPREGADO FROM DEPENDENTE)
*
*
Comandos de Manipulação de dados
UPDATE (Atualização de dados)
UPDATE CARGO 
SET codigo = 20
WHERE codigo = 1
UPDATE EMPRESA SET PORTE = ‘M’
WHERE COD_EMPRESA IN (
SELECT COD_EMPRESA FROM FATURAMENTO
WHERE TOTAL_FATURADO_ANO < 150000)
*
*
Comandos de uma Consulta
SELECT <lista de atributos>
FROM <lista de tabelas>
[ WHERE <condição> ]
[ GROUP BY <atributos de agrupamento> ]
[ HAVING <condição de agrupamento> ]
[ ORDER BY <lista de atributos> ] 
*
SQL DML (Data Manipulation Language)
 A cláusula select: corresponde à operação de projeção da álgebra relacional por ser usada para relacionar os atributos desejados no resultado de uma consulta
A cláusula from: corresponde à operação de produto cartesiano da álgebra relacional, pois, associa as relações que serão pesquisadas durante a evolução de uma expressão
*
SQL DML (Data Manipulation Language)
A cláusula where: corresponde à seleção do predicado da álgebra relacional, pois, consiste em um predicado envolvendo atributos da relação que aparece na cláusula from
Consultas básicas
 SELECT * FROM EMPREGADO 
 SELECT nome, cpf FROM empregado WHERE 
	sexo = “F” AND codcargo = 1
 
*
*
Comando order by asc/desc : controla a ordem através da qual as tuplas de uma relação serão apresentadas
select * from empregado
	where empregado.cod_cidade = 7
	order by nome
select codcargo, nome FROM EMPREGADO 	ORDER BY codcargo, nome
select codcargo, nome FROM EMPREGADO 	ORDER BY codcargo desc, nome asc	
*
*
Comando Distinct 
	Retorna tuplas sem duplicatas
	select distinct codcargo from EMPREGADO
 	
	select distinct codcargo, sexo from EMPREGADO
Comando Rename
Renomeia atributos e tabelas
Exemplo: nome_antigo as nome_novo
select nome, salario AS salario_mensal, codcargo as cargo
 from EMPREGADO;
*
*
Comando NULL/NOT NULL
Verifica a existência ou não de valores
	 select * from empregado
		where telefone is null
 	 select * from empregado
		where telefone is not null
*
*
Comandos com EXPRESSÃO ARITMÉTICA
+,-,*,/
select nome, salario * 12 AS salario_anual, 			 	 from EMPREGADO
JOIN
Faz a junção entre tabelas
INNER JOIN
OUTER [LEFT ou RIGHT ou FULL] JOIN
	 select empregado.nome as nome, empregado.codcargo as cargo, 		 cargo.nome as nome_cargo 
 	 from empregado 
	 join cargo on empregado.codcargo = cargo.codigo
*
*
LEFT OUTER JOIN
	 select e.nome as nome, e.codcargo as cargo, c.nome as 		 nome_cargo 
 	 from empregado e 
	 left join cargo c on e.codcargo = c.codigo
RIGHT OUTER JOIN
	 select e.nome as nome, e.cargo as codigo, c.nome as nome_cargo 
 	 from empregado e 
	 right join cargo c on e.cargo = c.codigo
	 FULL OUTER JOIN
 	 select e.nome as nome, e.cargo as codigo, c.nome as nome_cargo 
 	 from empregado e 
	 full join cargo c on e.cargo = c.codigo
*
*
Funções de agregação e agrupamento
COUNT - Número de tuplas
SUM 	 - Soma de valores
MAX	 - Valor máximo
MIN	 - Valor mínimo
AVG	 - Média aritmética
GROUP BY –Agrupamento
HAVING – Condição do agrupamento
*
*
 COUNT
Select Count(*) from empregado
Select Count(distinct sexo) from empregado
 SUM
 Select Sum(Salario) from empregado
MAX
 Select MAX(Salario) from empregado
MIN
 Select MIN(Salario) from empregado
 AVG
Select Avg(Salario) from empregado
*
*
 Group BY / Having
	Select Avg(Salario) 
	 from empregado
	 group by sexo
	Select codcargo, sexo, Avg(SALARIO) 
	from empregado 
	group by codcargo,	sexo 
	having codcargo > 2
	
	
*
*
Operações com strings
LIKE - Permite a verificação de strings
	 Case Sensitive
Ex.: “Maria%” – Qualquer string que comece com Maria
Ex.: “%Maria” – Qualquer string que possua uma substring Maria
Select nome from empregado where nome like ‘Maria%’
Ex.: “_a%” – Qualquer string que possua o 2ª caracter a
Select nome from empregado where nome like ‘_a%’
*
*
Operações com strings
Concatenação de strings
select (logradouro || ', ' || complemento || ', ' || bairro) as endereço 
	from empregado
Operador de intervalo
 select nome, salario 
	from EMPREGADO
	where (salario between 3000 and 4000)	
*
*
Operadores de conjuntos
Correspondem às operações da álgebra relacional
União [all] (Union)
Exceção (Except ou Minus) 
Interseção (Intersect) 
As consultas envolvidas na consulta precisam ter o mesmo conjunto de atributos. 
*
*
UNION anexa o resultado da consulta2 ao resultado da consulta1 (embora não haja garantia que esta seja a ordem que as linhas realmente retornam). São eliminadas do resultado as linhas duplicadas, do mesmo modo que no DISTINCT, a não ser que seja utilizado UNION ALL.
SELECT codigo, nome, simb FROM cargo
	UNION 
	(SELECT codigo, nome, simb FROM cargo1) 
SELECT codigo, nome, simb FROM cargo
	UNION ALL
	(SELECT codigo, nome, simb FROM cargo1) 
*
*
INTERSECT retorna todas as linhas presentes tanto no resultado da consulta1 quanto no resultado da consulta2 .
	SELECT codigo, nome, simb FROM cargo
	INTERSECT
	(SELECT codigo, nome, simb FROM cargo1) 
EXCEPT ou MINUS retorna todas as linhas presentes no resultado da consulta1, mas que não estão presentes no resultado da consulta2 (às vezes isto é chamado de diferença entre duas consultas). 
	SELECT codigo, nome, simb FROM cargo
	EXCEPT ou MINUS
	(SELECT codigo, nome, simb FROM cargo1) 
*
*
Sub-consultas
IN / NOT IN – testa membros de um conjunto. Executa a sub-consulta 		 para depois a consulta principal.
SELECT Nome, salario
 FROM Empregado 
 WHERE Codigo IN
 (SELECT codigo_empregado
 FROM empregado_demitido)
 
SELECT Nome, salario
 FROM Empregado 
 WHERE Codigo NOT IN
 (SELECT codigo_empregado
 FROM empregado_demitido)
*
*
ALL – com operadores de comparação 
>ALL – maior de todos 
	SELECT codigo, nome, salario
 		FROM empregado
	WHERE salario >all 
	(select salario from empregado where cargo = 5)
Encontrar o nome dos empregados que possuem salário maior que a média dos empregados
SELECT Nome, salario
 FROM Empregado 
 WHERE Salario > ( SELECT AVG(Salario) FROM Empregado)
*
*
 EXISTS / NOT EXISTS – executa a consulta e depois a 	sub-consulta (em cada registro da consulta da 	principal)
 SELECT E.codigo, E.Nome, E.salario
 FROM Empregado E
 WHERE EXISTS 
 (SELECT * FROM Dependente D
 WHERE E.codigo = D.codigo_empregado)
SELECT E.codigo, E.Nome, E.salario
 FROM Empregado E
 WHERE NOT EXISTS 
 (SELECT * FROM Dependente D
 WHERE E.codigo = D.codigo_empregado)

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes