DDL SQL – linguagem definição dados

ddl-Linguagem-de-Definição-de-Dados
Erro, não existe o grupo! Verifique sua sintaxe! (ID: 3)

1. Criando Databases

CREATE DATABASE

Resumo: Neste tópico, você aprenderá como criar um novo banco de dados dentro de um servidor de banco de dados usando instrução da linguagem DDL, CREATE DATABASE.

Antes de qualquer coisa como a criação de tabelas, inserir e consultar dados, você deve criar um banco de dados primeiro. Um banco de dados é um recipiente para armazenar todos os objetos que você irá criar como tabelas, views, procedures. e até mesmo os dados.

A fim de criar um banco de dados você deve ter permissão apropriada no seu servidor de banco de dados, para isso inicie o gerenciador SQL (query analyzer, phpmyadmin etc) e abra uma janela de linha de comando para comunicar-se com o SGBD.

A sintaxe de criação de uma nova base de dados é simples como se segue e deve ser digitada na query para criar uma database com o nome gregs_list:

CREATE DATABASE gregs_list;
DDL significado - create database

Abaixo o exemplo feito pelo Microsoft SQL Server, notem que é diferente do SGBD acima, que é o MySQL. Cada SGBD possui mensagens de feedback (retorno) de maneira diferentes.

banco de dados relacionais Microsoft SQL Server

Seguido pela palavra-chave CREATE DATABASE é o nome do banco de dados que você deseja criar. Há algumas notas sobre nomes de bancos de Dados que você deve saber antes de criar um novo.

  • O nome do banco de dados deve ser o mais descritivo possível. Deve descrever a natureza dos dados que ela contém, para exemplos de RH, Produções, clientes e fornecedores.
  • O nome do banco de dados tem de ser único em um servidor de banco de dados.
  • Em alguns ambientes, como o UNIX e Linux, o nome do banco de dados é case-sensitive por isso você deve usar um nome consistente quando se referir a ele.
  • Diferentes organizações têm diferentes convenções de nomenclatura em vigor que se aplica ao banco de dados, portanto, certifique-se de que você leu antes de criar um novo.

USE DATABASE

Agora você precisa dizer ao SGBD que usará a Database recém criada, utilizando o comando USE nome-da-database. Senão fizer isso, todos os comandos executados serão criados na database padrão do SGBD e na realidade o que queremos é criar tabelas na database gregs_list.

USE gregs_list;
banco de dados sql - use database

Agora que você completou esta lição, você deve ser capaz de:

  • Aprendeu como usar o comando CREATE DATABASE
  • Aprendeu como usar o comando USE DATABASE
  • Definir corretamente o nome de um banco de dados

2. Criando Tabelas

CREATE TABLE

Resumo: Neste tutorial, você aprenderá como usar a declaração SQL CREATE TABLE para criar as novas tabelas.

Tabelas são elementos básicos do banco de dados. Antes de armazenar dados em uma tabela, você precisa criá-las. O SQL fornece a instrução CREATE TABLE para permitir que você faça isso. Abaixo está a sintaxe simples do comando CREATE TABLE:

CREATE TABLE lista_frutas

(Coluna_nome1 tipo_dado (tamanho_dado),

Coluna_nome2 tipo_dado (tamanho_dado), ..

);
SQL CREATE TABLE

Há quatro componentes que você precisa especificar ao criar uma tabela no banco de dados:

  • Nome da tabela do banco de dados. Sugere-se que o nome da tabela deve ser significativa e de forma plural de um substantivo. Por exemplo, produtos é o nome de uma tabela que armazena os dados de produtos.
  • Nome de cada coluna na tabela. Você deve nomear a coluna a ser significativo também e em um substantivo com a forma singular.
  • Tipo de dados de cada coluna. Você deve escolher o tipo de dados correto para cada coluna em uma tabela. Os tipos mais comuns de dados são de texto (varchar, nvarchar), numéricos (smallint, int, bigint), data datetime tempo, período de tempo, blob … Você pode consultar apoiando tipo de dados na documentação do sistema de gestão específico relacional banco de dados.
  • Tamanho máximo de cada coluna: Você tem que especificar o tamanho máximo de dados para cada coluna. Por exemplo, se você armazenar o nome do produto, tente imaginar o tamanho máximo de um produto pode ter, como 255 carácteres.

Ao lado dos componentes acima, você pode ter mais adições para cada coluna como a coluna é obrigatória ou não (NULL ou NOT NULL), valor padrão da coluna e valor da coluna é exclusivo ou não. Se uma coluna é único e não nulo pode ser uma chave primária da tabela.

Imagine a criação de uma tabela chamada contatos com os dados abaixo:

instrução CREATE TABLE sql

Para isso precisamos saber o TIPO de DADO e o tamanho do campo, analise a tabela abaixo linha a linha para saber o que cada uma faz:

