Linguagens SQL e NoSQL

Anotações importantes relativa a disciplina "Linguagens SQL e NoSQL, MBA em Análise de Dados com BI e Big Data" (EAD Unicsul) - Publicado em agosto/2020.



Data Manipulation Language (DML)

Para os exemplos e as práticas serão utilizadas as tabelas EMP e DEPT (ambiente default Oracle), que contêm, respectivamente, informações sobre os funcionários e sobre os departamentos de uma empresa e, para que não exista necessidade de armazenar os dados sobre o nome do departamento e a localização dos mesmos para cada registro de funcionários, elas são relacionadas por meio dos campos DEPTNO – que na tabela EMP é chave estrangeira e na tabela DEPT é chave primária.

SQL
Comparação entre BD Relacional x BD NoSQL
Referência: Tabela 1 – Unidade 3 – Linguagens SQL e NoSQL (Pós UNICSUL)

     

Inserindo Dados

INSERT INTO tabela [(coluna [, coluna...])] VALUES (valor [,valor...]);
  1. TABELA: Nome da tabela;
  2. COLUNA: Nome da coluna a ser preenchida, a lista de colunas pode ser omitida; nesse caso, devem ser informados valores para todas as colunas;
  3. VALOR: O valor correspondente para a coluna. Os valores de data e caractere devem ser informados entre aspas simples.

Para verificar a ordem default das colunas de uma tabela e o tipo de dado esperado, utilize a instrução describe.

SQL> DESCRIBE dept
Name Null? Type
-------- -------- -------
DEPTNO NUMBER(2) NOT NULL
DNAME VARCHAR2(14)
LOC VARCHAR2(13)

Exemplos:

SQL> INSERT INTO dept (DEPTNO, DNAME, LOC)
2 VALUES (70, ‘PRODUCAO’, ‘MARILIA’);

Neste caso, não existe a necessidade de indicar as colunas que irão receber as inserções, pois estão sendo inseridos valores para todas as colunas, então o mesmo exemplo poderia ser resolvido assim:

SQL> INSERT INTO dept
2 VALUES (70, ‘PRODUCAO’, ‘MARILIA’);

Também é possível a inserção implícita de nulos, isto é, pode-se deixar de informar uma coluna na inserção de dados, para a qual será atribuído nulo.

SQL> INSERT INTO dept (deptno, dname )
    2 VALUES (60, ‘MIS’);

A tabela dept contém as coluna: deptno, dname e loc; no entanto, no exemplo anterior estão sendo inseridos valores apenas às colunas deptno e dname – nesse caso, a coluna loc irá conter NULL.

SQL> INSERT INTO dept
2 VALUES (70, ‘FINANCE’, NULL);

Já neste outro exemplo, o nulo para a coluna loc está sendo explicitado. Note que a lista de colunas é omitida pois estão sendo mencionados os dados para todas as colunas. A palavra NULL poderia ser substituida por aspas simples (70, ‘FINANCE’, ‘’). Para inserção de datas, a deverá ser informada de acordo com a configuração do sistema, como no exemplo a seguir:

SQL> INSERT INTO emp
2 VALUES (2296,’AROMANO’,’SALESMAN’,7782, ‘03/02/97’,
3 1300, NULL, 10);
Alterando de Dados
UPDATE tabela SET coluna = valor [, coluna = valor, ...] [WHERE condição]; 
  1. TABELA: Nome da tabela.
  2. COLUNA: Nome da coluna a ser preenchida, podem ser atualizados os dados de várias colunas;
  3. VALOR: Valor correspondente ou subconsulta para a coluna;
  4. CONDIÇÃO: Uma cláusula opcional, identifica as linhas a serem atualizadas de acordo com uma condição que pode ser composta por expressões de comparação ou subconsultas.

Alterando o código do departamento para 20 do funcionário com código 7782:

SQL> UPDATE emp
2 SET deptno = 20
3 WHERE empno = 7782;
Remoção de dados
DELETE [FROM]tabela [WHERE condição];
  • TABELA: Nome da tabela;
  • CONDIÇÃO: Esta cláusula é opcional e identifica as linhas a serem eliminadas de acordo com uma condição que pode ser composta por expressões de comparação ou subconsultas.

Exemplo:

SQL> DELETE FROM dept
2 WHERE dname = ‘PRODUCAO’;

Todas as linhas na tabela serão removidas se a cláusula WHERE for omitida

.
Confirmando ou Descartando Transações

Uma transação é um conjunto de operações DML que são realizadas para concluir uma determinada tarefa. Quando não ocorrem falhas no processamento das operações de uma transação, ela pode ser efetivada (salva); nesse caso, as modificações são refletidas fisicamente no banco de dados.

As instruções responsáveis pelo controle das transações são o commit e o rollback. A emissão de um commit confirma as transações, isto é, efetiva as manipulações de dados realizadas nas tabelas. A emissão de um rollback descarta as transações que ainda não tenham sido confirmadas (comitadas).

Exemplo usando commit: atualizar a tabela EMP e definir o número de departamento para o funcionário 7782 (Clark) como 10 e depois confirmar a alteração.

SQL> UPDATE emp
2 SET deptno =10
3 WHERE empno=7782;
SQL> COMMIT;

É importante lembrar que após a emissão do comando COMMIT não há mais como reverter a operação feita anteriormente.

Exemplo usando rollback: remover todas as linhas da tabela employee.

SQL> Delete
2 From employee;
14 rows deleted
SQL> ROLLBACK;