Guia de SQL: Comandos DDL, DML e Consultas Avançadas

Classificado em Eletrônica

Escrito em em português com um tamanho de 6,17 KB

1) Criação de Banco de Dados

Comando: CREATE DATABASE dbfatura
Configurações:
ON (NAME = 'fatura_data',
FILENAME = 'C:\db\fatura.mdf',
SIZE = 30MB,
MAXSIZE = 100MB,
FILEGROWTH = 20%)
LOG ON (NAME = 'fatura_log',
FILENAME = 'C:\db\fatura.log',
SIZE = 9MB,
MAXSIZE = 30MB,
FILEGROWTH = 20%)

2) Criação de Tabela

Comando: CREATE TABLE tabcli (
Codcli INT, CONSTRAINT pk_tabcli PRIMARY KEY,
Nomecli CHAR(30), CONSTRAINT chk_nome CHECK (Nomecli <> ''),
Endcli CHAR(30),
Cidcli CHAR(30),
Uf_cli CHAR(2) DEFAULT 'SP',
Cpfcli CHAR(10),
RG_cli CHAR(10)
)

Definições:

  • DDL: Definição de Dados.
  • DML: Manipulação e Controle de Dados (Incluir, Alterar, Excluir).
  • SQL: Linguagem de Consulta Estruturada.

Dada uma estrutura de Integridade Referencial (IR), a integridade é referenciada pelo banco de dados, diferentemente da arquitetura de Inteligência Artificial (AI), onde o programador deve controlar esta integridade.

Inclusão de Linhas (INSERT)

Sintaxe:

  • INSERT INTO nome_tabela VALUES (vlr1, 'txt2', vlr3, ...); // Valores para todas as colunas.
  • INSERT INTO nome_tabela (col1, col2, ...) VALUES (vlr1, 'txt2', ...); // Somente nas colunas definidas; as demais não podem ser chaves e devem aceitar valores nulos.
  • INSERT INTO nome_tabela (SELECT ... FROM ... WHERE ...); // Incluir informações resultantes de uma consulta.

Atualização de Linhas (UPDATE)

Sintaxe: UPDATE nome_tabela SET nome_col = novo_valor WHERE condição;
Atenção: Se a cláusula WHERE for omitida, todas as linhas serão atualizadas.

Condições:

  • Simples: nome_da_coluna = (ou <, >, <>, >=, <=) valor ou texto.
  • Composta: Uso de operadores lógicos AND (interseção restritiva) e OR (união abrangente).
  • Prioridade: Pode-se utilizar parênteses () para priorizar a execução da condição mais interna para a mais externa.

Funções e Operadores

DDL: Linguagem de Definição de Dados | DML/DCL: Linguagem de Manipulação e Controle de Dados | SQL: Structured Query Language (Linguagem padrão para consulta).

Funções de Conversão: Ex: CONVERT(datetime, '03/09/2009', 103).
Intervalo: BETWEEN valor_inicial AND valor_final (inclusive os termos).
Texto/Contexto: Uso de LIKE com o coringa %.

  • LIKE 'texto%': Inicia com o texto.
  • LIKE '%texto': Termina com o texto.
  • LIKE '%texto%': Contém o texto no contexto.

Sintaxe da Consulta (SELECT)

Estrutura:
SELECT [colunas, expressões, funções] FROM [tabelas] WHERE [condição das linhas] GROUP BY [colunas de agrupamento] HAVING [condição do grupo] ORDER BY [colunas de ordenação]

Expressões: Qualquer operação envolvendo colunas e valores fixos. Ex: salario * 1.1.

Funções Disponíveis:

  • Texto: STR(col) (converte para texto), SUBSTRING(col, inicio, tamanho), UPPER(col) (maiúsculas), LOWER(col) (minúsculas), RTRIM(col) (remove espaços à direita), LTRIM(col) (remove espaços à esquerda), LEN(col) (tamanho da string).
  • Numérica: SQRT(col) (raiz quadrada), ABS(col) (valor absoluto), SIN(col) (seno), CAST(col AS NUMERIC) (converte para número).
  • Data: DATEPART(parte, col), DATEADD(parte, valor, col), DATEDIFF(parte, col1, col2), GETDATE() (data/hora atual).
    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 e Agrupamento:

  • ORDER BY: ASC (padrão ascendente) ou DESC (decrescente).
  • Funções de Agrupamento: SUM(col) (soma), AVG(col) (média), MAX(col) (máximo), MIN(col) (mínimo), COUNT(col) (contagem de linhas).
  • Conceitos: Colunas no SELECT que não são funções de agrupamento devem estar no GROUP BY. Não é possível exibir valores individuais e agrupados simultaneamente na mesma expressão.

Exemplo: SELECT numfat, datfat, vlrfat FROM tabfat WHERE vlrfat > 5000 ORDER BY vlrfat DESC;

Sub-consultas (Sub-query)

Baseia-se na teoria dos conjuntos e obedece a uma hierarquia de execução. Os dados da consulta inferior (interna) são passados como uma lista para a consulta superior (externa).
Exemplo: SELECT nomdep FROM tabdep WHERE coddep IN (SELECT coddep FROM tabfun);

As sub-consultas podem consumir menos recursos e possuir melhor desempenho que o JOIN em determinadas situações. Possuem estrutura de execução vertical.

JOIN - Junção de Tabelas

Sintaxe: SELECT t1.coluna, t2.coluna FROM tabela1 t1 INNER JOIN tabela2 t2 ON t1.coluna = t2.coluna WHERE [condição] ORDER BY [coluna];

O JOIN é necessário quando se deseja mostrar informações de tabelas distintas simultaneamente. Possui uma estrutura de execução horizontal e reconhecimento de tabelas/colunas. Exemplo: Descrição dos produtos vendidos no primeiro semestre de 2009.

Entradas relacionadas: