View
291
Download
0
Category
Preview:
Citation preview
SQL
Histórico
� Structured Query Language (SQL)
� Foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language) para suas primeiras tentativas de desenvolvimento de bancos de dados relacionais.
Histórico
O SQL tornou-se de fato o padrão depois de 1986, quando o AmericanNational Standards Institute (ANSI), a organização responsável pelos padrões industriais nos Estados Unidos, endossou o SQL como linguagem padrão para os bancos de dados relacionais.
Histórico
� Desde então o SQL vem sofrendo atualizações;
� já sofreu duas atualizações oficiais:
� em 1989;
� em 1992: esse é o usado atualmente mas ainda sofre atualizações, para se adequar as últimas versões de banco de dados relacionais lançadas no mercado.
Histórico
� SQL3
� Padrão aprovado em 1999;
� Versão da linguagem orientada a objetos;
� SGBDs comerciais oferecem parte da SQL3;
� Falta de padronização.
O que é SQL
� O SGBD (Sistema Gerenciador de Banco de Dados) necessita de uma linguagem que permita aos usuários acesso aos dados.
� SQL (Structured Query Language) é a linguagem de consulta adotada pela maioria dos SGBDs relacionais.
Características do SQL
� Linguagem English-like
� Processa conjunto de registros (tabelas) ao invés de registros individuais
� Padronizada
� Fornece comandos para uma série de tarefas, como:� Recuperação de dados;
� Inclusão, atualização e exclusão de registros;
� Criar, modificar e excluir objetos do banco;
� Etc.
Comandos SQL
Comandos SQL
� Comandos DDL (Data Definition Language)� Usados para construir e modificar estruturas de tabelas e outros objetos no BD.
� Têm efeito imediato.
� Comandos DML(Data Manipulation Language)� Usados para trabalhar com os dados nas tabelas.� Necessitam de um “COMMIT” para sua confirmação.
Construções básicas
� Comando SELECT
� Recupera informações do banco de dados
� Sintaxe:
SELECT lista_de_colunas
FROM lista_de_tabelas
WHERE condições
GROUP BY agrupamento ***
ORDER BY ordenação_para_apresentação
Construções básicas
� Exemplo:
SELECT nome
FROM Departamentos;
ou
SELECT *
FROM Departamentos;
* =>Seleção de todas os campos (ou colunas) da tabela de Departamentos
Construções básicas
� Distinct
� Elimina duplicidades, significando que somente relações distintas serão apresentadas como resultado de uma pesquisa.
� Exemplo
SELECT DISTINCT nome
FROM Empregado;
Construções básicas
� TOP n
� Seleciona um número específico de registros.
� Exemplo
SELECT TOP 10 * FROM Cidade;
Funções Agregadas (ou de Agrupamento)
Soma dos valores de n, ignorando nulos
Sum(n)
Menor valor da exprMin(expr)
Maior valor da expMax(expr)
Vezes que o número da expr avalia para algo não nulo
Count(expr)
Média do valor n, ignorando nulosAvg(n)
RetornoFunção
Construções básicas
� Select AVG (salarios) From Funcionario
� Select Count (codigoPessoa) From Pessoa
� Select MAX (dataInclusao) FROM Pessoa
� Select MIN (dataInclusao) FROM Pessoa
� Select SUM (salarios) FROM Funcionario
Construções básicas
� Cláusula WHERE
� Usada para selecionar as linhas para consultar ou alterar.
� Se omitida, todas as linhas da tabela serão submetidas àação referente ao comando em questão.
� Exemplo:
SELECT nome
FROM Pessoa
WHERE idade >= 10;
Construções básicas
� Você pode fazer condições compostas com AND, OR ou NOT.
SELECT nome
FROM empregados
(AND) WHERE (nome = ‘JOSE’ AND salario = 20)
(OR) WHERE (salario = 10 OR salario = 20)
(NOT) WHERE (nome IS NOT NULL)
Operadores lógicos
Menor que ou igual a<=
Menor que<
Maior que ou igual a>=
Maior que>
Igual a =
SignificadoOperador
Construções básicas
� Você pode fazer condições compostas com like, between ou is null.
SELECT nome
FROM empregados
(like) WHERE (nome like ‘%JOSE%’)
(between) WHERE (salario between 10 and 100)
(is null) WHERE (nome is null)
% => independente, qualquer coisa
Demais Operadores
É um valor nuloIs null
Com padrão de caracteresLike
Lista de valoresIn (...)
Entre dois valores (inclusive)Between...and...
SignificadoOperador
Operadores Negativos
Diferente do padrão de caracteres informadoNot like
Não é um valor nuloIs not null
Não existente numa dada lista de valoresNot in
Não entre dois valores informadosNot between
Não maior que Not nome coluna>
Diferente da colunaNot nome coluna=
Diferente<>
SignificadoOperador
Construções básicas
� Cláusula Group By
� Realiza o agrupamento por uma coluna da tabela
SELECT nomeFuncionario, nomeDepartamento
FROM Empregado
GROUP BY nomeDepartamento;
Construções básicas
� Cláusula Order By
� Modifica a ordem de apresentação do resultado da pesquisa (ascendente ou descendente).
SELECT nome, dataNascimento
FROM Empregado
ORDER BY nome ASC;
*** ASC – Ascendente
*** DESC – Descendente
Construções básicas
� Junção de Tabelas Join
� O uso da operação JOIN numa cláusula FROM especifica como se deseja que as tabelas sejam vinculadas.Use INNER JOIN para associar somente os tuplascoincidentes de ambas as tabelas.
� O OUTER JOIN liga as linhas de tabelas, mas não necessariamente precisam casar entre si. Desta forma, mesmo as linhas que não se encontrou referência no cruzamento das tabelas aparecerá no Resultado de
Dados. Existem tipos de OUTER JOIN:
Construções básicas
� LEFT JOIN usado para associar todas as tuplas da primeira tabela com apenas as coincidentes na segunda tabela. O Access retorna com valor nulo para as tuplas que não coincidem na segunda tabela.
� RIGHT JOIN usado para associar todas as tuplas da segunda tabela com apenas as coincidentes na primeira tabela
Construções básicas
SELECT nome_da_tabela1.nome_do_campo,
nome_da_tabela2.nome_do_campo
FROM nome_da_tabela1 inner join
nome_da_tabela2 on
nome_da_tabela1.nome_da_chaveprimaria1=
nome_da_tabela2.nome_da_chave_estrangeira
Construções básicas
SELECT Nome_Tabela.nome_campo
FROM Tabela1 LEFT OUTER JOIN Tabela2
ON Tabela1.chave_primaria = Tabela2.chave_estrangeira
SELECT Nome_Tabela.nome_campo
FROM Tabela1 RIGHT OUTER JOIN Tabela2
ON Tabela1.chave_primaria = Tabela2.chave_estrangeira
Construções básicas
� Um comando SELECT também pode fazer uma consulta que traz dados de duas ou mais tabelas.
SELECT nome_da_tabela1.nome_do_campo,
nome_da_tabela2.nome_do_campo
FROM nome_da_tabela1, nome_da_tabela2
WHERE nome_da_tabela1.nome_da_chaveprimaria1=
nome_da_tabela2.nome_da_chave_estrangeira
Construções básicas
� Comando INSERT
� Permite adicionar linhas à uma tabela
� Sintaxe
INSERT INTO [(coluna1, ..., colunaN)]
VALUES (<value1>, ..., <valueN>);
� Exemplo
INSERT INTO Pessoa (rg, nome, sexo)
VALUES (435442829, ‘João’, ‘M’);
Construções básicas
� Comando UPDATE
� Permite a alteração de valores de uma tabela
� Sintaxe:
UPDATE <tabela> SET <coluna> [ ..., colunaN]= <expressão> WHERE <condição>;
� Exemplo:
UPDATE Pessoa SET nome=‘José’WHERE rg=435442829;
Construções básicas
� Comando DELETE
� Remove linhas de uma tabela
� Sintaxe:
DELETE FROM <tabela> WHERE <condição>;
� Exemplo:
DELETE FROM Pessoa WHERE rg=435442829;
Tipos de dados
TINYINT: Valores numéricos inteiros variando de 0 até 256
SMALLINT: Valores numéricos inteiros variando de –32.768 até 32.767
INT: Valores numéricos inteiros variando de -2.147.483.648 até2.147.483.647
BIT: Somente pode assumir os valores 0 ou 1. Utilizado para armazenar valores lógicos
DECIMAL(I,D) e NUMERIC(I,D): Armazenam valores numéricos inteiros com casas decimais utilizando precisão. I deve ser substituído pela quantidade de dígitos total do número e D deve ser substituído pela quantidade de dígitos da parte decimal (após a vírgula)
SMALLMONEY: Valores numéricos decimais variando de -214.748,3648 até 214.748,3647
Tipos de dados
MONEY: Valores numéricos decimais variando de -922.337.203.685.477,5808 até 922.337.203.685.477,5807
REAL: Valores numéricos aproximados com precisão de ponto flutuante, indo de
-3.40E + 38 até 3.40E + 38
FLOAT: Valores numéricos aproximados com precisão de ponto flutuante, indo de
-1.79E + 308 até 1.79E + 308
SMALLDATETIME: Armazena hora e data variando de 1 de janeiro de 1900 até 6 de junho de 2079. A precisão de hora é armazenada até os segundos.
DATETIME: Armazena hora e data variando de 1 de janeiro de 1753 até31 de Dezembro de 9999. A precisão de hora é armazenada até os centésimos de segundos
Tipos de dados
CHAR(N): Armazena N caracteres fixos (até 8.000) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo épreenchido com espaços em branco
VARCHAR(N): Armazena N caracteres (até 8.000) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido
TEXT: Armazena caracteres (até 2.147.483.647) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que 2.147.483.647, o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existemfunções específicas para trabalhar com este tipo de dado
Tipos de dados
NCHAR(N): Armazena N caracteres fixos (até 4.000) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo épreenchido com espaços em branco
NVARCHAR(N): Armazena N caracteres (até 4.000) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido
NTEXT: Armazena caracteres (até 1.073.741.823) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que 1.073.741.823, o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existemfunções específicas para trabalhar com este tipo de dado
Criando tabelas
� Uma tabela pode ser criada com o comando Create Table
CREATE TABLE Cliente1(
CodCliente int NOT NULL,Nome varchar(50),CPF varchar(11) NULL,DataCadastro datetime NOT NULL DEFAULT (getdate()),Cidade varchar(20) NULL,UF char(2) NULL,País varchar(20) DEFAULT ('Brasil')
)
** NOT NULL (Campo não pode ser nulo)** NULL (Campo pode ser nulo)** DEFAULT (Valor padrão para campo caso o mesmo não seja informado)
Recommended