Tema2 - Sistemas de Gestão de Base de Dados
Tema2 - Sistemas de Gestão de Base de Dados
Tema2 - Sistemas de Gestão de Base de Dados
Gilda Muhai
Tópicos
Tipos de Dados
Conversão de dados
Aliases
Estruturas de armazenamento de dados
• Criação e configuração de bases de dados
Tipos de Dados
13
Conversão de Dados
Os tipos de dados podem ser convertidos nos seguintes
cenários:
• Quando os dados de um objeto são movidos,
comparados ou combinados com dados de outro
objeto, eles podem ser convertidos de um tipo de dados
de um objeto em um tipo de dados de outro objeto.
• Quando os dados de uma coluna de resultado, um
código de retorno ou um parâmetro de saída Transact-
SQL são movidos para uma variável de programa, os
dados devem ser convertidos de tipo de dados do
sistema SQL Server em tipo de dados da variável.
Conversão de Dados (Cont.)
Os tipos de dados podem ser convertidos implícita
ou explicitamente.
• As conversões implícitas não são visíveis ao
usuário. O SQL Server converte automaticamente
os dados de um tipo de dados em outro.
• As conversões explícitas usam as funções CAST ou
CONVERT.
Conversão de Dados (Cont.)
Quando usar o Cast ou o Convert:
• As duas funções permitem converter um tipo de
dado em outro, no entanto a função CAST é padrão
ANSI, pode ser usada em qualquer SGBD; já a
função CONVERT é uma função T-SQL, ou seja,
específica do Microsoft SQL Server.
Sintaxe de Conversão
CAST Syntax:
CAST ( expression AS data_type [ ( length ) ] )
CONVERT Syntax:
CONVERT ( data_type [ ( length ) ] , expression [ ,
style ] )
(
https://docs.microsoft.com/pt-br/sql/t-sql/functions/c
ast-and-convert-transact-sql?view=sql-server-ver15
)
Exemplos de Conversão de Dados
Conversão de valores de ListPrice em int para lista de
produtos com iniciais 33:
Select
• Usando CAST:
• CAST(ListPrice AS int) LIKE '33%’;
• Usando Convert:
• CONVERT(int, ListPrice) LIKE '33%’;
(
https://docs.microsoft.com/pt-br/sql/t-sql/functions/cast-an
d-convert-transact-sql?view=sql-server-ver15
Convenções para Nomeação
19
Aliases
O alias é um nome alternativo que pode ser
usado para fazer uma conexão.
• Para empregar usa-se a cláusila “as”.
Sintaxe:
SELECT coluna AS aliasDaColuna FROM tabela as
aliasDaTabela; ou
23
SQL como DDL
• Instruções para definição do esquema da base
de dados:
• CREATE TABLE
• Cria uma nova tabela na base de dados, especificando nome,
atributos e restrições
• ALTER TABLE
• Altera definições de uma tabela
• DROP TABLE
• Remove uma tabela, quando suas definições não são mais
necessárias
24
Criação de uma Base de Dados
• CREATE DATABASE
• Cria um novo banco de dados
• Sintaxe pode mudar a depender do SGBD
27
Criação de tabelas
Ex:
CREATE TABLE Estudante Identity PRIMARY KEY(
codEst INT,
nome CHAR (15),
sobrenome CHAR (20)
);
Para listar:
• select * from INFORMATION_SCHEMA.TABLES;
• SELECT table_name FROM Information_schema.tables;
Para visualizar a estrutura da tabela:
EXEC sp_help Estudante; (O nome da tabela pode ser outro
dependendo da tabela criada)
28
Restrições e Valores Default
• Restrições:
• NOT NULL
• Restrição aplicadas a colunas cujos valores não podem ser
nulos
• Valores Default
• Adiciona-se a cláusula DEFAULT <valor> logo após a
restrição:
CREATE TABLE Empregado
( ...
Sexo CHAR(1) NOT NULL DEFAULT “F”,
...
); Restrição Definição do
valor default
29
Criação de tabelas
• Especificação de chaves:
• Primária:
PRIMARY KEY(<nomeColuna>),
• Estrangeira:
FOREIGN KEY(<nomeCol>) REFERENCES <NomeTabRefer>
(<nomeColRefer>),
• Alternativa:
UNIQUE KEY(CPF), (SQL2)
30
Criação de tabelas
• Exemplo com chave primária:
Departamento
Dcod Dnome Cidade
31
Criação de tabelas
• Exemplo com chave primária composta
Empregado
Ecod Enome CPF Salario Cod_Dept
32
Criação de tabelas
• Exemplo com chave estrangeira
Empregado
Ecod Enome CPF Salario Cod_Dept
33
Criação de tabelas
• Exemplo com chave alternativa
Empregado
Ecod Enome CPF Salario Cod_Dept
34
Criação de tabelas
• Assim...
CREATE TABLE Empregado
( Ecod INTEGER NOT NULL,
Enome VARCHAR(40) NOT NULL,
CPF VARCHAR(15) NOT NULL,
Salario DECIMAL(7,2),
Cod_Dept INTEGER NOT NULL,
PRIMARY KEY(Ecod,ENome),
CONSTRAINT TrabalhaEm
FOREIGN KEY(Cod_Dept) REFERENCES Departamento(Dcod),
UNIQUE KEY(CPF));
Empregado
Ecod Enome CPF Salario Cod_Dept
35
Exercício
• Crie as seguintes tabelas em seu BD, definindo as
condições descritas abaixo
Fornecedor (Fcod#, Fnome, Status, Cidade)
Peca (Pcod#, Pnome, Cor, Peso, Cidade)
Projeto (PRcod#, Icod#, PRnome, Cidade)
Fornecimento (Fcod#, Pcod#, PRcod#, Quantidade)
Instituição (Icod#, nome)
36
Criação de tabelas
• Exemplo com chave estrangeira
37
Remoção de tabelas
• DROP TABLE
• Elimina completamente a tabela (vazia ou não)
• Ex.:
DROP TABLE Empregado;
38
Alteração de tabelas
• ALTER TABLE
ALTER TABLE <nome_da_tabela> <alteração>;
39
Alteração de tabelas
• Excluir restrições de chave primária
41
Integridade referencial
• Cuidados
• Quando colunas são excluídas ou alteradas
• Quando o valor do atributo da chave estrangeira é modificado
na tabela referenciada
SET NULL
ON DELETE
CASCADE
ON UPDATE
42
Integridade referencial
• Exemplo, na tabela de Empregado
CREATE TABLE Empregado
( ...
FOREIGN KEY(Cod_Dept) REFERENCES Departamento(Dcod)
ON DELETE SET NULL
ON UPDATE CASCADE,
...
);
• Ou seja...
• Na remoção da linha que contém o valor da chave estrangeira,
colocar nulo à coluna (se a coluna admitir NULL)
• Na alteração do valor da chave estrangeira, alterar em cascata
as chaves que referenciam este valor
43
Exercício
• Altere as tabelas criadas anteriormente para :
44