Você está na página 1de 7

Curso: Cincia da Computao 3 Semestre Disciplina: Linguagem de Program.

Banco de Dados
Instituto de Cincias Exatas e Tecnolgicas Campus Assis

Prof(a): Alexandre Serezani Ttulo: Apostila 2 (DDL)

DDL Data Definition Language


DEFINIO So comandos utilizados para a definio das estruturas de dados. Existem cinco tipos bsicos de instrues DDL: CREATE: cria uma estrutura de banco de dados. Por exemplo, CREATE TABLE utilizada para criar uma tabela. ALTER: modifica uma estrutura de banco de dados. Por exemplo, ALTER TABLE utilizada para modificar a estrutura de uma tabela. DROP: remove uma estrutura de um banco de dados. Por exemplo: DROP TABLE utilizada para remover uma tabela. RENAME: muda o nome de uma tabela TRUNCATE: exclui todas as linhas de uma tabela. TIPOS DE DADOS COMUMENTE USADOS EM ORACLE TIPO DO ORACLE
CHAR(comprimento)

SIGNIFICADO
Armazena strings de comprimento fixo. O parmetro comprimento especifica o comprimento da string. Se uma string de comprimento menor for armazenada, ela ser preenchida com espaos no final. Por exemplo, CHAR(2) pode ser usado para armazenar uma string de comprimento fixo de dois caracteres; se C for armazenado em char(2), um espao ser adicionado no final, j CA armazenado como est, sem preenchimento. Armazena strings de comprimento varivel. O parmetro comprimento especifica o comprimento mximo da string. Por exemplo, VARCHAR2(20) pode ser usado para armazenar uma string de at 20 caracteres de comprimento. Nenhum preenchimento usado no final de uma string menor. Armazena data e horas. O tipo DATE armazena o sculo, todos os quatro dgitos de um ano, o ms, o dia, a hora(no formato de 24 horas), o minuto e o segundo. Ele pode ser utilizado para armazenar datas e horas entre 1 de janeiro de 4712 a.C. e 31 de dezembro de 4712 d.C. Armazena valores inteiros. Um valor inteiro no contm um ponto flutuante: trata-se de um nmero inteiro, como 1, 10 e 115. Armazena nmeros de ponto flutuante, mas tambm pode ser utilizado para armazenar valores inteiros. A preciso o nmero mximo de dgitos ( esquerda e direita de um ponto decimal, se for utilizado) que podem ser utilizados para o nmero. A preciso mxima suportada pelo banco de dados ORACLE 38. A escala o nmero mximo de dgitos direita de um ponto decimal (se for utilizado). Se nem a preciso nem a escala forem especificadas, qualquer nmero poder ser armazenado, at uma preciso de 38 dgitos. Qualquer tentativa de armazenar um nmero que ultrapasse a preciso ser rejeitada pelo banco de dados. Lanado no Oracle Database 10g, armazena um nmero de ponto flutuante de 32 bits e preciso simples. Introduzindo no Oracle Database 10g, armazena um nmero de ponto flutuante de 64 bits.

VARCHAR2(comprimento)

DATE

INTEGER NUMBER(preciso, escala)

BINARY_FLOAT BINARY_DOUBLE

1.

CRIANDO UMA TABELA

Para criar uma tabela, use a instruo CREATE TABLE. A sintaxe simplificada da instruo CREATE TABLE :
CREATE TABLE nome_tabela ( nome_coluna tipo [CONSTRAINT def_restrio DEFAULT exp_padro] [, nome_coluna tipo CONSTRAINT def_restrio DEFAULT exp_padro] ... ] ) [ON COMMIT {DELETE | PRESERVE} ROWS] TABLESPACE nome_tablespace;

