Buscar

PSQL_Unidade 01

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

INTRODUÇÃO À SQL E DEFINIÇÃO 
DE DADOS (DDL)
Professores:
Esp. Eduardo Herbert Ribeiro Bona
Me. Jackson Luis Schirigatti
Diretoria Executiva Pedagógica Janes Fidelis Tomelin
Diretoria Operacional de Ensino Kátia Coelho 
Diretoria de Planejamento de Ensino Fabrício Lazilha
Head de Projetos Educacionais Camilla Barreto Rodrigues Cochia Caetano
Head de Produção de Conteúdos Celso Luiz Braga de Souza Filho
Gerência de Produção de Conteúdos Diogo Ribeiro Garcia
Gerência de Projetos Especiais Daniel Fuverki Hey
Supervisão do Núcleo de Produção de Materiais Nádila de Almeida Toledo
Projeto Gráfico Thayla Guimarães 
Designer Educacional Rossana Costa Giani 
Editoração Flávia Thaís Pedroso
DIREÇÃO
Reitor Wilson de Matos Silva 
Vice-Reitor Wilson de Matos Silva Filho 
Pró-Reitor de Administração Wilson de Matos Silva Filho 
Pró-Reitor de EAD William Victor Kendrick de Matos Silva 
Presidente da Mantenedora Cláudio Ferdinandi
NEAD - NÚCLEO DE EDUCAÇÃO A DISTÂNCIA
NEAD - Núcleo de Educação a Distância
Av. Guedner, 1610, Bloco 4 - Jardim Aclimação - Cep 87050-900 
Maringá - Paraná | unicesumar.edu.br | 0800 600 6360
As imagens utilizadas neste livro foram 
obtidas a partir do site shutterstock.com
C397 CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a 
Distância; BONA, Eduardo Herbert Ribeiro; SCHIRIGATTI, Jackson Luis.
 
 Programação SQL I. Eduardo Herbert Ribeiro Bona; Jackson Luis 
Schirigatti.
 Maringá-Pr.: UniCesumar, 2017. 
 34 p.
“Pós-graduação Universo - EaD”.
 1. Programação. 2. SQL. 3. EaD. I. Título.
 ISBN 978-85-459-1503-4
CDD - 22 ed. 005
CIP - NBR 12899 - AACR/2
01
02
03
04
sumário
06| SQL
21| APROFUNDANDO-SE EM DDL
24| DML: PRIMEIRAS INSTRUÇÕES
15| DDL DEFININDO DADOS COM SQL
OBJETIVOS DE APRENDIZAGEM
 • Conceituar e compreender a Linguagem SQL e sua aplicabilidade. 
 • Caracterizar a linguagem de definição de dados (DLL) e a linguagem de 
manipulação de dados (DML).
 • Apresentar e compreender as instruções de definição de dados DLL (criação 
de recursos em um SGBD).
 • Apresentar e compreender as instruções de manipulação de dados DML 
(alterações de recursos em SGBD).
PLANO DE ESTUDO
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
 • SQL.
 • DLL: Definindo Dados com o SQL.
 • Aprofundando-se em DLL.
 • DML: Primeiras Instruções.
INTRODUÇÃO À SQL E DEFINIÇÃO DE DADOS (DDL)
INTRODUÇÃO
introdução
Na atualidade, os bancos de dados possuem uma importância inquestionável 
para o armazenamento, acesso e manipulação das informações que circulam 
entre as organizações de todos os ramos de negócios, privadas e públicas e no 
comércio eletrônico entre clientes, empresas e entre clientes e empresas. Os 
bancos de dados mais utilizados são os baseados no modelo relacional, usando 
um conjunto de tabelas para representar os dados e as relações entre eles. 
Vinculada à estes bancos de dados relacionais, a linguagem SQL se estabeleceu 
com uma linguagem padrão, composta de várias partes. Especificamente nesta 
unidade, veremos os componentes de linguagem de definição de dados (DDL) e 
de linguagem de manipulação de dados (DML). Veremos que estes componentes, 
chamados também de sublinguagens, fornecem comandos para a definição 
e manipulação de esquemas. A DDL define esquemas de relação, exclusão de 
relações e modificação de esquemas. Por sua vez, a DML fornece comandos 
para realizar consultas baseadas na álgebra relacional, no cálculo relacional e 
na manipulação de dados, incluindo comando para inserir e excluir. No estudo 
iremos compreender os principais tipo de dados utilizados para a definição 
de dados com as instruções Create e Constraints de integridade. Com relação 
à Linguagem de manipulação de dados, serão apresentadas as instruções de 
alterações de tabelas, alterações de colunas de uma tabela, exclusão de colunas 
e tabelas, bem como a inserção, alteração e exclusão de dados em tabelas. Este 
entendimento da Linguagem de manipulação de dados SQL é imprescindível 
para o Administrador em banco de dados, analista de dados, e programadores 
de linguagens de desenvolvimento web que utilizam as strings de instruções 
SQL em linguagens hospedeiras, além dos desenvolvedores de outras linguagens 
relacionais de 4ª geração.
Pós-Universo 6
SQL
Pós-Universo 7
Nesta aula iremos entender o que é o SQL e por que utilizá-lo em Sistemas gerenciadores 
de banco de dados. Veremos também as sublinguagens DDL e DML, que compõem 
a Linguagem SQL, bem como suas principais características e comandos destas 
sublinguagens.
O que é SQL?
Diferentemente do que é veiculado por muitos erroneamente, SQL não é um 
acrônimo para Structured Query Language, ou em português, Linguagem de Consulta 
Estruturada. Os principais livros apontam que Edgar Codd, o criador do modelo de 
dados relacional, propôs uma linguagem denominada DSL/Alpha, e em seguida a IBM 
designou uma equipe para um protótipo chamado SQUARE, que depois de alguns 
refinamentos veio a se tornar SEQUEL e finalmente SQL, como conhecemos até hoje.
SQL por natureza não é uma linguagem de programação procedural como as 
que você conhece, pois ela foi construída para basicamente permitir a manutenção 
da estrutura de dados (metadados) e dar acesso aos dados de fato, permitindo 
operações de consulta, inserção, atualização e exclusão. Linguagens de programação 
são mais conhecidas por recursos como estruturas condicionais, laços de repetição, 
declaração de variáveis, dentre outros recursos, que nem sempre serão encontrados 
em uma linguagem SQL e não são objetos de estudo em SQL I.
Esta linguagem sempre estará atuando em conjunto com as linguagens de 
programação para a aplicação, como Java, C# ou PHP, por exemplo. A linguagem 
SQL é a linguagem universal para a comunicação com SGBDs e por isso as aplicações 
implementam simplesmente as interfaces de apoio para os procedimentos de acordo 
com cada tipo particularidade de um SGBD.
Dentre os principais SGBDs, podemos citar os grandes SGBDs como Oracle 
Database, SQL SERVER da Microsoft e DB2 da IBM, que são mais conhecidos por 
fazerem parte de grandes sistemas como ERPs. Já nas aplicações web, teremos 
atualmente mais contato com Oracle MySQL e PostgreSQL, sendo este último um 
banco de dados open source.
Pós-Universo 8
O SQL de uma maneira geral é compatível com todos estes SGBDs, mas cada 
fabricante optou por promover algumas melhorias e features em cada um deles, e por 
isso, para o conhecimento do funcionamento de um SGBD e dos poderes do SQL, foi 
necessário optar em certos momentos por um destes produtos. Neste sentido, para 
que você possa construir e executar todas as instruções contidas aqui, recomenda-
se a utilização do Oracle Database 10g versão gratuita, que permitirá uma instalação 
simples e utilização completa dos recursos.
Por que SQL?
Sabemos que linguagens de programação vem e vão e isso não é novidade alguma. 
Em nossa área de tecnologia da informação (TI) o tempo não trabalha muito a favor 
dos desenvolvedores e temos uma excelente notícia pra você! Temos vários bons 
motivos para te convencer a realizar o aprendizado do SQL:
 • Segundo pesquisa com mais de 64.000 (sessenta e quatro mil) desenvolvedores 
em 2017, realizada pelo portal Stack Overflow, principal portal de dúvidas 
de desenvolvedores, chamado por muitos de “o Google de verdade”, a 
linguagem SQL é a segunda linguagem mais lembrada (popular) e citada 
por mais de 50% dos desenvolvedores;
 • Todo desenvolvedor, seja ele desktop ou web, precisa conhecer bem o 
SQL e aproveitar ao máximo esta tecnologia em seu dia a dia. Na mesma 
pesquisa da Stack Overflow, enquanto desenvolvedores web citam SQL 
como linguagem mais popular, desenvolvedores desktop citam-na em 
60% dos casos.
 • SQL não é utilizado somente por desenvolvedores. SQL também é profissão 
para administradores de banco de dados, administradores de rede e 
projetistas de banco de dados.
Pós-Universo 9
 • Projetosde banco de dados malconstruídos e consultas SQL superficiais sem 
o cuidado de um especialista representam o maior gargalo de performance 
em uma aplicação por consumir quantidade de memória e processador 
em excesso.
 • Aplicações que usam o banco de dados não só como armazenador de 
dados e sim como uma camada por baixo da aplicação com utilização de 
princípios como integridade dos dados, validação, controle de acesso e 
segurança fornecem um ambiente altamente eficaz e profissional.
 • SQLs, diferentemente de linguagens de programação, sofrem pouca alteração 
