Lição 05 - Definindo dados
Domínio dos dados
Até agora consideramos que os dados já foram informados pelo usuário. Agora construiremos nossas tabelas. Conheceremos os comandos responsáveis em criar cada tabela, atribuir o um tipo os dados.
Os dados em SQL podem ser dos seguintes tipos:
char [n];
O char é uma cadeia de caracteres de tamanho fixo n que é definido pelo usuário.
varchar [n];
O varchar é uma cadeia de caracteres de tamanho variável sendo que tem como tamanho máximo n que é informado pelo usuário.
date;
Dados com esse formato aceitam datas, dia, mês e ano (com quatro dígitos).
time;
Dados com esse formato aceitam horário, horas, minutos e segundos.
int;
Esse formato aceita números inteiros.
real;
Esse formato aceita números reais.
float [n];
Aceita número flutuante com precisão n definida pelo usuário.
Definição de esquema
Para criar uma tabela utilizamos o comando create table e para definir quem será a chave primária usamos o comando primary key.
Observe o exemplo a seguir onde criaremos tabelas e definiremos a chave primária.
create table cliente (nome varchar(20) not null,
endereco varchar(50),
CPF char(11) not null,
data_nascimento char(10),
primary key(CPF))
create table filme (nome varchar(20) not null,
ator_principal varchar(20),
diretor varchar(20),
genero varchar(10),
primary key(nome, ator_principal),
check genero in ("Romance","Ação","Drama","Terror","Comédia"))
No primeiro exemplo criamos a tabela cliente, como você pode observar a estrutura do create table é composta do nome da tabela que será criada e dos atributos com seus devidos domínios. Depois de informar os atributos, informamos a chave primária, através do comando primary key.
Repare que usamos not null na criação do atributo nome, ele é usado quando queremos forçar o usuário a colocar o dado. O atributo CPF, por exemplo, é nossa chave primária, por isso não poderia ficar em branco, por isso também foi usado um not null para esse atributo.
No segundo exemplo, usamos a cláusula check, ela é usada para determinar uma condição ao atributo. No caso do nosso exemplo, ele define que o gênero do filmes só pode ser Romance, Ação, Drama, Terror ou Comédia.
Removendo e alterando tabelas
Para remover uma tabela temos duas opções possíveis o drop table e o delete from. A diferença entre os dois é que o primeiro é mais drástico, com ele remove-se a tabela e todos os seus atributos, já no segundo a tabela é mantida mas os atributos são apagados.
Utilizando o delete from atributos poderão ser inseridos futuramente pois a tabela não foi excluída, ela ainda continuará existindo no banco.
Observe o exemplo abaixo:
delete from cliente
drop table cliente
Primeiro deletamos todos os atributos da tabela cliente e depois deletamos a tabela. Poderiamos ter usado apenas o drop table mas usamos os dois para mostrar a sintaxe das duas cláusulas.
Para adicionar um novo atributo a uma tabela utilizamos o alter table. As tuplas desse atributo inserido receberão o NULL para seus valores. Observe como utilizar o alter table.
alter table cliente add RG varchar(10)
Como podemos observar, informamos a tabela que terá um atributo adicionado, o nome do atributo e o domínio.
O alter table pode ser usado também para remover um atributo, ao invés de utilizar o add, usa-se drop, como no exemplo a seguir.
alter table cliente drop endereco
Informa-se o nome da tabela e o atributo a ser removido.
Restrições
Vimos anteriormente que ao criar uma tabela podemos criar restrições utilizando a cláusula check. Existe outro modo de criar uma restrição dando um nome à restrição, isso facilitará na hora de saber qual restrição foi violada.
Para criar essa restrição utilizaremos o creat domain. Observe o exemplo a seguir:
create domain CPF char(11) constraint teste_CPF check (value not null)
create domain preco numeric(4,2) constraint teste_preco check (value >=3,00)
No primeiro exemplo, criamos um teste_CPF que avalia se o CPF não é igual a null. Já no segundo verificamos se o preço, que tem 4 casas sendo que duas são depois da virgula, é maior ou igual a 3.
Triggers
Trigger, é uma palavra do inglês que em português seria algo como gatilho, essa cláusula representa uma ação que é realizada automaticamente quando ocorre uma mudança, especificada nessa cláusula, em banco de dados.
Logo abaixo temos uma trigger que é ativada quando acrescenta-se um novo preço de aluguel de dvd na tabela aluguel. Se for informado qualquer valor menor que três a trigger atualizará automaticamente o banco substituindo o valor por 3 que é o valor mínimo de um aluguel.
define trigger preco_menor on update of aluguel
(if new aluguel.preco < 3
then (update aluguel.preco
set aluguel.preco = 3)
Exercício
Como foi chamada a versão da Linguagem SQL revisada em 1999?
Deixe suas respostas nos comentários. Obrigado!
Fonte: Comunidade CDTC
Nenhum comentário:
Postar um comentário