Onde GLOBAL TEMPORARY: significa que as linhas da tabela so temporrias (essas tabelas so conhecidas como tabelas temporrias). As linhas de uma tabela temporria so especficas para uma sesso de usurio e o tempo durante o qual persistem definido na clusula ON COMMIT. nome_tabela: o nome da tabela a ser criada no banco de dados. nome_coluna: o nome de uma coluna. tipo: o tipo de uma coluna. def_restrio: uma restrio em uma coluna. exp_padro: uma expresso para atribuir um valor padro a uma coluna. ON COMMIT: controla a durao das linhas em uma tabela temporria. DELETE significa que as linhas so excludas no final de uma transao. PRESERVE significa que as linhas so mantidas at o fim de uma sesso de usurio, no ponto em que as linhas so excludas. Se voc omitir ON COMMIT para uma tabela temporria, o padro DELETE ser usado. tablespace: o tablespace da tabela. Se voc omitir um tablespace, a tabela ser ser armazenada no tablespace padro do usurio. O Exemplo a seguir se conecta como usurio SEREZANI e cria a tabela PRODUTOS:
CONNECT serezani/manager CREATE TABLE produtos ( id INTEGER CONSTRAINT produtos_pk PRIMARY KEY, nome VARCHAR(70) NOT NULL, status VARCHAR(10), dt_alteracao DATE DEFAULT SYSDATE, vl_produto number(10,2) );

Vejamos a criao da mesma tabela de outra forma e com tipos de coluna diferentes:
CONNECT serezani/manager CREATE TABLE produtos ( id NUMBER(10,0) NOT NULL, nome VARCHAR2(70) NOT NULL, status VARCHAR2(10), dt_alteracao DATE DEFAULT SYSDATE, vl_produto number(10,2), CONSTRAINT produtos_pk PRIMARY KEY );

E criaremos uma tabela chamada PEDIDOS.

CONNECT serezani/manager CREATE TABLE pedidos_compra( id INTEGER NOT NULL, nome_cliente VARCHAR(70) NOT NULL, id_produto INTEGER NOT NULL, qtde_produto NUMBER(12,2) NOT NULL, dt_compra DATE DEFAULT SYSDATE, CONSTRAINT pedidos_compra_pk PRIMARY KEY );

O exemplo a seguir cria uma tabela temporria chamado PRODUTOS_TEMP, cujas linhas sero mantidas at o fim de uma sesso de usurio (ON COMMIT PRESERV ROWS).
CONNECT serezani/manager CREATE GLOBAL TEMPORARY TABLE produtos_temp ( id NUMBER(10,0) NOT NULL, nome VARCHAR2(70) NOT NULL, status VARCHAR2(10), dt_alteracao DATE DEFAULT SYSDATE, vl_produto number(10,2), CONSTRAINT produtos_pk PRIMARY KEY ) ON COMMIT PRESERVE ROWS;

Utilizando a tabela criada acima, faremos o seguinte procedimento: Adicionamos uma linha na tabela PRODUTOS_TEMP, depois desconectamos do banco de dados no fim da sesso, o que foi adicionado na tabela PRODUTOS_TEMP ser excludo. Voltaremos a nos conectar como SEREZANI, e consultaremos a tabela PRODUTOS_TEMP, no qual mostrar que no existem linhas nessa tabela.
INSERT INTO produtos_temp (id, nome, status) VALUES (1, Laranja, Novo); DISCONNECT CONNECT serezani/manager SELECT * FROM produtos_temp;

ALTERANDO UMA TABELA Voc altera uma tabela utilizando a instruo ALTER TABLE, que executa tarefas como: Adicionar, modificar ou excluir uma coluna Adicionar ou excluir uma restrio Ativar ou desativar uma restrio

ADICIONANDO UMA COLUNA O exemplo a seguir utiliza a instruo ALTER TABLE para adicionar uma coluna INTEGER chamada QTDE na tabela PRODUTOS.
ALTER TABLE produtos ADD qtde INTEGER;

O exemplo a seguir adiciona uma coluna chamada DATA_COMPRA do tipo DATE com um valor dafault de SYSDATE(data/hora corrente) na tabela PRODUTOS
ALTER TABLE produtos ADD data_compra DATE DAFAULT SYSDATE NOT NULL;

MODIFICANDO UMA COLUNA A lista a seguir mostra alguns aspectos que voc pode modificar em uma coluna utilizando ALTER TABLE: Alterar o tamanho de uma coluna (caso o tipo de dados seja um cujo o comprimento possa ser alterado, como CHAR e VARCHAR2) Alterar a preciso de uma coluna numrica Alterar o tipo de dados de uma coluna Alterar o valor padro de uma coluna a) ALTERANDO O TAMANHO DE UMA COLUNA A instruo ALTER TABLE a seguir aumenta o comprimento mximo da coluna NOME para 100 da tabela PRODUTOS.
ALTER TABLE produtos MODIFY nome VARCHAR2(100) NOT NULL;

