(ANSI: INSERT, UPDATE, DELETE, MERGE)


1) INSERT em contexto escolar

Caso: Uma escola deseja registrar seus alunos em um banco de dados.

-- CREATE
DROP TABLE ALUNOS PURGE;
CREATE TABLE ALUNOS (
  id   NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
  nome VARCHAR2(100) NOT NULL,
  email VARCHAR2(120) UNIQUE
);

2) INSERT ALL em contexto acadêmico

Caso: A secretaria vai cadastrar vários alunos de uma vez.

-- CREATE
DROP TABLE ALUNOS PURGE;
CREATE TABLE ALUNOS (
  id   NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
  nome VARCHAR2(100) NOT NULL,
  email VARCHAR2(120) UNIQUE
);

3) UPDATE em contexto empresarial

Caso: Uma empresa precisa reajustar o salário de um funcionário.

-- CREATE
DROP TABLE FUNCIONARIOS PURGE;
CREATE TABLE FUNCIONARIOS (
  id              NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
  nome            VARCHAR2(100) NOT NULL,
  salario         NUMBER(12,2)  NOT NULL CHECK (salario >= 0),
  departamento_id NUMBER
);

-- DML: inserindo funcionário
INSERT INTO FUNCIONARIOS (nome, salario, departamento_id)
VALUES ('João', 5000, 10);

4) UPDATE em lote no RH

Caso: O RH vai dar aumento de 8% apenas para funcionários do departamento 20.

-- CREATE
DROP TABLE FUNCIONARIOS PURGE;
CREATE TABLE FUNCIONARIOS (
  id              NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
  nome            VARCHAR2(100) NOT NULL,
  salario         NUMBER(12,2)  NOT NULL CHECK (salario >= 0),
  departamento_id NUMBER
);

-- DML: inserindo funcionários
INSERT ALL
  INTO FUNCIONARIOS (nome, salario, departamento_id) VALUES ('A', 4000, 20)
  INTO FUNCIONARIOS (nome, salario, departamento_id) VALUES ('B', 4500, 20)
  INTO FUNCIONARIOS (nome, salario, departamento_id) VALUES ('C', 6000, 10)
SELECT 1 FROM dual;