Guia Prático de SQL e Comandos DDL e DML
1) Criação de Banco de Dados
Create database dbfatura
On
(primary name = fatura,
filename = 'c:\db\fatura.mdf',
size = 30mb,
maxsize = 100mb,
filegrowth = 20%)
Log on
(name = faturalog,
filename = 'c:\db\fatura.log',
size = 9mb,
maxsize = 30mb,
filegrowth = 20%)
2) Criação de Tabela
Create table tabcli
(
Codcli int, constraint pk_tabcli primary key,
Nomecli char(30),
Endcli char(30),
Cidcli char(30),
Uf_cli char(2) default 'SP',
Cpfcli char(10),
RG_cli char(10)
)
DDL - Definição dos dados;
DML - Manipulação e controle de dados (inclui/altera/exclui);
SQL - Consulta.
Dada a estrutura IR - a integridade é referenciada pelo banco, diferente da arquitetura AI, onde o programador deve controlar essa integridade.
Inclusão de Linhas
Insert Into:
Insert Into nome_tabela values (vlr(col1), txt(coluna2), vlr(col3), vlr(coluna4), ...)// Valores para todas as colunas.Insert into nomedatabela (nomecol1, nomecol2, nomecol3, ...) values (vlr1(col1), txt(col2), vlr3(col3), ...)// Somente nas colunas definidas; as demais colunas não podem ser chaves e aceitam null.Insert into nometabela select ... from ... where ...// Incluir as informações resultantes da query.
Atualização de Linhas
Update:Update nomedatabela set nome_col = novovalor ou txt, nome_col2 = novo valor ou txt, ... Where condição. // Se a cláusula where ou condição for omitida, todas as linhas serão atualizadas.
Condições:
- Simples:
nomedacoluna = <> > >= < <= valor ou txt - Composta (and/or): Mais de uma condição:
nomedacoluna = <> > >= < <= and / or nomecoluna = <> > >= < <= vlr ou txt
As condições compostas estão baseadas na teoria de conjuntos com and para interseção (restritivo) e or para união (abrangente). Pode-se utilizar parênteses () para priorizar a execução a partir da condição mais interna para a mais externa.
* Operações relacionais: = <> > >= < <=
* Operações lógicas: and, or, ()
Conceitos Básicos do SQL
DDL - Data Definition Language
DML/DCL - Data Manipulation Control Language
SQL - Structured Query Language (Linguagem padrão para consulta).
Funções, Intervalos e Textos
Funções de Conversão: Ex: convert(datetime, '03/09/2009', 103)
Intervalo (Inclusive os termos): Between valorinicial and valorfinal. Ex: between 1000 and 2500
Texto / Contexto (Like):
- Início:
like 'texto%' - Fim:
like '%texto' - Contexto:
like '%texto%'
Sintaxe do Comando Select
- Select... O que = col, expressão, função
- From... De onde = tabela
- Where... Que conteúdo = condição de linhas
- Order / Group by... Como
- Having... Qual = condição de grupo
Expressão: Qualquer expressão envolvendo colunas, valores, textos fixos ou funções. Ex: salfun * 1.1
Tipos de Funções
· Texto:
Str(col)= Converter para textoSubstr(col, posicaoinicio, tamanho)= Parte do textoUpper(col)= Converte para maiúsculasLower(col)= Converte para minúsculasRtrim(col)= Remove brancos à direitaLtrim(col)= Remove brancos à esquerdaStrlength(col)= Tamanho da String
· Numérica:
SQRT(col)= Raiz quadradaAbs(col)= Valor absolutoSin(col)= SenoValue(col)= Converte para número
· Data:
Datepart(parte, col)= Parte da coluna data especificadaDateadd(parte, col, value)= Adiciona valor à parte da dataDatediff(parte, col1, col2)= Mostra diferença entre datasGetdate()= Data/hora atuais
Partes de data:dd - dia | mm - mês | yy - ano | dw - dia da semana | hh - hora | mi - minuto | ss - segundo | ms - milésimo de segundo | qy - trimestre.
Cláusulas do Select
- Where: Condição para linhas individuais que serão consideradas na consulta.
- Order by (coly, colx... asc/desc): Classifica as linhas da coluna na posição e sequência definida.
- Group by: Define colunas que controlam o agrupamento baseado em funções utilizadas.
Funções de Agrupamento
Sum(col)= Soma de valoresAvg(col)= Média de valoresMax(col)= Valor máximo da colunaMin(col)= Valor mínimo da colunaCount(col)= Número de linhas do agrupamento
Having: Condiciona agrupamentos (ex: soma as faturas por dia e só mostra o dia que houve faturamento acima de 50000). Só funciona com agrupamentos.
Conceitos Importantes:
- As colunas de controle de classificação ou agrupamento devem sempre ser exibidas (select).
- Pode-se exibir valores individuais (linhas) ou agrupados (grupos) exclusivamente, não podendo exibir ambas simultaneamente. Isto significa que também não é possível utilizar order e group na mesma expressão.
Exemplo: select numfat, datfat, vlrfat FROM tabfat WHERE vlrfat > 5000 order by vlrfat desc
Sub-Consultas (Sub-Query / Sub-Select)
Mesmo conceito da teoria dos conjuntos, porém obedece à hierarquia de execução.
Nas subconsultas, os dados resultantes da query inferior são passados como uma lista para a consulta superior e assim por diante, até a query que exibirá o resultado.
Exemplo:SELECT coddep, nomdep FROM tabdep WHERE coddep NOT IN (SELECT coddep FROM tabfun)
As subqueries podem ser utilizadas em várias situações, inclusive sendo uma opção que consome menos recursos e possui mais desempenho que o JOIN em determinadas situações. Nas subqueries, pode-se utilizar os mesmos recursos e operandos relacionais.
Sub-Query vs JOIN
Sub-Query:
Estrutura vertical de execução e reconhecimento das tabelas/colunas.
Ex: Nome de funcionário que emitiu a maior fatura no primeiro semestre de 2009 (Envolve tabfun e tabfat).
JOIN (Junção de Tabelas):
Sintaxe:SELECT coluna FROM tabx t1 INNER JOIN taby t2 ON t1.coluna = t2.coluna WHERE condição ORDER/GROUP BY coluna HAVING condição_grupo
- Necessário quando se deseja exibir informações de tabelas distintas simultaneamente.
- Estrutura horizontal de execução e reconhecimento de tabelas/colunas.
Exemplo: Descrição dos produtos vendidos no primeiro semestre de 2009 (Pode-se resolver através de subquery ou join).