0% acharam este documento útil (0 voto)
15 visualizações29 páginas

Apresentacao Aula 11 SQL

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
15 visualizações29 páginas

Apresentacao Aula 11 SQL

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 29

Programa

1. Projeto Conceitual / Lógico


2. Modelo Entidade-Relacionamento
3. Modelo Relacional
4. Normalização
5. SQL

1
5.1 Conceitos Básicos

• O SQL (Structured Query Language) é uma linguagem


de pesquisa declarativa para banco de dados
relacional.
• Foi criado pela IBM, mas rapidamente surgiram
vários “dialetos”.
• Em 1986, o ANSI e o ISO criaram um padrão para a
linguagem.
• Pode ser migrada entre diferentes plataformas
• Versões:
SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2008,
SQL:2011, SQL:2016, SQL:2017, SQL:2019 (ML, IA)

2
3
4
5.2. DDL

•Linguagem de Definição de Dados:


permite a
criação/remoção/alteração de
tabelas e elementos associados
•CREATE TABLE
•DROP TABLE
•ALTER TABLE
•INDEX, VIEW, FUNCTION,
PROCEDURE, TRIGGER
5
5.3 Criação de Tabelas

• As regras de integridade são definidas no momento


da criação das tabelas e fornecem a garantia de que
mudanças feitas no banco de dados não resultem em
perda de consistência de dados.
• Tipos:
• Dados requeridos
• Validação dos dados
• Unicidade
• Integridade referencial
• Regras de negócio

6
5.3 Criação de Tabelas

CREATE TABLE nome_da_tabela


Definido pelo usuário
(
com máximo de 128
nome_da_coluna
caracteres.
tipo_da_coluna

--Restrições da Coluna ,
Tipo da coluna:
• bigint, int e smallint
nome_da_coluna
• bit
tipo_da_coluna
• decimal
• money
--Restrições da Coluna ,
• float e real
... ,
• datetime
• char, varchar e text
--Restrições da Tabela
• binary e image
)

7
5.3 Criação de Tabelas
criando uma tabela apenas com nome da tabela e nome e tipo
das colunas (obrigatórios) e sem restrições de coluna e de
tabela (opcionais)
nome da
CREATE TABLE alunos tabela
(
matricula int,
nome char(30),
nome da cpf char(12), tipo da
coluna coluna
endereço char(30),
cidade char(25),
ingresso datetime,
curso char(15)
)
8
5.3 Criação de Tabelas

CREATE TABLE nome_da_tabela


Define se o campo pode
(
assumir valor nulo
nome_da_coluna
tipo_da_coluna
--Restrições da Coluna
NULL | NOT NULL
DEFAULT (constante | expressão) Define um valor default
(padrão) para o campo
nome_da_coluna
tipo_da_coluna
--Restrições da Coluna,

--Restrições da Tabela
)

9
5.3 Criação de Tabelas

•Dados Requeridos
• Define se a coluna pode ter valores NULOS
• Restrições NOT NULL
• Todas as tuplas devem conter um valor não
nulo para as colunas com essa restrição
• Normalmente essa restrição é definida no
momento da criação da tabela

10
5.3 Criação de Tabelas

criando uma tabela com algumas restrições de


coluna (NULL | NOT NULL, DEFAULT E IDENTITY)

CREATE TABLE alunos


(
matricula int AUTO_INCREMENT,
nome char(30) NOT NULL,
cpf char(12), restrições
endereço char(30) NULL, (constraints)
estado char(2) DEFAULT(‘CE’),
ingresso datetime NOT NULL,
curso char(15) NOT NULL
)
11
5.3 Criação de Tabelas

•Unicidade
• Restrição de chave primária (Primary Key)
• Restrição Unique
• Uma coluna não pode ser Primary Key e Unique.
• No caso de duplicação, a inserção ou a
atualização dos dados falha e uma mensagem
de erro é emitida pelo sistema

12
5.3 Criação de Tabelas
• A chave estrangeira (FOREIGN KEY) da tabela FILHO
deve conter um valor válido de uma chave primária
da tabela PAI
• Os valores da FK são verificados antes da inserção ou
atualização. Se não corresponderem a chaves
primárias válidas, a inserção é rejeitada.
Cursos – Tabela Filho
Centros – Tabela Pai
cd_curso nm_curso cd_centro
cd_centro nm_centro
1 Computação 1
1 CT
2 Administração 2
2 CS
3 Publicidade 1
3 CH
13
5.3 Criação de Tabelas

• Constraints (para controles de alteração/exclusão)

• RESTRICT: se a linha PAI tiver filhos ela não será


