Banco de Dados - Grupos de Dados (GROUP BY)
Exemplo (agrupando por departamento):
OBS: a sintaxe abaixo mostrará por departamento a quantidade de funcionários, o maior e menor salário.
SELECT
id_departamento,
MAX(vl_salario) AS maior_salario,
MIN(vl_salario) AS menor_salario,
COUNT(*) AS quantidade_funcionarios
FROM tb_funcionarios
GROUP BY id_departamento
ORDER BY id_departamento;
Exemplo (sem agrupamento, escopo total da tabela):
OBS: a sintaxe mostrará a quantidade de funcionários, o maior e menor salário da tabela.
SELECT
MAX(vl_salario) AS maior_salario,
MIN(vl_salario) AS menor_salario,
COUNT(*) AS quantidade_funcionarios
FROM tb_funcionarios;
Banco de Dados - Funções (Functions)
Funções de Linhas Simples:
- UPPER
Retorna a conversão da cadeia de caracteres em letras maiúsculas;
Exemplo Oracle: SELECT UPPER('texto em letras minúsculas') AS texto FROM DUAL;
Exemplo SQL Server: SELECT UPPER('texto em letras minúsculas') AS texto;
- LOWER
Retorna a conversão da cadeia de caracteres em letras minúsculas;
Exemplo Oracle: SELECT LOWER('texto em letras maiúsculas') AS texto FROM DUAL;
Exemplo SQL Server: SELECT LOWER('texto em letras maiúsculas') AS texto;
- SUBSTRING
Retorna parte da cadeia de caracteres de acordo com os parâmetros informados;
Exemplo Oracle: SELECT SUBSTRING('Database', 1, 4) AS texto FROM DUAL;
Exemplo SQL Server: SELECT SUBSTRING('Database', 1, 4) AS texto;
Funções Oracle:
- LENGTH
Retorna a quantidade de caracteres;
Exemplo: SELECT LENGTH('Paralelepípedo') AS palavra FROM DUAL;
- SYSDATE
Retorna a data atual;
Exemplo: SELECT SYSDATE AS data_atual FROM DUAL;
Funções Microsoft SQL Server:
- LEN
Retorna a quantidade de caracteres;
Exemplo: SELECT LEN('Paralelepípedo') AS palavra;
- GETDATE()
Retorna a data atual;
Exemplo: SELECT GETDATE() AS data_atual;
Funções de Linhas Múltiplas / Grupo:
- MAX
Retorna o valor máximo;
Exemplo: SELECT MAX(VL_SALARIO) AS MAIOR_SALARIO FROM TB_FUNCIONARIOS;
- MIN
Retorna o valor mínimo;
Exemplo: SELECT MIN(VL_SALARIO) AS MENOS_SALARIO FROM TB_FUNCIONARIOS;
- SUM
Retorna a soma dos valores;
Exemplo: SELECT SUM(VL_SALARIO) AS TOTAL_SALARIO FROM TB_FUNCIONARIOS;
- AVG
Retorna a média dos valores;
Exemplo: SELECT AVG(VL_SALARIO) AS MEDIA_SALARIAL FROM TB_FUNCIONARIOS;
- COUNT
Retorna a quantidade de registros;
Exemplo: SELECT COUNT(*) AS QTD_FUNCIONARIOS FROM TB_FUNCIONARIOS;
Banco de Dados - Classificando Dados (ORDER BY)
Classificação Ascendente (ASC):
SELECT * FROM tb_funcionarios ORDER BY nm_funcionario ASC;
SELECT * FROM tb_funcionarios ORDER BY nm_funcionario;
Cláusulas específicas do Oracle:
SELECT * FROM tb_funcionarios ORDER BY nm_funcionario ASC NULLS FIRST;
SELECT * FROM tb_funcionarios ORDER BY nm_funcionario ASC NULLS LAST;
Classificação Decrescente (DESC):
SELECT * FROM tb_funcionarios ORDER BY nm_funcionario DESC;
Cláusulas específicas do Oracle:
SELECT * FROM tb_funcionarios ORDER BY nm_funcionario DESC NULLS FIRST;
SELECT * FROM tb_funcionarios ORDER BY nm_funcionario DESC NULLS LAST;
Banco de Dados - Restringindo a Seleção de Dados (WHERE)
Exemplos:
SELECT * FROM tb_funcionarios WHERE nm_funcionario = 'LEANDRO';
SELECT * FROM tb_funcionarios WHERE nm_funcionario IN('LEANDRO', 'Leandro');
SELECT * FROM tb_funcionarios WHERE nm_funcionario LIKE 'Leandro%';
SELECT * FROM tb_funcionarios WHERE nm_funcionario IS NULL;
Ponto de Atenção: O banco de dados Oracle é "Sensível a Maiúsculas" (Case Sensitive), portanto ao filtrar uma coluna desconhecida pode ser necessária a utilização de fórmulas para transformar o texto em maiúsculas (este será tema abordado no próximo tópico).
Banco de Dados - Seleção de Dados (SELECT)
Exemplos:
SELECT * FROM tb_funcionarios;
SELECT DISTINCT nm_funcionario FROM tb_funcionarios;
Oracle:
SELECT 'Olá mundo!' FROM dual;
Microsoft SQL Server:
SELECT 'Olá mundo!';
Banco de Dados - Tipos de Armazenamento de Dados (Data Types)
Oracle:
Texto:
CHAR
VARCHAR2
Número:
NUMBER
FLOAT
Data:
DATE
INTERVAL
Microsoft SQL Server:
Texto:
CHAR
VARCHAR
Número:
INT
BIGINT
FLOAT
MONEY
Data:
DATETIME
SMALLDATETIME
SQL Server - Importar tabelas utilizando BCP
Sintaxe do utilitário BCP:
bcp {table|view|"query"}
{out|queryout|in|format}
{data_file|nul}
{[optional_argument]...}
Parâmetros para indicar importação ou exportação:
- out: Indica que o utilitário irá exportar uma tabela ou view para um arquivo.
- queryout: Indica que o comando irá exportar os dados de uma query para um arquivo.
- in: Indica que o utilitário irá importar os dados de um arquivo para uma tabela.
Para exemplificar a exportação, foi utilizado um arquivo batch (importa_tb_alunos.bat) com o código abaixo.
bcp estudos..tb_alunos in "C:\EXPORT\tb_alunos.txt" -T -c
Explicando brevemente o código acima, "estudos..tb_alunos" é o nome da database seguido do nome da tabela para importação, "in" informa que o arquivo será importado na tabela informada anteriormente, "-T" é o parâmetro para Windows Authentication (utiliza o usuário e senha do Windows para acessar o banco de dados), "-c" indica que as colunas serão exportadas como caracteres.
Parâmetros:
-S => Servidor
-F2 => Primeira linha a importar (neste exemplo, segunda linha)
-L100 => Última linha a importar (neste exemplo, centésima linha)
-U => Usuário do banco de dados
-P => Senha do usuário do banco de dados
-c => Tipo de dados caractere (delimitadores padrões: linha "ENTER" e coluna "TAB")
-w => Tipo de dados unicode (delimitadores padrões: linha "ENTER" e coluna "TAB")
-t"\t" => Delimitador de coluna (neste exemplo, "TAB")
-r"\n" => Delimitador de linha (neste exemplo, "ENTER")
-T => Windows Authentication
-e => Arquivo para armazenamento dos erros de importação
-o => Arquivo para armazenamento do output após a execução do BCP
-f => Format file cujo define a estrutura da tabela
Publicações relacionadas:
- SQL Server - Exportar tabelas utilizando BCP.
SQL Server - Exportar tabelas utilizando BCP
Sintaxe do utilitário BCP:
bcp {table|view|"query"}
{out|queryout|in|format}
{data_file|nul}
{[optional_argument]...}
Parâmetros para indicar importação ou exportação:
- out: Indica que o utilitário irá exportar uma tabela ou view para um arquivo.
- queryout: Indica que o comando irá exportar os dados de uma query para um arquivo.
- in: Indica que o utilitário irá importar os dados de um arquivo para uma tabela.
Para exemplificar a exportação, foi utilizado um arquivo batch (exporta_tb_alunos.bat) com o código abaixo.
bcp estudos..tb_alunos out "C:\EXPORT\tb_alunos.txt" -T -c
Explicando brevemente o código acima, "estudos..tb_alunos" é o nome da database seguido do nome da tabela a ser exportada, "out" informa que a tabela será exportada no arquivo informado, "-T" é o parâmetro para Windows Authentication (utiliza o usuário e senha do Windows para acessar o banco de dados), "-c" indica que as colunas serão exportadas como caracteres.
Abaixo será mostrado outra forma de exportar a mesma tabela utilizando query.
bcp "select * from estudos..tb_alunos" queryout "C:\EXPORT\tb_alunos.txt" -T -c
Parâmetros:
-S => Servidor
-F2 => Primeira linha a importar (neste exemplo, segunda linha)
-L100 => Última linha a importar (neste exemplo, centésima linha)
-U => Usuário do banco de dados
-P => Senha do usuário do banco de dados
-c => Tipo de dados caractere (delimitadores padrões: linha "ENTER" e coluna "TAB")
-w => Tipo de dados unicode (delimitadores padrões: linha "ENTER" e coluna "TAB")
-t"\t" => Delimitador de coluna (neste exemplo, "TAB")
-r"\n" => Delimitador de linha (neste exemplo, "ENTER")
-T => Windows Authentication
-e => Arquivo para armazenamento dos erros de importação
-o => Arquivo para armazenamento do output após a execução do BCP
-f => Format file cujo define a estrutura da tabela
Publicações relacionadas:
- SQL Server - Importar tabelas utilizando BCP.
Oracle - Números Sequenciais com OVER
SELECT
ROW_NUMBER() OVER (ORDER BY e.first_name) AS sequencia,
e.employee_id,
e.first_name
FROM hr.employees e
ORDER BY e.first_name;

