Guia Prático de SQL e Comandos DDL e DML

Computação8 KB

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 texto
  • Substr(col, posicaoinicio, tamanho) = Parte do texto
  • Upper(col) = Converte para maiúsculas
  • Lower(col) = Converte para minúsculas
  • Rtrim(col) = Remove brancos à direita
  • Ltrim(col) = Remove brancos à esquerda
  • Strlength(col) = Tamanho da String


· Numérica:

  • SQRT(col) = Raiz quadrada
  • Abs(col) = Valor absoluto
  • Sin(col) = Seno
  • Value(col) = Converte para número


· Data:

  • Datepart(parte, col) = Parte da coluna data especificada
  • Dateadd(parte, col, value) = Adiciona valor à parte da data
  • Datediff(parte, col1, col2) = Mostra diferença entre datas
  • Getdate() = 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 valores
  • Avg(col) = Média de valores
  • Max(col) = Valor máximo da coluna
  • Min(col) = Valor mínimo da coluna
  • Count(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).

Baixar

PDF Word HTML