ao longo do tempo, uma vez que um bom entendimento teórico e prático 
garante uma habilidade a longo prazo que praticamente nenhuma outra 
linguagem fornece.
DDL e DML: Características da 
Linguagem de Definição de Dados 
e da Linguagem de Manipulação de 
Dados
Os usuários finais e programadores ambos operam em um nível externo, ou seja, 
interagem com os dados por meio de sublinguagens de dados que se dividem em 
dois componentes na SQL. Date (2003, p. 85) comenta que um dos componentes 
é uma lInguagem de definição de dados (DDL - Data Definition Language) e o 
outro componente é de uma linguagem de manipulação de dados (DML - Data 
Manipulation Language). A Tabela 1 apresenta as principais características entre as 
linguagens de definição de dados (DDL) e a linguagem de manipulação de dados 
(DML).
Pós-Universo 10
Tabela 1 - Principais características entre as linguagens de dados
Sublinguagens de dados Características
Componente DDL
(Definição de dados)
• Permite criar e remover tabelas, descrever restrições 
de integridade, registrar e remover utilizadores e 
atribuir e retirar privilégios aos utilizadores.
• Suporta a criação, exclusão e modificação das tabelas 
e visões. As restrições de integridade podem ser 
definidas nas tabelas, tanto quando a tabela é criada 
como posteriormente.
• Referenciada como sublinguagem de dados quando 
embutida dentro de uma linguagem hospedeira (Ex.: 
C ou Cobol).
• Funções associadas à definição e ao desenho do 
esquema da Base de dados.
• Instruções da DDL podem ser CREATE, ALTER ou 
DROP.
• A DDL SQL permite especificar não só um conjunto 
de relações, mas também informações sobre cada 
relação, incluindo: (1) o esquema para cada relação, 
(2) o domínio dos valores associados a cada atributo, 
(3) as restrições de integridade, (4) o conjunto de 
índices a serem mantidos para cada relação, (5) as 
informações de segurança e autorização para cada 
relação e (6) a estrutura de armazenamento físico de 
cada relação no disco.
Componente DML 
(Manipulação de dados)
• Permite que os usuários formulem consultas e 
insiram, excluam e modifiquem tuplas.
• Referenciada como sublinguagem de dados quando 
embutida dentro de uma linguagem hospedeira (Ex.: 
C ou Cobol).
• Instruções DML podem ser DELETE, INSERT, SELECT, 
UPDATE, etc.
Fonte: adaptado de Costa (2007); Ramakrishnan e Gehrke (2011); Silberschatz, Korth e Sudarshan 
(2006).
Pós-Universo 11
Tipos de Dados
Tipos de dados ou domínios internos é o domínio de valores associados a cada atributo 
e estas informações são especificadas através da linguagem DDL (SILBERSCHATZ; 
KORTH; SUDARSHAN, 2006).
Segundo ORACLE (2012, on-line)1, um banco de dados Oracle irá fornecer suporte 
às seguintes categorias de tipos de dados:
 • Caracteres;
 • Numéricos;
 • Data;
 • LOB;
 • RAW and LOG RAW;
 • ROWID and UROWID.