Números sequenciais para cada agrupamento de department_id em ordem crescente de employee_id:
SELECT
e.department_id,
e.last_name,
e.employee_id,
ROW_NUMBER() OVER (PARTITION BY e.department_id ORDER BY e.employee_id) AS emp_id
FROM hr.employees e
ORDER BY e.department_id,
e.employee_id;

Mostrar registros que estão entre determinadas linhas, no exemplo abaixo, entre as linhas 51 e 100:
SELECT r, last_name
FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R
FROM hr.employees)
WHERE R BETWEEN 51 and 100;

OBS: a cláusula OVER funciona da mesma forma no Oracle e SQL Server
Utilizando Oracle SQL Developer com o MS SQL Server 2008 R2
Oracle SQL Developer é um software gratuito para acesso a banco de dados Oracle. Com ele é possível conectar a outros bancos de dados utilizando drivers JDBC de terceiros como Microsoft SQL Server, MySQL, ACCESS, e SyBase.
Como o driver JDBC da Microsoft não funciona corretamente com o Oracle SQL Developer é necessário utilizar o JTDS. O mesmo está disponível para download na página da Sourceforge. Faça o download da versão JTDS 1.2.7 Dist, testei outras versões do JTDS e as mesmas não funcionaram.
Descompacte o arquivo jtds-1.2.7-dist.zip e copie o jtds-1.2.7.jar para a pasta SQL Developer/Drivers. Crie a pasta Drivers caso não exista.
Para utilizar a autenticação do Windows é necessário copiar o arquivo jtds-1.2.7-dist\x86\SSO\ntlmauth.dll para a pasta \jdk\jre\bin.
Para habilitar o SQL Server, no Oracle SQL Developer, basta adicionar o driver jtds-1.2.7.jar em Ferramentas > Banco de dados > Drivers JDBC de Terceiros.

