Você está na página 1de 35

Modelo Relacional – Definição e

Manipulação de Dados
Curso de Sistemas de Informação
Disciplina de Banco de Dados – IF976

Profa. Bernadette Farias Lóscio


bfl@cin.ufpe.br
SQL

• DDL – Data Definition Language


• DML – Data Manipulation Language
DATA DEFINITION LANGUAGE
LINGUAGEM DE DEFINIÇÃO DE DADOS
Criação de Esquemas/Bancos de Dados

CREATE SCHEMA <nome do esquema>;


ou
CREATE SCHEMA <nome do esquema> AUTHORIZATION <usuário dono do
esquema>;

• Nem todos os usuários são autorizados a criar esquemas ou elementos


de esquema, como tabelas e colunas, por exemplo.
• Os privilégios para esse tipo de ação devem ser concedidos às contas de
usuário pelo administrador do sistema ou o pelo DBA (administrador do
banco de dados).
Criação de Tabelas

CREATE TABLE <nome da tabela>


(<descrição dos atributos>
<restrições>);
Criação de Tabelas
• Descrição dos atributos:
– <nome do atributo> <tipo do atributo>
• Tipos básicos da SQL para atributos (domínios):
– Numérico
– Cadeia (sequencia) de caracteres
– Booleano
– Data
– Timestamp (engloba date e time)
Criação de domínios
• É possível criar um novo domínio para um
atributo, se necessário.

CREATE DOMAIN TIPO_CPF AS CHAR(11);


Definição de Restrições
• As restrições podem ser criadas no momento
da criação da tabela, logo após a criação dos
atributos.
• Tais restrições também podem ser criadas
depois, através do comando ALTER TABLE.
Definição de Restrições
• Chaves: Chave Primária

CONSTRAINT <nome_da_restrição> PRIMARY KEY (<atributos>)


Restrição criada explicitamente

– Caso se queira, a PK pode ser definida como sendo auto


incrementada automaticamente. Cada fabricante de SGBD
tem a forma de declarar o auto incremento.
• PostgreSQL: tipo serial
• MySQL: auto_increment
Definição de Restrições
• Chaves: Chave Candidata

<descrição do atributo> UNIQUE


ou
UNIQUE(<atributos>)
ou
CONSTRAINT <nome_da_restrição> UNIQUE (<atributos>)

Restrição criada explicitamente


Definição de Restrições
• Chaves: Chave Estrangeira

CONSTRAINT <nome_da_restrição>
FOREIGN KEY (<atributos FK>)
REFERENCES <tabela onde está a PK> (<atributos PK>)

Restrição criada explicitamente


Definição de Restrições
– Chaves: Chave Estrangeira
• A opção padrão é impedir a operação (RESTRICT)
• Podemos especificar o que fazer através do ON DELETE
e ON UPDATE. Opções:
– SET NULL
– CASCADE
– SET DEFAULT
Definição de Restrições
• Definindo NOT NULL para atributos
• <nome do atributo> <tipo> NOT NULL
• Utilizamos quando não quisermos que o atributo
assuma valor nulo.
• Quando não especificamos, o padrão é permitir nulo
(NULL)
Definição de Restrições
• Definindo valores DEFAULT (padrões) para
atributos
• Quando um atributo possuir um valor padrão, podemos
definir tal valor no momento da criação do atributo:

<descrição do atributo> [NOT NULL]


DEFAULT <valor padrão>

• Observe que a palavra NOT NULL é opcional.


Definição de Restrições
• Descrição das restrições
– Definindo valores permitidos com CHECK
• O CHECK Permite verificar se os valores de um atributo
estão conforme o esperado.
• Exemplo 1: o salário não pode ser inferior ao valor do
salário mínimo.
CONSTRAINT <nome da restrição> CHECK (salario >= 678)

• Exemplo 2: a data de criação do departamento não


