Guia de SQL: Criação de Banco de Dados, Tabelas, DML e Consultas

Computação7,53 KB

Guia de SQL: Criação de Banco de Dados, Tabelas e Consultas

1) Criação de Banco de Dados

Criar o banco de dados dbfatura:

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,
    nomecli CHAR(30),
    endcli CHAR(30),
    cidcli CHAR(30),
    uf_cli CHAR(2) DEFAULT 'SP',
    cpfcli CHAR(10),
    rg_cli CHAR(10),
    CONSTRAINT pk_tabcli PRIMARY KEY (codcli),
    CONSTRAINT chk_nomecli CHECK (nomecli <> '')
)

Linguagens do SQL:

  • DDL (Data Definition Language): definição dos dados.
  • DML (Data Manipulation Language): manipulação e controle de dados (inclui, altera e exclui).
  • DCL (Data Control Language): controle de dados.
  • DQL: consulta.

Na arquitetura IR, a integridade referencial é controlada pelo banco de dados, diferentemente da arquitetura AI, onde o programador deve controlar essa integridade.

3) Manipulação de Dados (DML)

Inclusão de linhas (INSERT):

  • INSERT INTO nome_tabela VALUES (valor1, 'texto2', valor3, valor4, ...) — valores para todas as colunas.
  • INSERT INTO nome_tabela (nomecol1, nomecol2, nomecol3, ...) VALUES (valor1, 'texto2', valor3, ...) — somente nas colunas definidas; as demais colunas não podem ser chaves e aceitam NULL.
  • INSERT INTO nome_tabela SELECT ... FROM ... WHERE ... — inclui as informações resultantes da consulta.

Atualização de linhas (UPDATE):

UPDATE nome_tabela SET nome_col1 = novo_valor ou 'texto', nome_col2 = novo_valor ou 'texto', ... WHERE condição. Se a cláusula WHERE for omitida, todas as linhas serão atualizadas.

Condições:

  • Simples: nomedacoluna = | <> | > | < | >= | <= valor ou 'texto'
  • Composta: condição AND / OR condição. Mais de uma condição pode ser utilizada.

As condições compostas são baseadas na teoria de conjuntos: AND para interseção (restritivo) e OR para união (abrangente). Pode-se utilizar parênteses ( ) para priorizar a execução, da condição mais interna para a mais externa.

  • Operações relacionais: =, <>, >, <, >=, <=
  • Operações lógicas: AND, OR, ( )

4) Funções

Conversão: CONVERT(tipo, valor, formato). Ex.: CONVERT(DATETIME, '03/09/2009', 103)

Intervalo: BETWEEN valor_inicial AND valor_final (inclusive os termos). Ex.: BETWEEN 1000 AND 2500

Texto / contexto (LIKE):

  • Coringa: %
  • Início: LIKE 'texto%'
  • Fim: LIKE '%texto'
  • Contexto: LIKE '%texto%'

5) Consultas (SELECT)

Sintaxe:

  • SELECT o que = colunas, expressões, funções
  • FROM de onde = tabela
  • WHERE condição que o conteúdo deve satisfazer = linhas
  • GROUP BY como agrupar
  • HAVING condição sobre o grupo
  • ORDER BY ordenação por qual coluna

Expressão: qualquer expressão envolvendo colunas, valores, textos fixos ou funções. Ex.: salfun * 1.1

Funções de texto:

  • CAST(col AS VARCHAR) — converte para texto
  • SUBSTRING(col, posição_inicial, tamanho) — parte do texto
  • UPPER(col) — converte para maiúsculas
  • LOWER(col) — converte para minúsculas
  • RTRIM(col) — remove espaços à direita
  • LTRIM(col) — remove espaços à esquerda
  • LEN(col) — tamanho da string

Funções numéricas:

  • SQRT(col) — raiz quadrada
  • ABS(col) — valor absoluto
  • SIN(col) — seno
  • CAST(col AS NUMERIC) — converte para número

Funções de data:

  • DATEPART(parte, col) — parte especificada da data
  • DATEADD(parte, valor, col) — adiciona valor à parte da data
  • DATEDIFF(parte, col1, col2) — diferença entre datas na parte indicada
  • GETDATE() — data e hora atuais

Partes da data: dd (dia), mm (mês), yy (ano), dw (dia da semana), hh (hora), mi (minuto), ss (segundo), ms (milissegundo), qq (trimestre).

Ordenação: ORDER BY coluna1, coluna2 ... ASC (padrão) / DESC (decrescente).

Funções de agrupamento:

  • SUM(col) — soma dos valores
  • AVG(col) — média dos valores
  • MAX(col) — valor máximo
  • MIN(col) — valor mínimo
  • COUNT(col) — número de linhas do grupo

O HAVING condiciona agrupamentos. Exemplo: somar as faturas por dia e mostrar apenas os dias em que houve faturamento acima de 50000.

Conceitos importantes:

  • Colunas de controle de classificação ou agrupamento devem sempre ser exibidas no SELECT.
  • Pode-se exibir valores individuais (linhas) ou agrupados (grupos), não sendo possível misturar ambos na mesma consulta. Também não é possível utilizar uma função de grupo na mesma expressão de uma coluna individual.

Exemplo:

SELECT numfat, datfat, vlrfat FROM fatura WHERE vlrfat > 5000 ORDER BY vlrfat DESC

6) Subconsultas (Subquery / Subselect)

Seguem o mesmo conceito da teoria dos conjuntos, porém obedecem a uma hierarquia de execução. Os dados resultantes da subconsulta são passados como lista para a consulta superior, que exibe o resultado final.

Exemplo:

SELECT coddep, nomdep FROM tabdep WHERE coddep NOT IN (SELECT coddep FROM tabfun)

As subconsultas podem ser utilizadas em diversas situações e, em determinados casos, consomem menos recursos e possuem desempenho superior ao JOIN. Podem utilizar os mesmos operadores relacionais das demais consultas.

Estrutura vertical de execução e reconhecimento de tabelas/colunas.

Exemplo: nome do funcionário que emitiu a maior fatura no primeiro semestre de 2009.

  • Nome do funcionário — tabfun
  • Maior fatura — tabfat
  • Data da fatura — tabfat

7) JOIN — Junção de Tabelas

Sintaxe:

SELECT coluna FROM tabela1 t1 INNER JOIN tabela2 t2 ON t1.coluna = t2.coluna WHERE condição ORDER BY / GROUP BY coluna_de_controle 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. Neste caso, o problema pode ser resolvido tanto por subconsulta quanto por JOIN, devendo-se observar qual abordagem apresenta melhor desempenho para o cenário.

Baixar

PDF Word HTML