Iremos nos concentrar neste primeiro momento nos mais utilizados, que são 
caracteres, numéricos, data e LOB. Os demais poderão ser objeto de estudo futuro 
para o aprofundamento de conhecimento específico em Oracle.
Veja os principais tipos, sua utilização e exemplos na Tabela 2 abaixo:
Tabela 2 - Nomes de tabelas válidos
Caracteres
Tipo Descrição Exemplo
CHAR(n)
Poderá conter de 
1 a 2000 bytes 
por coluna
• Este tipo de dado é utilizado para armazenar textos de 
tamanho fixo.
• Sempre que você insere um texto, independente do 
tamanho, ele salvará tal informação com o valor pré-
definido na criação da tabela.
CREATE TABLE teste( 
estado_sigla CHAR(2)
)
VARCHAR2(n)
• Este tipo armazena textos no banco de dados de forma 
dinâmica.
• Será pré-definido um tamanho máximo mas diferente de 
CHAR que fixa o tamanho, VARCHAR salva cada campo 
com seu tamanho variável.
• Poderá conter de 1 a 4000 bytes.
CREATE TABLE teste(
 [...],
 nome
VARCHAR2(200)
)
Pós-Universo 12
Caracteres
Tipo Descrição Exemplo
NCHAR(n)
• Tem as mesmas atribuições, definições e comportamento 
de CHAR(n) com a diferença de que suporta caracteres 
do tipo UNICODE (globalizado).
CREATE TABLE teste(
 [...],
 estado_nome 
NCHAR(50)
)
NVARCHAR2(n)
• Tem as mesmas atribuições, definições e comportamento 
de VARCHAR2(n) com a diferença de que suporta 
caracteres do tipo UNICODE (globalizado).
CREATE TABLE teste(
 [...],
 nome 
NVARCHAR2(200)
)
TEXT ou NTEXT
• Suporta textos maiores que 4000 caracteres e tem 
tamanho variável também. Contudo, para textos muito 
extensos, vale a pena conferir também CLOB. A variação 
NTEXT faz o tratamento para UNICODE.
CREATE table noticia(
 [...],
 titulo VARCHAR2(100),
 conteudo TEXT
)
Numéricos
Tipo Descrição Exemplo
INTEGER, 
SHORTINTEGER, 
LONGINTEGER
• INTEGER ou INT armazena números inteiros sem a parte 
fracionária, enquanto possui variações para SHORT e 
LONG.
CREATE TABLE
produto(
 quantidade_estoque 
INT
)
NUMBER
NUMBER(precisão, 
escala)
• Armazena valores fixos ou flutuantes de acordo com 
especificação de precisão e escala.
• Armazena tanto números positivos quanto negativos.
• A precisão, quando informada, representa o número 
total de dígitos e a escala das casas decimais depois da 
vírgula.
CREATE TABLE 
funcionario(
 salario NUMBER (9,2)
)
CREATE TABLE
exame(
 umidade NUMBER
)
DECIMAL, 
SHORTDECIMAL
• É uma variação de NUMBER sem o suporte, a precisão e 
escala, suportando 15 dígitos para DECIMAL e 7 dígitos 
para SHORTDECIMAL.
Pós-Universo 13
Datas
Tipo Descrição Exemplo
DATE
• Este tipo de dado armazena data e hora em uma coluna. 
Os dados armazenados serão século, ano, mês, dia, hora, 
minuto e segundo.
CREATE TABLE 
funcionario(
 nascimento DATE
)
TIMESTAMP
• Este formato é uma extensão de DATE e armazena 
século, ano, mês, dia, hora, minuto, segundo e fração 
de segundo.
CREATE TABLE 
movimentacao(
 cadastro TIMESTAMP
)
TIMESTAMP WITH 
TIMEZONE
• Armazena além dos dados de TIMESTAMP, o valor offset 
do TIMEZONE, no caso do Brasil, por exemplo, -03:00 
geralmente (exceto horário de verão).
• É muito utilizado em sistemas globais para poder 
armazenar a data/hora de um registro, mas sabendo o 
timezone, que é muito relevante para sistemas globais.
CREATE TABLE
movimentacao(
 cadastro TIMESTAMP
WITH TIME ZONE
)
Booleano
Tipo Descrição Exemplo
BOOL
• Este campo habilita um resultado de uma expressão 
lógica, podendo ser verdadeiro com (YES, TRUE, ON) ou 
false com (NO, FALSE, OFF).
create table 
funcionario(
 [...].
 situacao_contrato 
BOOL
)
LOB
Tipo Descrição Exemplo
CLOB ou NCLOB
• Possibilita que armazenemos também até 128 terabytes 
de dados, mas por sua vez caracteres, lembrando que o 
tipo VARCHAR2 permite até 4000.
• Deste modo, a CLOB passará a ser a opção para outros 
casos para estas colunas. NCLOB é a variação de CLOB 
que permite uso para UNICODE.
CREATE TABLE livro(
 titulo varchar2(100),
 conteudo CLOB
)
BLOB
• Armazena até 128 terabytes de dados binários; 
geralmente utilizamos este tipo de dado para guardar 
um arquivo binário do tipo PDF, imagem, etc. (arquivos 
que não possuem um texto limpo), e são basicamente 
códigos.
CREATE TABLE
exame(
 cod_exame int
 pdf BLOB
)
Fonte: os autores.
Pós-Universo 14
Outros domínios internos
Como mencionado, um tipo de dado é um domínio de possíveis valores, 
precisa estar associado a cada atributo. Existem outros domínios básicos 
utilizados, como os de ponto flutuante: o real, double precision, onde são 
utilizados para números de ponto flutuantee ponto flutuante de precisão 
dupla com precisão dependente da máquina. O float (n), para um número 
de ponto flutuante, com precisão de pelo menos n dígitos. Além dos tipos 
de dados básicos, existem os tipos definidos pelo usuários, chamados de 
tipos distintos e tipos de dados estruturados. Os tipos distintos são 
utilizados para criar tipos de dados onde existam vários atributos que tenham 
o mesmo tipo de dados mas com domínios diferentes. Um exemplo seria 
o tipo Dólares e Libras, que podem possuir domínios diferentes mas com o 
mesmo tipo numérico. Declarar tipos diferentes de moedas ajuda a detectar 
erros de atribuição para os diferentes tipos de moedas, ou seja, atribuir valores 
Dólares para Libras, ou o inverso. Já o tipo de dados estruturados permite a 
criação de tipos de dados complexos com estruturas de registros, arrays e 
multiconjuntos aninhados.
Fonte: Silberschatz, Korth e Sudarshan (2006, p. 80).
saiba mais 
Pós-Universo 15
DDL DEFININDO 
DADOS COM SQL
Pós-Universo 16
Neste estudo, iremos compreender a linguagem de definição de dados DDL, que se 
utiliza dos comandos de criação dos recursos como tabelas (CREATE TABLE) e regras 
de restrições (constraints), como o NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY 
e CHECK. 
CREATE
Quando estamos tratando de definição dos dados, a maioria dos SGBDs trabalhará 
com o comando CREATE para a criação de todos os seus recursos. A instrução mais 
conhecida e largamente difundida é a CREATE TABLE. Esta deverá ser sua primeira 
instrução para a criação de tabelas a partir de um projeto de um banco de dados.
A sintaxe do comando é muito simples:
CREATE TABLE cliente(
 cod_cliente INTEGER NOT NULL,
 nome VARCHAR2(255) NOT NULL,
 cpf VARCHAR2(15) NOT NULL UNIQUE,
 data_cadastro TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 situacao_cadastro BOOL NOT NULL DEFAULT 1
);
Após o criação de uma tabela com o CREATE TABLE, vem o nome da tabela, que é 
único dentro do esquema do banco de dados, ou seja, cada banco de dados poderá 
ter uma tabela chamada cliente, mas o mesmo banco de dados só poderá possuir 
uma tabela chamada cliente. Além disso, é proibido nomes com mais de 30 (trinta) 
caracteres, uso de espaços, hífens ou iniciados por números (podendo conter números 
no decorrer de seu nome).
Pós-Universo 17
A Tabela 3 apresenta exemplos de nomes de tabelas:
Tabela 3: Nomes de tabelas válidos
Nome Válido ou Inválido? Motivo
clientes_2014 Válido
O usuário de números no decorrer é 
aceito e o símbolo “_” também.
2014_clientes Inválido
Não é possível iniciar o nome de uma 
tabela com números.
clientes 2014 Inválido
Não são aceitos espaços no nome da 
tabela.
CLIENTES Válido
É permitido uso de letras maiúsculas ou 
minúsculas.
ClientesInativos2014 Válido
É permitido o uso tanto de maiúsculas e 
minúsculas no nome da mesma tabela.
Fonte: os autores.
Rischert (2009) sugere que você adote por padrão tabelas com nome no singular ou 
plural, letras minúsculas ou maiúsculas. Eu até recomendaria menos que 30 caracteres 
e geralmente adoto o padrão de nomes no singular e letras minúsculas. 
As colunas (ou atributos), por sua vez, são declarados dentro dos parênteses e 
cada definição é separada por vírgulas. Como o comando CREATE TABLE é executado 
apenas uma vez, ele deverá compor em um primeiro momento todas as colunas 
que você entenda como parte da tabela a ser criada. Se for necessário, depois você 
usará ALTER TABLE para dar manutenção na tabela. Obrigatoriamente, a definição de 
uma coluna se dará pelo seu nome e pelo seu tipo. Seu nome segue basicamente 
o padrão demonstrado para o nome de uma tabela e seu tipo deve estar de acordo 
com as definições de dados de cada SBGB. Apesar de ser muito comum certos tipos 
de dados, cada SGBD varia na disponibilização e formas de dados para a criação de 
colunas.
Pós-Universo 18
No exemplo anterior, vimos a utilização dos tipos de dados int, varchar2, timestamp 
e bool, que explicaremos em seguida e que são frequentemente utilizados. Além 
disso, é possível notar o uso de uma constraint chamada NOT NULL, que obriga o 
preenchimento de tal coluna na inserção de dados para as consultas futuras. Também 
usei o comportamento DEFAULT, que determina o valor padrão para a coluna em 
questão.
Constraints de Integridade
O objetivo de uma CONSTRAINT DE INTEGRIDADE, segundo Oracle (2012, on-line)2, é 
de criar uma regra de restrição para valores dentro de um banco de dados e existem 
pelo menos cinco possibilidades de criação de restrições CONSTRAINTS para colunas 
nos banco de dados ORACLE.
Imagine a criação da seguinte tabela:
CREATE TABLE operacao(
 cod_operacao INTEGER NOT NULL PRIMARY KEY,
 data_operacao TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 tipo_operacao CHAR(1) NOT NULL CHECK IN (‘c’, ‘v’),
 valor_operacao NUMBER(9,2) NOT NULL CHECK > 0,
 quantidade_operacao INTEGER NOT NULL CHECK > 0,
 cod_papel INTEGER NOT NULL FOREIGN KEY REFERENCES papel (cod_papel),
 cod_cliente INTEGER NOT NULL FOREIGN KEY REFERENCES cliente
(cod_cliente)
);
Na criação de uma tabela, é preciso obrigatoriamente informar o nome da tabela e 
as colunas que farão composição a ela, seguido repetidamente do nome da coluna 
e do seu tipo. 
Pós-Universo 19
Constraints de Integridade: NOT NULL
Caso seja necessário (e geralmente é) informar que aquela coluna tem seu 
preenchimento obrigatório, você fará uso da CONSTRAINT NOT NULL. Se você não 
informar nada, uma constraint NULL será utilizada de maneira a permitir valores nulos 
no registro de novos itens.
Constraints de Integridade: UNIQUE
A segunda constraint é a CONSTRAINT UNIQUE, que não necessariamente é uma 
chave primária, e sim um valor a ser validado como único naquela tabela no banco de 
dados, como por exemplo o número CPF no código de clientes ou e-mail, garantindo 
assim que apenas um registro com aquela informação exista.
Constraints de Integridade: PRIMARY KEY
Não menos importante e como já conhecido, toda tabela possui (ou deveria possuir) 
uma chave primária, as chamadas PKs (Primary Key). Esta é uma constraint fundamental 
para nossos códigos. A CONSTRAINT PRIMARY KEY combina com NOT NULL e UNIQUE 
CONSTRAINT ao mesmo tempo, pois não poderá ser nula, é uma chave primária e 
única dentro daquela tabela no banco de dados. Uma chave primária pode ser criada 
a partir de uma coluna apenas ou de uma combinação delas, tornando-se assim uma 
chave composta.
Constraints de Integridade: FOREIGN KEY
Além das chaves primárias, também temos as chaves estrangeiras ou FKs, sigla para 
Foreign Key (em inglês). Elas são CONSTRAINTS importantes para a restrição de dados 
em nossa base, uma vez que ficam vinculadas a outra coluna referenciada por outra 
tabela. Deste modo, não permitem que tal integridade seja perdida e que algum 
registro fique sem seu pai ou filho, por exemplo.
Pós-Universo 20
Constraints de Integridade: CHECK
Por fim, temos a CHECK CONSTRAINT, que como visto no exemplo de criação da tabela 
operação, consegue realizar checagens simples de expressões lógicas diretamente 
na coluna. Isso permite uma validação e uma integridade a mais na tabela do banco 
de dados. Este recurso, no entanto, não é presente em muitos SGBDs, mas no Oracle 
é permitido e muito utilizado.
Falando mais sobre a integridade
Integridade de dados é a maneira de dizer que os dados que estão na 
sua base de dados são confiáveis. Existem duas maneiras de implementar 
integridade de dados no SQL Server: declarativa e procedural. Em termos de 
integridade declarativa, vimos as Constraints (NOT NULL, UNIQUE, PRIMARY 
KEY, FOREIGN KEY e CHECK); por sua vez, as procedurais dizem respeito 
ao uso de Stored Procedures e Triggers. Dessas duas maneiras, podemos 
implementar integridade sob os aspectos: 1) Integridade de Domínio: 
referente aos dados que são permitidos nas colunas (campos) da tabela; 2) 
Integridade de Entidade: referente à unicidade de registros em uma tabela; 
e 3) Integridade Referencial à relaçãoentre tabelas em uma base de dados.
Fonte: Pichiliani (2008, p. 26).
saiba mais 
Pós-Universo 21
APROFUNDANDO-SE 
EM DDL
Pós-Universo 22
Nesta aula iremos nos aprofundar na Linguagem de Definição de dados através das 
instruções de alteração de tabelas (ALTER) e exclusão de colunas e tabelas (DROP 
TABLE e DROP Database).
Alterações em uma Tabela (Adição 
de Colunas)
Para realizar as alterações de uma estrutura de uma tabela (definições de uma tabela) 
de um banco de dados, utiliza-se a instrução ALTER. Especificamente, é possível realizar 
estas alterações em nível de colunas (campos) através da instrução ALTER TABLE. O 
exemplo (1) ilustra a declaração de sintaxe: 
alter table <nome da tabela> add <nome do campo> tipo de dado:
(1) alter table editora
add endereco varchar2(20)
Onde é incluída na tabela “editora” a definição do campo “endereço” de tamanho 
dinâmico de até 20 caracteres.
Alterações em Colunas de uma 
Tabela com Critérios
Também é possível realizar alterações de um determinado campo específico através 
do complemento da instrução ALTER TABLE e ALTER COLUMN de sintaxe:
alter table <nome da tabela> 
alter column <nome do campo> <tipo de dado> <restrição> 
O exemplo (2) ilustra a alteração de um campo “endereço” da tabela “editora”, de valor 
varchar(20) do exemplo (1), para o tipo de dados varchar(50), e permitir que contenha 
valores nulos através da cláusula NULL.
(2) alter table editora 
alter column endereco varchar2(50) null 
Pós-Universo 23
Excluindo Colunas, Tabelas e Banco 
de Dados
A DDL trata também da exclusão de recursos de um banco de dados, como por 
exemplo a exclusão de uma tabela. Para Freeman (2005, p. 148), “é possível excluir 
tabelas removendo todas as linhas (tuplas) de uma tabela, excluindo todos os índices, 
partições, armazenamento (por exemplo LOB armazenamento) e gatilhos associados”. O 
autor ressalta: “Ao excluir uma tabela, você invalida quaisquer procedures armazenadas 
ou visões que referenciam esta tabela” (FREEMAN, 2005, p.148). O comando que 
realiza a exclusão destes recursos é o drop table, sendo que a tabela deve estar no 
seu próprio esquema. O exemplo (3) apresenta a declaração drop table eliminando 
a tabela editora, de sintaxe:
drop table <tabela>
(3) drop table editora
Para realizar a exclusão, o banco de dados e todas as suas tabelas utilizam a declaração, 
como mostra o exemplo (4), de sintaxe:
drop database <nome_banco_de_dados>
(4) drop Database projeto_editoras
Outros comandos de definição
Além dos comandos DDL: CREATE TABLE (cria uma tabela), ALTER TABLE 
(altera as definições de uma tabela), DROP TABLE (exclui uma tabela), existem 
outros comandos de definição: CREATE INDEX (cria um índice), ALTER INDEX 
(altera um índice), DROP INDEX (exclui um índice), CREATE VIEW (cria uma 
visualização de dados), DROP VIEW (exclui uma visualização de dados), ALTER 
VIEW (altera uma visualização de dados).
Fonte: os autores.
saiba mais 
Pós-Universo 24
DML: PRIMEIRAS 
INSTRUÇÕES
Pós-Universo 25
Inserindo Dados em uma Tabela
Segundo Prescott (2015), “para inserir dados em qualquer tabela, temos que usar 
‘INSERT INTO’ seguido pelo nome da tabela e então ‘VALUES’ seguido do valor a ser 
inserido, separado por uma vírgula dentro dos parênteses” [sendo que os valores 
caracteres devem ser separados por aspas simples]. O exemplo 5 ilustra a inserção dos 
dados entre parênteses na tabela conta. Contudo, é importante destacar que a ordem 
na qual os valores são inseridos deve ser igual à ordem das colunas na tabela (sendo 
que o valor ‘5630-1’ é uma string da primeira coluna “agencia”. O valor ‘00012345-6’ é 
uma string da segunda coluna “conta_corrente” e 1000 é o valor numérico da terceira 
coluna “saldo” da tabela conta).
A sintaxe é:
insert into <nome da tabela> values (coluna1, coluna2, …, coluna n)
(5) insert into conta values (‘5630-1’, ‘00012345-6’, 10000) 
Para Ramalho (2005, p. 135), “este comando insere uma nova linha na tabela, 
preenchendo as colunas com valores específicos [como mostra o exemplo 5]. Não 
é necessário atribuir conteúdo para todos os campos”.
É possível também alterar a ordem em que os dados são inseridos na tabela. Para 
isso, deve-se mencionar a ordem das colunas entre parênteses após o nome da tabela. 
O exemplo (6) apresenta a inserção de dados de ordem definida pelo programador, 
por “nome da coluna de 1ª ordem”, “2ª ordem”, até à enésima ordem. Neste caso, o 
campo de 1ª ordem corresponde ao campo ‘conta_corrente’, que recebe o valor 
‘00012345-6’; o campo de 2ª ordem corresponde ao ‘saldo’ da conta, que recebe o 
valor 10000, e o campo de 3ª ordem é ‘agencia’, que recebe o valor ‘5630-1’.
A sintaxe é a seguinte: 
insert into <nome da tabela>(1ª ordem, 2ª ordem, …, enésima ordem) 
values (valor1, valor2, …, enésimo valor).
(6) insert into conta (conta_corrente, saldo, agencia)
values (‘00012345-6’, 10000, ‘5630-1’).
Pós-Universo 26
Atualizando Dados em uma Tabela
As alterações em uma tupla, ou linha ou registro em uma tabela, podem ser necessárias 
quando se deseja mudar o valor sem mudar todos os valores da tupla. Segundo 
Silberschatz, Korth e Sudarshan (2006, p. 69), “a instrução update pode ser usada 
neste caso, [...] podemos escolher as tuplas a serem atualizadas usando a consulta”. 
O exemplo abaixo mostra a aplicação de 5% de aumento no saldo de uma conta. 
Em todos os registros da tabela conta é aplicado o percentual de aumento, mas 
especificamente na coluna (campo) saldo. Set define a aplicação. Silberschatz, Korth e 
Sudarshan (2006, p. 69) apresentam um exemplo (7) de alteração de todos os registros 
da tabela relativo ao campo saldo: 
update conta
 set saldo = saldo * 1.05