OBS: S se pode diminuir o comprimento de uma coluna se no houver uma linha na tabela ou se todas as linhas contiverem valores nulos para essa coluna. b) ALTERANDO A PRECISO DE UMA COLUNA NUMRICA A instruo ALTER TABLE a seguir modifica a preciso da coluna VL_PRODUTO para 12,2.
ALTER TABLE produtos MODIFY vl_produto NUMBER(12,2);

OBS: S possvel diminuir a preciso de uma coluna numrica se no houver uma linha na tabela ou se a coluna contiver valores nulos. c) ALTERANDO O TIPO DE DADOS DE UMA COLUNA A instruo ALTER TABLE a seguir altera o tipo de dados da coluna STATUS para CHAR.
ALTER TABLE produtos MODIFY status CHAR(10);

OBS: Se a tabela estiver vazia ou se a coluna contiver valores nulos, voc poder alterar a coluna para qualquer tipo de dados (incluindo um tipo de dados mais curto), caso contrrio, voc s poder mudar um valor VARCHAR2 para CHAR (e vice-versa), desde que no torne a coluna mais curta, voc no pode mudar um valor DATE para NUMBER. d) ALTERANDO O VALOR PADRO DE UMA COLUNA A instruo ALTER TABLE a seguir altera o valor padro da coluna DATA_COMPRA para SYSDATE 1
ALTER TABLE produtos MODIFY data_compra DEFAULT SYSDATE 1;

OBS: O valor padro s se aplica s novas linhas adicionadas na tabela. As linhas novas tero a coluna DATA_COMPRA configurada com a data atual menos um dia. 4

EXCLUINDO UMA COLUNA A instruo ALTER TABLE a seguir exclui a coluna VL_PRODUTO da tabela PRODUTOS.
ALTER TABLE produtos DROP COLUMN vl_produto;

ADICIONANDO UMA RESTRIO Nos exemplos anteriores vimos exemplos de tabelas com restries PRIMARY KEY, FOREIGN KEY e NOT NULL. Essas restries, junto com outros tipos de restries, esto resumidas abaixo. RESTRIO
CHECK NOT NULL PRIMARY KEY FOREIGN KEY

TIPO DE RESTRIO
C C P R

SIGNIFICADO
O valor de uma coluna ou de um grupo de colunas deve satisfazer determinada condio. A coluna no pode armazenar um valor nulo. Na verdade, isso imposto como uma restrio CHECK. A chave primria de uma tabela. Uma chave primria constituda de uma ou mais colunas que identificam exclusivamente cada linha de uma tabela. Uma chave extrangeira de uma tabela. Uma chave extrangeira referencia uma coluna em outra tabela ou uma coluna na mesma tabela (o que conhecido como auto-referncia). A coluna ou o grupo de colunas s pode armazenar valores exclusivos. As alteraes nas linhas da tabela feitas por meio de uma viso devem passar primeiro por uma verificao. A viso somente leitura

UNIQUE CHECK OPTION READ ONLY

U V O

a) ADICIONANDO UMA RESTRIO CHECK A instruo ALTER TABLE a seguir adiciona uma restrio CHECK na tabela PRODUTOS.
ALTER TABLE produtos ADD CONSTRAINT produtos_ck CHECK (status IN (ATIVO, PASSIVO));

Essa restrio garante que a coluna STATUS seja sempre configurada como ATIVO ou PASSIVO. Se voc tentar adicionar uma linha que no satisfaz a restrio CHECK, o banco de dados retornar o erro ORA-02290. Por exemplo, a instruo INSERT a seguir tenta adicionar uma linha cujo o valor de STATUS no est na lista:
INSERT INTO produtos (id, nome, status) VALUES (10, ABACAXI, ESTRAGADO);

Como a restrio CHECK violada, o banco de dados rejeita a nova linha. b) ADICIONANDO UMA RESTRIO NOT NULL A instruo ALTER TABLE a seguir adiciona uma restrio NOT NULL na coluna STATUS da tabela PRODUTOS.
ALTER TABLE produtos MODIFY status CONSTRAINT produtos_nn NOT NULL;