excluída, havendo uma violação
• CASCADE: se a linha PAI tiver filhos, todos os seus filhos
serão excluídos automaticamente (efeito cascata)
• SET NULL: se a linha PAI tiver filhos, todos os seus filhos
terão seus valores de FK atualizados para NULL
• SET DEFAUT: se a linha PAI tiver filhos, todos os seus
filhos terão seus valores de FK atualizados para um valor
default

14
5.3 Criação de Tabelas

• Exemplo do SET DEFAULT

15
5.3 Criação de Tabelas

•Validação dos Dados


•As regras de validação são procedimentos
utilizados para validar a inserção e
modificação dos dados
•Restrições CHECK
•Exemplo:
• CHECK (semestre = ‘2023.1’)
• Verifica se todos os valores da coluna Semestre
se enquadram na condição
16
5.3 Criação de Tabelas
criando uma tabela com diversas restrições de coluna

CREATE TABLE alunos


(
matricula int CONSTRAINT pk_aluno PRIMARY KEY,
nome char(30) NOT NULL,
cpf char(12) UNIQUE,
endereço char(30) NULL,
estado char(2) DEFAULT(‘CE’),
ingresso datetime NOT NULL,
curso char(15) NOT NULL
)
17
5.3 Criação de Tabelas
criando uma tabela com restrições de coluna e restrições de
tabela

CREATE TABLE alunos


(
matricula int,
curso char(15) FOREIGN KEY REFERENCES curso
(cod),
nome char(30) NOT NULL,
endereço char(30) NULL,
semestre char(6) NOT NULL,

CONSTRAINT pk_aluno PRIMARY KEY (matricula, curso),

CHECK (semestre IN (‘2022.1’, ‘2022.2’, ‘2023.1’’))


) 18
19
20
21
22
Para os exercícios seguintes, iremos utilizar o SGBD
MySQL no ambiente Workbench

Exercício 0:

criar um banco de dados com nome


fb-modelagem executando a instrução:

CREATE DATABASE fb-modelagem

23
• Exercício 01: criar uma tabela
CURSOS com a seguintes condições:
1.Código do curso como chave primária
chamada PK_Cursos
2.Nome do curso é obrigatório
3.Número de créditos do curso deve ser
maior que 150 e menor que 240.
Outros valores não são permitidos.
24
• Exercício 02: criar uma tabela ALUNOS com a
seguintes condições:
1. Matrícula do aluno como chave primária chamada
PK_Alunos
2. Nome do aluno é obrigatório
3. CPF do aluno não permite valores duplicados
4. UF do aluno tem ‘CE’ como DEFAULT
5. Curso do aluno referencia a coluna Código do
Curso da tabela Curso
6. Semestre de entrada do aluno só pode assumir os
valores 2023.1 e 2023.2
25
• Exercício 03: criar uma tabela NOTAS
com a seguintes condições:
1.Chave primária de nome PK_Notas
composta pelos atributos Matrícula do
Aluno e Código da Disciplina
2.Nota do aluno deve variar entre 0 e 10

26
DROP TABLE nome_da_tabela
• DROP TABLE não pode ser utilizado para apagar uma
tabela referenciada por uma FOREIGN KEY (chave
estrangeira). Neste caso, a FOREIGN KEY precisa ser
apagada antes.
• Quando uma tabela é apagada, todas as regras, restrições
ou triggers associadas com essa tabela são automaticamente
apagadas também.
• Se o usuário recriar essa tabela, ele deve recriar também
todas as regras, restrições e triggers que desejar.
• Tabelas de sistema não podem ser removidas.
• A deleção dos registros de uma tabela não implica na
remoção da tabela. Ela continuará existindo, só que sem
registros.
27
Alterando Tabelas
ALTER TABLE nome_da_tabela
ADD nome_da_coluna tipo_da_coluna {restrições da coluna}

ADD nome_da_coluna {restrições da coluna}


CONSTRAINT nome_da_restrição {definição da restrição}

DROP COLUMN nome_da_coluna

ALTER COLUMN nome_coluna tipo_coluna {restrições da coluna}

ADD CONSTRAINT nome_da_restrição {definição da restrição}

• Uma coluna referenciada por uma FOREIGN KEY (chave estrangeira)


não pode ser apagada ou alterada. Neste caso, a FOREIGN KEY precisa
ser removida antes.
• Quando uma coluna é apagada, todas as regras, restrições ou triggers
associadas com essa tabela são automaticamente apagadas também.
• O usuário não pode apagar todas as colunas da tabela. Deve restar pelo
menos uma. 28
• Exercício 04
• Alterar a tabela ALUNOS, adicionando
uma coluna de Endereço
• Alterar a tabela NOTAS de forma que a
Matrícula do Aluno referencie a tabela
ALUNOS. Essa associação deve ser
chamada FK_Alunos.
• Alterar a tabela CURSOS para remover a
coluna Código do Curso

29

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy