oca_logoNeste 10º tópico da série, falarei um pouco sobre alguns comandos DDL, que significa “Data Definition Language” e servem para criar e alterar objetos no banco de dados. Também falarei um pouco sobre tabelas, como cria-las, por exemplo. No tópico seguinte serão abordados outros objetos comuns em bancos de dados, como views e sequences.

1) Comandos DDL

São caracterizados como comandos DDL:

1.1) comandos usando CREATE, ALTER, DROP ou RENAME.

1.2) Remover todas as linhas de uma base de dados sem remover sua estrutura (TRUNCATE).

1.3) Realizar auditorias na base de dados (AUDIT, NOAUDIT).

1.4) Adicionar uma descrição sobre um objeto ao dicionário de dados (COMMENT).

Comandos DDL executam implicitamente um COMMIT. Caso você execute um ALTER TABLE, por exemplo, este comando realizará um COMMIT, caso o ALTER TABLE seja executado com sucesso.

2) Usando comandos DDLs para criar  objetos em um banco de dados

Um SGBD possui inumeros objetos, cada um com uma finalidade específica. Aqui, listarei apenas operações em tabelas, haja vista que o próximo tópico aborda outros objetos comuns, como índices, views e sequences:

2.1) Tabela: É a estrutura básica de armazenamento em um banco de dados relacional. Dados são lógicamente armazenados em tabelas e físicamente armazenados em datafiles. Existem vários tipos de tabelas como Index-Organized Tables, Clustered Tables e etc. A mais comum é a Heap-Organized Table. A sintaxe básica de criação é:

-- sintaxe basica
-- comando DDL para a criacao de uma tabela

CREATE TABLE owner.tabela (
coluna   tipo_dados    constraints/restricoes
[...]
);

-- exemplo
-- modo 1 para criação de uma tabela, já com constraints

CREATE TABLE prod.vendedor (
ID_VENDEDOR   NUMBER        NOT NULL,
NOME          VARCHAR2(100) NOT NULL,
SETOR         VARCHAR2(40),
PRIMARY KEY(ID_VENDEDOR),
FOREIGN KEY(ID_VENDEDOR) REFERENCES PROD.CADASTRO(ID_CADASTRO)
);

-- exemplo
-- modo 2 para a criação de uma tabela, já com constraints

CREATE TABLE vendedor (
ID_VENDEDOR   NUMBER        NOT NULL CONSTRAINT pk_vendedor PRIMARY KEY,
NOME          VARCHAR2(100) NOT NULL,
SETOR         VARCHAR2(40)  NOT NULL,
ID_VENDA      NUMBER        CONSTRAINT fk_vendedor_cadastro REFERENCES vendas(id_venda)
);

-- exemplo
-- modo 3 para a criação de uma tabela, já com constraints

CREATE TABLE PROD.VENDEDOR (
ID_VENDEDOR   NUMBER        NOT NULL,
NOME          VARCHAR2(100) NOT NULL,
SETOR         VARCHAR2(40),
CONSTRAINT pk_vendedor PRIMARY KEY(ID_VENDEDOR),
CONSTRAINT fk_vendedor_cadastro FOREIGN KEY(ID_VENDEDOR) REFERENCES PROD.CADASTRO(ID_CADASTRO)
);

3) Usando comandos DDLs para alterar uma tabela.

Através do comando ALTER … é possível alterar muitas das propriedades de um objeto, como adicionar novas propriedades a este mesmo objeto e remover atributos de objetos, como por exemplo constraints em uma tabela. Existem inúmeras possibilidades para cada um dos inúmeris tipos de objetos no Oracle, portanto recomenda-se consultar a documentação oficial para uma lista completa de opções modificáveis nos objetos do banco. Abaixo seguem alguns exemplos:

-- comando DDL para criar uma PK em uma coluna
ALTER TABLE TAB_EMPREGADOS ADD CONSTRAINT PK_EMPNO PRIMARY KEY (EMPNO)

-- comando DDL para adicionar uma coluna em uma tabela
ALTER TABLE TAB_EMPREGADOS_2 ADD FERIAS NUMBER NULL

-- remover a coluna previamente criada
ALTER TABLE TAB_EMPREGADOS_2 DROP COLUMN FERIAS

4) Descrever como objetos de schema funcionam

Objetos de schema (Schema Objects) são aqueles que, como o próprio nome diz, fazem parte de um schema (ou owner). Objetos como tabelas, views e sequences, índices são objetos de schema. Usuários e roles, por exemplo, não precisam de schemas. No Oracle, ao criar um usuário, se está criando um schema.

Para um usuário de do schema A ter acesso a uma tabela do schema B, é necessário que se conceda os devídos privilégios de acesso ao schema A.

É isso ai pessoal, até a próxima. Keep Querying