OU
ALTER TABLE produtos MODIFY COLUMN status NOT NULL;

c) ADICIONANDO UMA RESTRIO FOREIGN KEY A instruo a seguir adiciona uma restrio FOREIGN KEY que referencia a coluna ID da tabela de PRODUTOS.
ALTER TABLE pedidos_compra ADD CONSTRAINT pedidos_compra_fk FOREIGN KEY produdos (id);

Voc pode utilizar a clusula ON DELETE CASCATE com uma restrio FOREIGN KEY para especificar que, quando uma linha excluda na tabela pai, todas as linhas correspondentes na tabela filho tambm so excludas. Exemplo:
ALTER TABLE pedidos_compra ADD CONSTRAINT pedidos_compra_fk FOREIGN KEY produtos (id) ON DELETE CASCATE;

d) ADICIONANDO UMA RESTRIO UNIQUE A instruo ALTER TABLE a seguir adiciona uma restrio UNIQUE na coluna NOME da tabela de PRODUTOS.
ALTER TABLE produtos ADD CONSTRAINT produtos_un UNIQUE (nome);

Todas as linhas existentes ou novas sempre devem ter um valor exclusivo na coluna NOME. EXCLUINDO UMA RESTRIO A clusula DROP CONSTRAINT do comando ALTER TABLE, exclui uma restrio. O exemplo a seguir exclui a restrio PRODUTOS_UN.
ALTER TABLE produtos DROP CONSTRAINT produtos_un;

DESATIVANDO UMA RESTRIO Por padro uma restrio ativada quando voc a cria. Voc pode desativar uma restrio adicionando DISABLE no final da clusula CONSTRAINT. O exemplo a seguir adiciona uma CONSTRAINT na tabela PRODUTOS, mas tambm a desativa.
ALTER TABLE produtos ADD CONSTRAINT produtos_un UNIQUE (nome) DISABLE;

possvel desativar uma CONSTRAINT j existente utilizando a clusula DISABLE CONSTRAINT do comando ALTER TABLE.
ALTER TABLE produtos DISABLE CONSTRAINT produtos_un;

ATIVANDO UMA RESTRIO Voc pode ativar uma restrio existente utilizando a clusula ENABLE CONSTRAINT do comando ALTER TABLE. 6

ALTER TABLE produtos ENABLE CONSTRAINT produtos_un;

Para ativar uma restrio, todas as linhas da tabela devem satisfaz-la. Por exemplo, se a tabela PRODUTOS contivesse linhas, a coluna NOME precisaria conter valores exclusivos. Voc pode aplicar uma restrio somente a dados novos, especificando atravs da clusula ENABLE NOVALIDATE.
ALTER TABLE produtos ENABLE NOVALIDATE CONSTRAINT produtos_un;

ALTERANDO O NOME DE UMA TABELA possvel mudar o nome de uma tabela com a instruo RENAME. O exemplo a seguir, muda o nome da tabela PEDIDOS_COMPRA para PEDIDO_COMPRA.
RENAME pedidos_compra TO pedido_compra;

OBS: Se voc utilizou o nome da tabela em seus nomes de restrio, deve alterar os nomes de suas restries. TRUNCANDO UMA TABELA possvel truncar uma tabela utilizando a instruo TRUNCATE TABLE. Isso remove todas as linhas de uma tabela e zera a rea de armazenamento de uma tabela. O exemplo a seguir trunca a tabela PEDIDO_COMPRA.
TRUNCATE TABLE PEDIDO_COMPRA;

OBS: Se voc precisa remover todas as linhas de uma tabela, deve utilizar TRUNCATE em vez de DELETE. Porque o TRUNCATE zera a rea de armazenamento de uma tabela e a deixa pronta para receber novas linhas. Uma instruo TRUNCATE no exige um espao de undo no banco de dados e voc no precisa executar uma instruo COMMIT para tornar a excluso permanente. O espao de undo uma rea que o software de banco de dados para registrar as alteraes feitas nele. EXCLUINDO UMA TABELA Voc exclui uma tabela com a instruo DROP TABLE. O Exemplo a seguir exclui a tabela PEDIDO_COMPRA.
DROP TABLE pedido_compra;

Você também pode gostar