Feito os passos anteriores, basta criar um nova conexão SQL Server e configurá-la.

Versões utilizadas:
Oracle SQL Developer: 3.2.20.09
Driver JTDS 1.2.7 Dist
Java SE Development Kit 6.45 (JDK 6U45)
Banco de Dados - Declarações SQL
1. DML - Data Manipulation Language (Linguagem de Manipulação de Dados)
SELECT
INSERT
UPDATE
DELETE
MERGE
OBS: alguns autores não consideram a instrução SELECT como DML.
2. DDL - Data Definition Language (Linguagem de Definição de Dados)
CREATE
ALTER
DROP
TRUNCATE
RENAME
COMMENT
3. DCL - Data Control Language (Linguagem de Controle de Dados)
Instruções Oracle:
GRANT
REVOKE
4. TCL - Transaction Control Language (Linguagem de Controle de Transações)
COMMIT
ROLLBACK
Instruções Oracle:
SAVEPOINT
Instruções Microsoft SQL Server:
BEGIN TRANSACTION
Ponto de Atenção: No banco de dados Oracle, é necessário executar a cláusula COMMIT ou ROLLBACK após a execução de um comando DML (com exceção do SELECT). Comandos DDL possuem a execução do COMMIT implícito.

Tags das Publicações
"O sorriso é o símbolo do vencedor." (Masaaki Hatsumi)