DDL
DDL (Data Definition Language), ou para o português linguagem de definição de dados, é uma linguagem de computador usada para a definição de estruturas de dados, especialmente para esquematizar bancos de dados. No caso, será apresentado o DDL SQL (Structured Query Language) ou Linguagem de Consulta Estruturada, que é a linguagem de pesquisa declarativa padrão para banco de dados relacional.
Declarações DDL SQL
Permite ao usuário definir tabelas e seus elementos. Os comandos básicos da DDL são o CREATE, para criar um objeto dentro da base de dados e o DROP, que apaga um objeto do banco. Alguns SGBDs usam o comando ALTER, que permite ao usuário alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente. Exemplos do uso dos comandos DDL são:
- CREATE TABLE
- CREATE INDEX
- CREATE VIEW
- ALTER TABLE
- ALTER INDEX
- DROP INDEX
- DROP VIEW
CREATE
Utilizada para construir um novo banco de dados, tabela, índice ou consulta armazenada. Os tipos de objetos que podem ser criados dependem de qual SGBD está sendo utilizado, porém a maioria suporta a criação de tabelas, índices, usuários e banco de dados. Alguns sistemas (tais como PostgreSQL) suportam o comando CREATE, e outros comandos DDL, dentro de uma transação e portanto suportam rollback.
CREATE TABLE
Talvez o comando mais comum da declaração CREATE seja o comando CREATE TABLE. A sintaxe típica é: CREATE [TEMPORARY] TABLE [nome da tabela] ([definições de colunas]) [parâmetros da tabela].
- Definições de colunas: Uma lista separada por vírgulas consistindo de qualquer uma das seguintes
- Definição de coluna: [nome da coluna] [tipo de dado] {NULL|NOT NULL} {opções de coluna}
- Definição de chave primária: PRIMARY KEY([lista de colunas separadas por vírgulas])
- CONSTRAINTS:{CONSTRAINT} [definição de limite]
- Funcionalidade específica de SGBDR
Um exemplo de comando para criação de uma tabela chamada empregados com algumas colunas, em alguns SGBDs seria:
CREATE TABLE empregados ( id INTEGER PRIMARY KEY, nome CHAR(50) NULL, sobrenome CHAR(75) NOT NULL, data_de_aniversario DATE NULL );
A instrução de criação de tabela a seguir cria uma tabela de teste com algumas das DDL disponível para diferentes tipos de dados:
CREATE TABLE TestAllTypes
(
MyText TEXT(50),
MyMemo MEMO,
MyByte BYTE,
MyInteger INTEGER,
MyLong LONG,
MyAutoNumber COUNTER,
MySingle SINGLE,
MyDouble DOUBLE,
MyCurrency CURRENCY,
MyReplicaID GUID,
MyDateTime DATETIME,
MyYesNo YESNO,
MyOleObject LONGBINARY,
MyBinary BINARY(50)
)
Outro exemplo, para criar uma tabela com uma chave primária de campo único com uma única instrução DDL, está na instrução a seguir, que cria uma tabela chamada TestPrimaryKey com uma chave primária no campo MyID chamado PK_MyID:
CREATE TABLE TestPrimaryKey
(
MyID LONG CONSTRAINT PK_MyID PRIMARY KEY,
FirstName TEXT(20),
LastName TEXT(20)
)
CREATE INDEX
Outro uso do CREATE é para criar índices adicionais em uma tabela existente. Os índices são utilizados principalmente para melhorar o desempenho do banco de dados, e o uso inadequado pode resultar em um pior desempenho.
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table_name [ USING method ]
( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
[ WITH ( storage_parameter = value [, ... ] ) ]
[ TABLESPACE tablespace_name ]
[ WHERE predicate ]
DROP
Utilizada para remover um banco de dados, tabela, índice ou visão existente.
DROP TABLE
Um uso típico é DROP tipo_do_objeto nome_do_objeto. Por exemplo, o comando para excluir uma tabela chamada empregados seria:
DROP TABLE empregados;
A declaração DROP é diferente das declarações DELETE e (não padronizada) TRUNCATE, em que estas não removem a tabela, de fato. Por exemplo, uma declaração DELETE poderia deletar alguns (ou todos) dados da tabela enquanto deixaria a tabela propriamente dita no banco de dados, enquanto que uma declaração DROP removeria a tabela inteira do banco de dados.
DROP INDEX
Remove um índice existente do sistema de banco de dados. Para executar este comando é necessário ser o dono do índice.
DROP INDEX [CONCURRENTLY] [IF EXISTS] nome [, ...] [CASCADE | RESTRICT]
A instrução DDL a seguir exclui permanentemente o índice chamado MyUnusedIndex na tabela OverIndexedTable.
DROP INDEX MyUnusedIndex ON OverIndexedTable
ALTER
Utilizada para modifica um objeto existente do banco de dados.
ALTER TABLE
O comando ALTER TABLE altera a definição de uma tabela.
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
action [, ... ]
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
RENAME [ COLUMN ] column_name TO new_column_name
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
RENAME CONSTRAINT constraint_name TO new_constraint_name
ALTER TABLE [ IF EXISTS ] name
RENAME TO new_name
ALTER TABLE [ IF EXISTS ] name
SET SCHEMA new_schema
Um uso comum é ALTER tipo_do_objeto nome_do_objeto parâmetros. Por exemplo, o comando para adicionar(e então remover) uma coluna chamada bolhas para uma tabela existente chamada pia seria:
ALTER TABLE pia ADD bolhas INTEGER; ALTER TABLE pia DROP COLUMN bolhas;
ALTER INDEX
É usado para alterar a definição de um índice existente.
ALTER INDEX [ IF EXISTS ] name RENAME TO new_name ALTER INDEX [ IF EXISTS ] name SET TABLESPACE tablespace_name ALTER INDEX [ IF EXISTS ] name SET ( storage_parameter = value [, ... ] ) ALTER INDEX [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
Ver Também
O PostegreSQL disponibiliza uma página para ajuda nestas instruções.
Acessada em 01/08/2013 à 1:00.