TIPO de DADOs sql

Agora que sabemos exatamente o que cada linha faz, basta digitar o comando SQL e executar para criarmos a tabela contatos.
                     

CREATE TABLE contatos

(

nome VARCHAR(30),

sobrenome VARCHAR(20),

email VARCHAR(50),

aniversario SMALLDATETIME,    -- (No Microsoft SQL Server não existe o tipo DATA, no MySQL possui)

profissao VARCHAR(50),

endereco VARCHAR(50),

estado_civil VARCHAR(20),

interesse VARCHAR(100),

buscando VARCHAR(100)

);

Na verdade, você precisará de mais alguns tipos de dados, como números. Suponha que você adicionou um coluna “preço” à nossa tabela contatos, não podemos colocar o tipo VARCHAR, pois valores armazenados como VARCHAR são interpretados como texto, e você não será capaz de efeturar operações matemáticas com eles… Falaremos mais sobre os tipos de dados a seguir.

NULL

Algumas colunas na sua tabela devem ter sempre valores, você pode facilmente configurar sua tabela para não aceitar valores NULOS para algumas colunas.

CREATE TABLE valores nulos NULL

Se você especificou no comando CREATE TABLE que algumas colunas não aceitem valores nulos, você deve sempre fornecer um valor para essa Coluna no seu comando INSERT. Se não o fizer, acontecerá um erro.

Uma vez criada a tabela, você pode alterá-la usando o comando ALTER TABLE ou removê-la usando DROP TABLE

create database

3. Chave Primária

PRIMARY KEY – PK – CHAVE PRIMÁRIA

Resumo: Neste tópico, vamos explicar o conceito de restrições de chave primária (Constraints PRIMARY KEY) e mostrar como criá-la durante a criação ou modificação da estrutura da tabela.

Uma PRIMARY KEY declara uma coluna ou uma combinação de colunas cujos valores identificam exclusivamente cada registro na tabela. A coluna ou a combinação de colunas é também conhecida como chave primária da tabela. Uma PRIMARY KEY ajuda a reforçar a integridade da entidade (tabela) automaticamente.