As alterações em tuplas ou linhas de registro em uma tabela podem ser necessárias 
quando se deseja realizar as alterações de valores com critérios específicos. Para este 
caso, é necessário utilizar a cláusula where. Silberschatz, Korth e Sudarshan (2006, p. 
69) apresentam um complemento do exemplo (8) anterior, que mostra a atualização 
das tuplas com saldo > = 1000:
(8) update conta
set saldo = saldo * 1.05
where saldo >=1000
Para Silberschatz, Korth e Sudarshan (2006, p. 69), 
 “
em geral, a cláusula where da instrução update pode conter qualquer 
construção válida na cláusula where da instrução select (incluindo selects 
aninhados). [...] Um select aninhado dentro de uma instrução update pode 
referenciar a relação que está sendo atualizada. 
Silberschatz, Korth e Sudarshan (2006) apresentam um exemplo (9), a seguir, de uma 
atualização na tabela conta, no campo saldo, aplicando 5% de juros às contas cujo 
saldo seja maior do que a “média” dos saldos:
Pós-Universo 27
(9) update conta
set saldo = saldo * 1.05
where saldo > ( select avg (saldo) from conta)
Vejam que avg tira a média dos saldos de todas as tuplas da tabela conta, pois select 
passa por todos os registros desta tabela. Já a condição where define o critério 
somente para os saldos maiores que a média.
Excluindo Registros (Tuplas) em uma 
Tabela
Para Costa (2006, p. 53), “o comando DELETE é utilizado para excluir linhas [registros, 
tuplas] de uma tabela”. Sua sintaxe é a seguinte: 
delete from nome_tabela where expressão_lógica,
Costa (2006, p. 53) menciona que “delete é o comando para exclusão de linhas de 
uma tabela. E from identifica o trecho do comando onde constará a tabela que será 
afetada. Nome_tabela é a tabela onde serão excluídas as linhas”.
Para Silberschatz, Korth e Sudarshan (2006, p. 67), “uma requisição de exclusão é 
expressa quase da mesma maneira de uma consulta. É possível excluir valores apenas 
tuplas inteiras; não podemos excluir valores apenas em atributos (campos) específicos”. 
O exemplo 10 exclui todas as tuplas (relações, registros) de uma tabela conta.
(10) delete from conta
O exemplo 11, de exclusão das tuplas, é dado pela instrução delete abaixo, que 
exclui os registros com saldo menor que zero da tabela conta. O critérioé definido 
pela cláusula where.
(11) delete from conta
where saldo < 0
Para Costa (2006, p. 103), “também podemos utilizar subconsultas combinadas com 
operações de exclusão de dados”. O exemplo 12 realiza a exclusão das editoras que 
não publicaram livros.
(12) delete from editora
where codigo not in (select editora from livro)
atividades de estudo
1. Tipos de dados ou domínios internos são os domínios de valores associados a cada 
atributo e estas informações são especificadas para determinadas relações em banco 
de dados através da linguagem DDL (SILBERSCHATZ; KORTH; SUDARSHAN, 2006). 
Marque a alternativa correta que apresenta a instrução que define as colunas e os 
seus tipos de dados em uma tabela ou relação.
a) drop table.
b) create table.
c) alter index.
d) create index.
2. Os usuários finais e programadores ambos operam em um nível externo, ou seja, 
interagem com os dados por meio de sublinguagens de dados que se dividem em 
dois componentes na SQL. Um dos componentes é uma lInguagem de definição 
de dados (DDL - Data Definition Language). Marque a alternativa que corresponde 
a uma característica da linguagem DDL.
a) Suporta a criação, exclusão e modificação das tabelas e visões. As restrições de 
integridade podem ser definidas nas tabelas, tanto quando a tabela é criada como 
posteriormente.
b) Permite que os usuários formulem consultas e insiram, excluam e modifiquem 
tuplas.
c) Referenciada como framework quando embutida dentro de uma linguagem 
hospedeira (Ex.: C ou Cobol).
d) Utiliza instruções como DELETE, INSERT, SELECT e UPDATE.
atividades de estudo
3. Segundo Prescott (2015), “para inserir dados em qualquer tabela, temos que usar 
‘INSERT INTO’ seguido pelo nome da tabela e então ‘VALUES’ seguido do valor a ser 
inserido, separado por uma vírgula dentro dos parênteses” [sendo que os valores 
caracteres devem ser separados por aspas simples]. É possível também alterar a 
ordem em que os dados são inseridos na tabela. Para isso, deve-se:
a) mencionar a ordem das tuplas entre parênteses antes do nome da tabela, onde 
a sequência das tuplas é a ordem a ser definida.
b) mencionar a ordem das colunas entre parênteses após o nome da tabela.
c) mencionar apenas o comando alter column e as colunas a serem ordenadas.
d) mencionar a ordem das colunas entre parênteses antes do nome da tabela, onde 
a sequência dos campos é a ordem a ser definida.
resumo
Em nosso estudo, compreendemos que o SQL por natureza não é uma linguagem de programação 
procedural e sim uma linguagem ou um conjunto de sublinguagens que basicamente permitem 
a manutenção da estrutura de dados (metadados) e do acesso aos dados de fato, permitindo 
operações de consulta, inserção, atualização e exclusão; acessos estes realizados em conjunto 
com as linguagens de programação para as aplicações como Java, C# ou PHP, entre outras. Estas 
sublinguagens de acesso e manutenção são realizadas por dois componentes, DDL e DML. O 
componente DDL realiza a definição dos recursos em um banco de dados, como tabelas, campos 
e índices, permitindo criar e remover tabelas, descrever restrições de integridade, registrar e 
remover utilizadores e atribuir e retirar privilégios aos utilizadores. Já o componente DML realiza 
a manipulação de dados em um SGBD, permitindo que os usuários formulem consultas e insiram, 
excluam e modifiquem tuplas, trabalhando em conjunto com as linguagens de programação 
para aplicativos móveis, sistemas de gestão empresarial e websites. Vimos que as instruções da 
sublinguagem DDL, como CREATE, ALTER e o DROP são utilizadas para criar, alterar e eliminar 
as definições de recursos em uma base de dados. Assim, quando definimos o recurso tabela, 
compreendemos que devemos definir os tipos de dados ou domínios internos dos valores 
associados a cada atributo. Já os principais tipos de dados que os banco de dados suportam são os 
caracteres, como o char (string de caracteres), o varchar (string de caracteres de tamanho variável) 
e o text (que suporta textos maiores que 4000 caracteres e de tamanho variável); com relação 
ao suporte ao tipo numérico, temos o int (conjunto de valores inteiros), o NUMBER (armazena 
valores fixos ou flutuantes de acordo com especificação de precisão e escala) e o DECIMAL (é uma 
variação de NUMBER). Já as instruções da sublinguagem DML, como SELECT, DELETE, INSERT e 
UPDATE, são utilizadas para selecionar, eliminar, inserir e atualizar as tuplas em uma base de dados. 
material complementar
Sistema de Banco de Dados
Autor: Abraham Silberschatz, Henry F. Korth e S. Surdarshan
Editora: Elsevier
Sinopse: Este é um livro-texto clássico sobre treinamento em banco de 
dados. A obra apresenta os conceitos fundamentais do gerenciamento de 
banco de dados de uma maneira intuitiva e motivadora para os alunos, 
inclusive com um novo exemplo de banco de dados de uma universidade, que ilustra escolhas 
mais complexas de projeto. O texto enfatiza questões práticas, aplicações e implementação, 
junto com uma cobertura dos principais conceitos teóricos. Nesta 6ª edição, todos os capítulos 
foram revisados para refletir os avanços mais recentes na tecnologia. Os autores fizeram ainda 
uma cobertura revisada e expandida dos seguintes temas: Variantes da SQL em sistemas 
reais; Projeto relacional; Aplicações Web e segurança; Indexação e otimização de consulta; 
Gerenciamento de transação; Bancos de dados paralelos e distribuídos.
Comentário: Sem dúvida, um livro complete, que pode complementar os estudos sobre o 
assunto de transações e controle de concorrência, através de vários exemplos e cenários dos 
mais simples aos mais complexos.
Na Web
Para mais detalhes sobre a linguagem SQL, DML (Data manipulation Language) e DDL (Data 
Definition Language), acesse o link oficial de documentação da Oracle:
Web: <https://docs.oracle.com/cd/B28359_01/server.111/b28318/sqlplsql.htm#CNCPT116>.
referências
COSTA, C. J. Desenvolvimento para web. Lisboa: ITM Press/Lusocredito, 2007.
COSTA, R. L. de C. SQL: guia prático. 2. ed. Rio de Janeiro: Brasport, 2006.
DATE, C. J. Introdução aos sistemas de banco de dados. Rio de Janeiro: Elsevier, 2003.
FREEMAN, R. Oracle, referência para o DBA: técnicas essenciais para o dia-a-dia do DBA. Rio de 
Janeiro: Elsevier, 2005.
PICHILIANI, M. C. Conversando sobre o banco de dados. Joinville: Clube de Autores, 2008.
PRESCOTT, P. SQL para iniciantes. Babelcube Inc., 2015. 
RAMAKRISHNAN, R.; GEHRKE, J. Sistemas Gerenciadores de Banco de Dados. 3. ed. Porto Alegre: 
AMG. 2011.
RAMALHO, J. A. Microsoft SQL Server 2005 - Guia prático. Rio de Janeiro: Elsevier, 2005.
RISCHERT, A. Oracle, SQL by example. 4. ed. Pearson Education, 2009.
SILBERSCHATZ, A.; KORTH, H. F.; SURDARSHAN, S. Sistemas de Banco de Dados. Rio de Janeiro: 
Elsevier, 2006.
REFERÊNCIAS ON-LINE
1 Em: <https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1834>. 
Acesso em: 9 dez. 2017.
2 Em: <https://docs.oracle.com/database/121/SQLRF/clauses002.htm#SQLRF52180>. Acesso em: 
12 dez. 2017.
resolução de exercícios
1. b) create table.
2. a) Suporta a criação, exclusão e modificação das tabelas e visões. As restrições de 
integridade podem ser definidas nas tabelas, tanto quando a tabela é criada como 
posteriormente.
3. b) mencionar a ordem das colunas entre parênteses após o nome da tabela.
	sql

Outros materiais