pode ser maior que data de início do gerente no
departamento.
CONSTRAINT <nome da restrição>
CHECK (dep_data_cricao <= data_inicio_gerente)
Exemplo
Exemplo
• Tabela Funcionario
CREATE TABLE Empresa.Funcionario
(CPF CHAR (11) PRIMARY KEY ,
Pnome VARCHAR (20) NOT NULL,
Minicial VARCHAR (20),
Unome VARCHAR (20) NOT NULL,
Datanasc DATE NOT NULL,
Endereco VARCHAR (50),
Sexo CHAR (1) NOT NULL,
Salario NUMERIC (10,2),
CPF_supervisor CHAR(11),
Dnr INTEGER,
CONSTRAINT ck_sexo CHECK (sexo IN (‘F’, ‘M’))
);
Exemplo
• Tabela Departamento
CREATE TABLE Departamento
( Dnumero INTEGER PRIMARY KEY ,
Dnome VARCHAR (20) NOT NULL UNIQUE,
CPF_gerente CHAR(11) NOT NULL DEFAULT ‘00437887878’,
Data_inicio_gerente DATE,

CONSTRAINT departamento_fk1 FOREIGN KEY (CPF_gerente)


REFERENCES Funcionario (CPF) ON UPDATE CASCADE ON
DELETE SET DEFAULT
);
Exemplo
• Exemplo para o esquema exibido
•CREATE
Tabela Localizacoes_Dep
TABLE Localizacoes_Dep
( Dnumero INTEGER,
Dlocal VARCHAR (30) NOT NULL,

PRIMARY KEY (Dnumero, Dlocal),


FOREIGN KEY (Dnumero) REFERENCES
Departamento (Dnumero) ON UPDATE
CASCADE ON DELETE CASCADE
);
Exemplo
• Tabela Projeto
CREATE TABLE Projeto
( Projnumero INTEGER,
Projnome VARCHAR (30) NOT NULL,
Projlocal VARCHAR (40),
Dnum INTEGER NOT NULL,

CONSTRAINT Projeto_pk PRIMARY KEY (Projnumero),


CONSTRAINT Projeto_fk1 FOREIGN KEY (Dnum)
REFERENCES Departamento (Dnumero)
);
Exemplo
• Tabela Trabalha_Em
CREATE TABLE Trabalha_Em
( Fcpf CHAR(11),
Pnr INTEGER NOT NULL,
Horas NUMERIC (2,1),

CONSTRAINT Trabalha_Em_pk PRIMARY KEY (Fcpf,Pnr),


CONSTRAINT Trabalha_Em_fk1 FOREIGN KEY (Fcpf)
REFERENCES Funcionario (CPF),
CONSTRAINT Trabalha_Em_fk2 FOREIGN KEY (Pnr)
REFERENCES Projeto(Projnumero)
);
Exemplo
• Tabela Dependente
CREATE TABLE Dependente
( Fcpf CHAR (11),
nome_dependente VARCHAR (50) NOT NULL,
datanasc DATE NOT NULL,
sexo CHAR (1) NOT NULL,
parentesco VARCHAR (20) NOT NULL,

CONSTRAINT ck_sexo CHECK (sexo IN (‘F’, ‘M’)),


CONSTRAINT Dependente_pk PRIMARY KEY
(Fcpf,nome_dependente),
CONSTRAINT Dependente_fk1 FOREIGN KEY (Fcpf)
REFERENCES Funcionario (CPF) ON DELETE CASCADE ON
UPDATE CASCADE
);
Alteração de tabelas
• ALTER TABLE
– Permite inserir/eliminar/modificar elementos da
definição de uma tabela

ALTER TABLE <nome da tabela> <ação>;


Alteração de tabelas
– Exemplos
• Acrescentar coluna na tabela Funcionario

ALTER TABLE Funcionario


ADD (Diploma VARCHAR(20));

• Remover coluna na tabela Funcionario


ALTER TABLE Funcionario DROP (Diploma);
Alteração de tabelas
• Acrescentando uma chave primária

ALTER TABLE <nome da tabela> ADD CONSTRAINT


<nome_da_restrição> PRIMARY KEY (<atributos>)

• Removendo uma chave primária


ALTER TABLE <nome da tabela> DROP PRIMARY KEY;
Alteração de tabelas
• Acrescentando uma chave estrangeira

ALTER TABLE <nome da tabela> ADD CONSTRAINT


<nome_da_restrição> FOREIGN KEY (<atributos FK>)
REFERENCES <tabela onde está a PK> (<atributos PK>)

• Removendo uma chave estrangeira


ALTER TABLE <nome da tabela> DROP FOREIGN KEY
<nome_da_restrição_de_fk> ;
Alteração de tabelas
• Voltando ao exemplo...

--Inserindo fk para supervisor


ALTER TABLE Funcionario ADD CONSTRAINT Funcionario_fk1
FOREIGN KEY (CPF_supervisor)
REFERENCES Funcionario (CPF);

--Inserindo fk para departamento


ALTER TABLE Funcionario ADD CONSTRAINT Funcionario_fk2
FOREIGN KEY (Dnr) REFERENCES Departamento (Dnumero);
Exclusão de Tabelas
• Eliminar uma tabela que foi previamente criada →
DROP TABLE
DROP TABLE <tabela>;

– Exemplo:
DROP TABLE Funcionario;

– Observação: Os dados da tabela também são


excluídos!
DATA MANIPULATION LANGUAGE
LINGUAGEM DE MANIPULAÇÃO DE DADOS
Inserção de Dados
– Adicionar uma tupla em uma tabela → INSERT
• Se a inserção for realizada em todos os atributos e na
ordem em que estão as colunas:
INSERT INTO <nome da tabela>
VALUES (<lista de valores>);

• Forma variante, caso queria se especificar


explicitamente os atributos:
INSERT INTO <nome_tabela> (<lista de atributos>)
VALUES (<lista de valores>);
Inserção de Dados
– Exemplo:

INSERT INTO Departamento (Dnumero, Dnome,


CPF_gerente, Data_inicio_gerente)
VALUES (1, ‘Recursos Humanos’, ‘0986754356’,
‘20-04-2011’);
Atualização de Dados em tabelas
• Com base nos critérios especificados, alterar
valores de campos de uma tabela → UPDATE

UPDATE <nome tabela>


SET <nome atributo> = <valor>
WHERE <expressão de condição>;
Atualização de Dados em tabelas
– Exemplo: Atualizar salário do funcionário 15 para
R$2000,00
UPDATE Funcionario SET Salario = 2000.00
WHERE CPF = 15;

– Se a condição não for especificada, todas as tuplas


da tabela são atualizadas. Cuidado!
Remoção de Dados
• Com base nos critérios especificados, remover
dados de uma tabela → DELETE
DELETE FROM <tabela> WHERE <expressão de condição>;
Remoção de Dados
• Exemplo: Remover todos os funcionários com
salário superior a R$ 4000,00 e que trabalham
no departamento 1.
DELETE FROM Funcionario WHERE Salario > 5000.00
AND Dnr = 1 ;

– Se a condição não for especificada, todas as tuplas


da tabela são removidas. Cuidado!

Você também pode gostar