restrições de chave primária (Constraints PRIMARY KEY

Existem várias regras que a chave primária deve seguir:

dados da coluna na chave primária

Outras regras:

  • Há uma e apenas uma chave primária para cada tabela.
  • Tipo de dados da coluna na chave primária não pode ser BLOB, CLOB ARRAY, ou NCLOB.

Como criar e modificar a PRIMARY KEY

Você pode criar uma PRIMARY KEY quando você cria uma tabela. As restrições de chave primária podem ser definidas a nível de coluna ou em nível de tabela. Se a chave primária contém várias colunas, deve ser definida a nível de tabela.

Você pode adicionar uma restrição PRIMARY KEY a uma tabela existente que não tem qualquer restrição PRIMARY KEY disponível. Você pode até mesmo modificar ou eliminar as restrições PRIMARY KEY de uma tabela se ela já existe.

Vamos dar uma olhada nos exemplso para entender como a PRIMARY KEY trabalha:

Para especificar a chave primária em nível de tabela,  basta digitar após a última coluna no comando CREATE TABLE  o comando  PRIMARY KEY e colocar entre parênteses o nome da coluna que vamos usar com chave primaria, no caso, a coluna  contact_id.

CREATE TABLE  com comando  PRIMARY KEY

Abaixo outro exemplo de criação de chave primária em nível de tabela onde a mesma possui mais de uma coluna formando a chave primária.

CREATE TABLE Ordens_Detalhes (

IDOrdem int(11) NOT NULL,

IDProduto int(11) NOT NULL,

PrecoUnitario decimal(19,4) NOT NULL,

Quantidade smallint(6) NOT NULL,

Desconto float NOT NULL,

PRIMARY KEY (IDOrdem,IDProduto)

)

Na tabela Ordens_Detalhes, temos uma chave primária que contém duas colunas IDOrdem e IDProduto. Portanto, a restrição de chave primária tem de ser definida no nível da tabela. Como você vê o definimos no final da instrução CREATE TABLE antes do parênteses.

A seguir, um exemplo de chave primaria criada em nível de coluna, a tabela logs é simples, só possui duas colunas: LogId e Mensagem.

LogId é a chave primária da tabela, e foi definida ao lado do nome da coluna com a declaração PRIMARY KEY.

CREATE TABLE logs (

LogId int (11) NOT NULL PRIMARY KEY,

Mensagem char (255) NOT NULL

)

Como criar uma chave primária com auto incremento

Adicionando o comando AUTO_INCREMENT ou IDENTITY (Microsoft SQL Server) ao lado do nome da coluna que está sendo definida como chave primaria  na cláusula CREATE TABLE faz com que o SGBD automaticamente preencha a coluna que é primary key com um valor que se autonumera automaticamente. Se nada for definido o valor começa em 1 se incrementa de 1 em 1. Podemos alterar que o auto incremento comece com outros valores.

chave primária com auto incremento

Abaixo um exemplo de criação de uma tabela com chave primária que é autonumeração no Microsoft SQL Server. No lugar de auto_increment o comando é substitúido por IDENTITY.

Microsoft SQL Server auto_increment comando IDENTITY

 

Quando você consulta os dados de várias tabelas usando JOINS , as PRIMARY KEY permitem que uma tabela se relacione com outras, permitindo assim a navegação no modelo de dados.

Neste tutorial, você aprendeu o conceito de PRIMARY KEY que quando aplicadas as tabelas do banco de dados, garantem a integridade de dados automaticamente.

CREATE, SELECT e INSERT, ao mesmo tempo

Vamos criar uma tabela com uma coluna (profession) ao mesmo tempo de criação, vamos preencher a coluna profissão com valores a partir de um SELECT, usando o comando AS.

A palavra AS preenche uma nova tabela com o resultado de um SELECT. Se não especificarmos que a nova tabela tem uma coluna e colocarmos os seus nomes, o AS teria criado uma tabela e preenchido com o mesmo nome e tipo dados do SELECT.

CREATE, SELECT e INSERT, ao mesmo tempo

Exemplo no MS SQL Server use o comando INTO

SELECT * INTO novatabela FROM horarios

Valores Padrão (DEFAULT)

Resumo: Neste tópico, você aprenderá como usar o DEFAULT para especificar um valor padrão que será inserido na coluna.

DEFAULT – Quando você cria uma tabela de banco de dados , você tem a opção de especificar um valor padrão. Usando valores padrão em colunas de banco de dados isola-se problemas de design.

É importante lembrar que os valores padrão, somente são utilizados quando uma coluna não é especificada em um INSERT, ou quando a palavra-chave padrão é utilizada. Se você não declarar explicitamente um valor padrão, o BD implicitamente define o valor padrão a ser NULO.

A sintaxe do DEFAULT é:

CREATE TABLE veiculo

(

cd_placa int not null,

nm_modelo varchar(30) default 'Fusca',

nm_fabricante varchar(30),

dt_fabricacao smalldatetime,

nm_cor varchar(20),

nm_tipo_combustivel varchar(20),

qt_litros_combustivel decimal(4,2)

);

INSERT INTO veiculo (cd_placa,nm_modelo,nm_fabricante,dt_fabricacao,nm_cor,

nm_tipo_combustivel,qt_litros_combustivel)

VALUES

(2455,'Fox','Volkswagem',07/07/200,'azul','Flex',11.90)

SEM O MODELO (DEFAULT)

INSERT INTO veiculo (cd_placa,nm_fabricante,dt_fabricacao,nm_cor,nm_tipo_combustivel,

qt_litros_combustivel)

VALUES

(3333,'Volkswagem',07/07/200,'azul','Flex',11.90)

4. Excluindo Tabelas

DROP TABLE

Resumo: Neste tópico, você aprenderá como usar o DROP TABLE para remover tabelas e seus objetos relacionados, tais como dados, índices, triggers e permissões.

DROP TABLE é utilizado para remover do banco de dados as tabelas. Quando você usa o DROP TABLE, o gerenciador de banco de dados remove todos os objetos relacionados a essa tabela, incluindo dados, suas definições, índices, restrições de tabela, triggers (gatilhos) e permissões.

A sintaxe do DROP TABLE é muito mais fácil do que criar uma tabela. Veja como é simples o comando:

DROP TABLE remove tabelas do banco de dados
DROP TABLE tabela_nome

Seguido pelo DROP TABLE é o nome da tabela que você deseja remover. Antes de executar esta consulta você deve garantir que você tem permissão suficiente para fazê-lo. Se a consulta for executada com êxito, a tabela será removida do banco de dados em uso.

Se você deseja remover uma tabela em um banco de dados diferente, você precisa usar a seguinte sintaxe:

DROP TABLE banco_de_dados_nome.tabela_nome

Na sintaxe acima, foi explicitamente usado o nome do banco de dados e o nome da tabela separados por um ponto.

Vamos praticar a instrução DROP TABLE com vários exemplos.

exemplos de DROP TABLE

Aqui está um exemplo de remoção da tabela funcionarios do banco de dados em uso (ATUAL):

DROP TABLE funcionarios

Para remover a tabela funcionarios do banco de dados tmp, você pode usar a seguinte consulta:

DROP TABLE tmp.funcionarios

Observações sobre o DROP TABLE

  • DROP TABLE irá funcionar contendo ou não DADOS em sua tabela, então use esse comando com extrema cautela. Uma vez que sua tabela é excluída, todos e quaisquer dados que estavam nela serão perdidos.
  • Você deve encontrar todas as chaves estrangeiras e referências a tabela que será removida. Então após isso você remove todas essas referências antes de utilizar o comando DROP TABLE.
  • É mais seguro especificar o nome do banco de dados antes do nome da tabela, quando você utilizar o comando DROP TABLE. Porque na estrutura do banco de dados, você pode ter sistemas diferentes para diferentes fins e tabelas com os mesmos nomes. Para evitar essa situação inesperada, sua empresa deve possuir uma política de segurança muito rigorosa a nível de banco de dados.
  • Se você quiser apenas apagar os dados utilize o comando DELETE ou TRUNCATE ao invés de DROP.

Neste tutorial, você aprendeu como usar DROP TABLE para remover tabelas do banco de dados e seus objetos relacionados.

5. Alterando Tabelas

ALTER TABLE

Resumo: Neste tópico, você aprenderá como usar o ALTER TABLE para modificar o esquema de uma tabela no banco de dados.

Há alguns casos em que você precisa mudar a estrutura de uma tabela no banco de dados existente, como adicionar novas colunas, remover colunas existentes.
SQL disponibiliza o comando ALTER TABLE para permitir que você modifique a estrutura de uma tabela existente. Com o ALTER TABLE, você pode executar as seguintes ações em uma tabela no banco de dados:

  • Adicionar uma nova coluna ou remover uma coluna existente na tabela.
  • Modificar o tamanho máximo de um tipo de dados da coluna.
  • Adicionar ou remover o valor padrão de uma coluna.
  • Adicionar ou remover restrições da tabela.

Para adicionar uma nova coluna em uma tabela você deve utilizar a seguinte sintaxe:

ALTER TABLE tabela_nome ADD COLUMN nova_coluna tipo-de-dados(datalength)

Primeiro você especifica a tabela que você deseja adicionar uma nova coluna e então você especificar nome da nova coluna, o tipo de dados e seu tamanho máximo de dados.

Por exemplo, para adicionar nova coluna chamada availableOnline na tabela de produtos em nosso banco de dados de exemplo você pode executar a seguinte consulta:

ALTER TABLE produtos ADD BIT COLUNA availableOnline NOT NULL

Para remover uma coluna existente em uma tabela no banco de dados, você precisa especificar a tabela e o nome da coluna que você deseja remover. Aqui está a sintaxe:

ALTER TABLE tabela_nome DROP COLUMN coluna_existente

Para remover a coluna recém criada availableOnline na tabela de produtos, você pode usar ALTER TABLE … DROP COLUMN como abaixo:

ALTER TABLE produtos DROP availableOnline COLUMN

Quando você EXCLUIR uma coluna, todos os dados dessa coluna na tabela do banco de dados são removidos. Se excluir uma coluna que é chave primária, que é uma parte de uma chave composta da tabela, não só os dados da coluna são removidas, mas também todos os registos duplicados na tabela quese relaciona.

A instrução ALTER TABLE pode ser diferente entre os diversos SGBD existentes, você deve verificar a documentação do próprio banco de dados para ter um melhor entendimento antes de usar esse comando.

Você não terá que começar tudo do zero nas tabelas que você criou sem PRIMARY KEY você pode utilizar a declaração ALTER TABLE e alterar uma tabela existente. Vejamos o comando no exemplo abaixo executado no Microsoft SQL Server:

SQL - instrução ALTER TABLE

Renomeando uma tabela no Microsoft SQL Server
Use a stored procedure SP_rename para alterar os nomes de tabelas e colunas no caso do MSSQL Server.

EXEC sp_rename 'my_contacts', 'tb_contatos';

Renomeando uma coluna no MS-SQL Server

EXEC sp_rename 'tb_contatos.contact_id', 'cd_contato', 'COLUMN';

Neste tutorial, você aprendeu a alterar tabelas usando o comando ALTER TABLE.

Perguntas Frequentes

DDL O que é?

DDL (Data Definition Language) em SQL é uma parte da linguagem SQL que é usada para definir e gerenciar a estrutura dos objetos de banco de dados. Ela permite a criação, a modificação e a exclusão de tabelas, índices, restrições e outros elementos estruturais de um banco de dados.

O que significa database?

O termo “database” significa “banco de dados” em inglês. É uma combinação das palavras “data” (dados) e “base” (base). Um banco de dados é uma base onde os dados são armazenados de forma organizada e acessível para manipulação e recuperação.

Prof. Eduardo H Gomes
Prof. Eduardo H Gomes

Mestre em Engenharia da Informação, Especialista em Engenharia da Computação, Cientista da Computação, Professor de Inteligência Artificial no IFSP, 18 anos de docência no Ensino Superior. Apaixonado por Surf, Paraglider, Mergulho livre, Tecnologia, SEO, Banco de Dados e Desenvolvimento Web.