Unidade 1
Unidade 1
Revisão Textual:
Prof. Ms. Claudio Brites
Comandos DDL e DML
Caro Aluno(a)!
Bons Estudos!
UNIDADE
Comandos DDL e DML
Contextualização
Com essas categorias de comandos, é possível fazer a implementação do modelo físi-
co do banco de dados, ou seja, fazer a criação, alteração e exclusão de tabelas e popu-
lação dos dados. É o momento onde todo trabalho começa, portanto, tal conhecimento,
tornar-se essencial para a sobrevivência na área de banco de dados.
6
SQL – Structured Query Language
Aqui serão abordadas as estruturas SQL para a criação e manipulação de tabelas
e dados. Na linguagem SQL é estruturada e utiliza uma combinação de construtores
em álgebra e cálculo relacional que possibilita a realização de consultas, a manipulação
de tabelas e dados. Essa também permite a criação, alteração e exclusão de tabelas e
manipulações de dados. A lingaugem SQL é um padrão utilizado pelos Sistemas de
Gerenciamento de Banco de Dados (SGBD) relacionais.
Histórico
Quando os bancos de dados relacionais estavam sendo desenvolvidos, foram
criadas linguagens destinadas à sua manipulação. O departamento de pesquisas da
IBM desenvolveu a SQL como forma de interface para o sistema de banco de dados
(BD) relacional denominado SYSTEM R, no início dos anos 1970, originalmente
chamada de Structured English Query Language (SEQUEL).
Em 1977, foi revisada e passou a ser chamada de Structured Query Language (SQL).
Em 1986, o American National Standard Institute (ANSI) publicou um padrão SQL,
então a SQL se estabeleceu como linguagem padrão para bancos de dados relacionais.
Características da SQL
A SQL possui comandos para a definição dos dados (DDL – Data Definition Language),
comandos para a manipulação de dados (DML – Data Manipulation Language) e uma
subclasse de comandos DML, a Data Control Language (DCL), que dispõe de comandos
de controle como Grant e Revoke.
Instruções DDL
Os comandos DDL (Data Definition Language), composta entre outros pelos
comandos Create, que é destinado à criação do banco de dados, das tabelas que o
compõem, além das relações existentes entre as tabelas. Como exemplo de comandos
da classe DDL, temos os comandos Create, Alter e Drop. Por meio das instruções DDL,
podem ser realizadas as tarefas de:
• Criação, alteração e eliminação de objetos do banco de dados, como por exemplo:
tabelas, índices, sequências;
• Concessão e revogação de privilégios em objetos;
• Criação do banco de dados;
• Criação de usuários;
• Concessão e revogação de privilégios a usuários.
7
7
UNIDADE
Comandos DDL e DML
Instruções DML
Os comandos da série DML (Data Manipulation Language) são destinados a consul-
tas, inserções, exclusões e alterações em um ou mais registros de uma ou mais tabelas
de maneira simultânea. Como exemplo de comandos da classe DML, pode-se citar os
comandos:
• Insert – Inserção de dados;
• Update – Alteração de dados;
• Delete – Remoção de dados;
• Commit – Confirmação das manipulações;
• Rollback – Desistência das manipulações.
Instruções DQL
Os comandos da série Data Query Language (DQL) servem para fazer a recuperação
dos dados. Todas as consultas são executadas através deste tipo de comando:
• Select: seleciona linhas de dados de tabelas ou visões.
Instruções DCL
Os comandos da série Data Control Language (DCL) são utilizados para controlar os
privilégios de usuários, com eles é possível:
• permitir a um usuário que se conecte ao banco;
• permitir que crie objetos no banco;
• permitir que consulte objetos do banco; entre outros;
• cancelar os privilégios de um usuário ou personagem.
8
• As guias e endentações podem ser usadas para tornar o código mais legível. Em
geral, as palavras-chave são digitadas em letras maiúsculas, todas as outras palavras,
como nomes de tabela e colunas são digitadas em minúsculas;
• Dentro do ambiente SQL*Plus, uma instrução SQL é digitada no prompt SQL e as
linhas subsequentes são numeradas, isso é chamado buffer de SQL. Somente uma
instrução pode ser a atual a qualquer momento dentro do buffer.
Criando Tabelas
Está é uma operação DDL. Para criar uma tabela, é necessário que o usuário tenha pri-
vilégio e uma área para armazenamento. A sintaxe simplificada para criação de tabelas é:
[constraint da coluna],
...,
[constraint da tabela]);
onde:
9
9
UNIDADE
Comandos DDL e DML
Tipos de Dados:
Tabela 1
Para os exemplos e as práticas serão utilizadas as tabelas EMP e DEPT (que constam
no ambiente default), que contêm, respectivamente, informações sobre os funcionários
e sobre os departamentos de uma empresa e, para que não exista necessidade de
armazenar os dados sobre o nome do departamento e a localização dos mesmos para
cada registro de funcionários, elas são relacionadas por meio dos campos DEPTNO –
que na tabela EMP é chave estrangeira e na tabela DEPT é chave primária.
Tabela 2
No exemplo abaixo, está sendo criada a tabela DEPT com três colunas chamadas:
DEPTNO, DNAME e LOC.
2 (deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13));
Table created.
10
A instrução describe é utilizada para exibir a estrutura de uma tabela.
DEPTNO NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
Restrições (constraints)
As restrições impõem regras que podem ser no nível da coluna ou no nível da tabela.
São utilizadas para impedir que dados inválidos sejam digitados nas tabelas, garantindo
assim a consistência dos dados.
Exemplo: no exemplo acima, a restrição NOT NULL está sendo aplicada às colunas
ENAME e DEPTNO da tabela EMP. Observe que na linha 3 a restrição está sendo
identificada; já na linha 9 não, o Oracle a identificará de acordo com o seu padrão de
identificação SYS_cn.
11
11
UNIDADE
Comandos DDL e DML
2 empno NUMBER(4),
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
Para verificar se as colunas da tabela estão ou não com a restrição NOT NULL, utilize
a instrução DESCRIBE, como segue exemplo abaixo:
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
Exemplo: criar a tabela dept cujo nome do departamento (dname) não poderá
ser duplicado:
12
SQL> CREATE TABLE dept(
2 deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
Exemplo: criar a tabela dept cujo campo número do departamento (deptno) deverá
ser a chave de identificação do registro:
2 deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
2 valor1 NUMBER(2),
3 valor2 NUMBER(2),
As chaves estrangeiras são baseadas nos valores dos dados, sendo puramente lógicas,
e não ponteiros físicos.
13
13
UNIDADE
Comandos DDL e DML
2 empno NUMBER(4),
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
Exemplo: para evitar erros de digitação do usuário, você coloca uma restrição do tipo
CHECK para o campo SALÁRIO, em que o mesmo deve ser maior do que o salário
mínimo de R$800,00. Dessa forma, ao tentar inserir valor menores do que 800, a
restrição será ativada e será apresentado um erro para o usuário.
2 empno NUMBER(4),
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
14
Consultando Restrições de uma Tabela
No exemplo a seguir, serão consultadas as restrições definidas para a tabela emp:
2 STATUS,SEARCH_CONDITION
3 FROM USER_CONSTRAINTS
onde:
Resultado:
EMP_EMPNO_PK P ENABLED
EMP_MGR_FK R ENABLED
EMP_DEPTNO_FK R ENABLED
EMP_ENAME_UK U ENABLED
15
15
UNIDADE
Comandos DDL e DML
Adicionando colunas
Para adicionar colunas, deve-se utilizar a cláusula add em conjunto com a instrução
ALTER TABLE:
Sintaxe:
Onde:
• Tabela: Nome da tabela que irá ser alterada para possuir a coluna ou restrição
especificada.
• Nome da coluna: Nome da coluna que será acrescentada.
• Tipo de dado: Tipo de dado da coluna que será acrescentada.
• Restrições: Especificação das restrições para a coluna acrescentada, se for necessário.
Se uma tabela já contiver linhas quando uma coluna for adicionada, então a nova coluna
será inicialmente nula para todas as linhas.
Adicionando Restrições
Para adicionar colunas, deve-se utilizar a cláusula add em conjunto com a instrução
ALTER TABLE:
Sintaxe:
onde:
• Tabela: é o nome da tabela.
16
• Restrição: é o nome da restrição, é opcional mas recomendado.
• Tipo: é o tipo da restrição.
• Coluna: é o nome da coluna afetada pela restrição.
Exemplo: adicionar uma restrição FOREIGN KEY à tabela EMP, indicando que um
gerente já deve existir como um funcionário válido na tabela EMP.
• Restrições não podem ser modificas; mas, para adicionar uma restrição NOT NULL, pode-se
usar a cláusula MODIFY;
• Uma coluna pode ser especificada como NOT NULL somente se a tabela não contiver linhas.
Modificando Colunas
Para modificar a estrutura das colunas, deve-se utilizar a cláusula modify em conjunto
com a instrução ALTER TABLE:
Sintaxe:
Onde:
• Tabela: Nome da tabela.
• Coluna: Nome da coluna que sofrerá modificações.
• Especificações: Tipo de dado, tamanho, restrições.
É possível:
• aumentar a largura ou precisão de uma coluna numérica;
• diminuir a largura de uma coluna se contiver somente valores nulos e/ou se a tabela
não tiver linhas;
• alterar o tipo de dados se a coluna contiver valores nulos;
• converter uma coluna CHAR para o tipo de dados VARCHAR2, ou vice-versa, se a
coluna contiver valores nulos ou se o tamanho da coluna não for alterado.
17
17
UNIDADE
Comandos DDL e DML
Uma alteração no valor default de uma coluna afeta somente as inserções subsequentes
à tabela.
Sintaxe:
Onde:
• Tabela: Nome da tabela.
• Coluna: É o nome da coluna afetada pela restrição.
• Restrição: Nome da constraint que será eliminada.
• Cascade: Está cláusula elimina todas as restrições dependentes.
Exemplo:
FROM USER_CONS_COLUMNS
1 As views do dicionário de dados são “tabelas” lógicas que contém informações sobre os objetos do banco de dados.
18
Resultado:
CONSTRAINT_NAME COLUMN_NAME
EMP_DEPTNO_FK DEPTNO
EMP_EMPNO_PK EMPNO
EMP_ENAME_UK ENAME
EMP_MGR_FK MGR
SYS_C00884 EMPNO
SYS_C00885 DEPTNO
Sintaxe:
onde:
• Tabela: é o nome da tabela
A instrução DROP TABLE, uma vez executada, é irreversível. O Oracle Server não questiona
a ação quando você emite a instrução DROP TABLE. Se você possuir tal tabela ou tiver um
privilégio de nível superior, então a tabela será imediatamente removida.
19
19
UNIDADE
Comandos DDL e DML
Comandos DML
Inserção de Dados
A inserção de dados é uma operação DML.
Sintaxe:
Onde:
Para verificar a ordem default das colunas de uma tabela e o tipo de dado esperado,
utilize a instrução describe.
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
Neste caso, não existe a necessidade de indicar as colunas que irão receber as
inserções, pois estão sendo inseridos valores para todas as colunas, então o mesmo
exemplo poderia ser resolvido assim:
Exemplo 2:
20
Exemplo 3:
Exemplo 4:
Já neste outro exemplo, o nulo para a coluna loc está sendo explicitado. Note que a
lista de colunas é omitida pois estão sendo mencionados os dados para todas as colunas.
A palavra NULL poderia ser substituida por aspas simples (70, ‘FINANCE’, ‘’).
Exemplo 5:
SQL> Select *
2 from emp;
Alteração de Dados
A alteração de dados é uma operação DML.
Sintaxe:
UPDATE tabela
[WHERE condição];
onde:
21
21
UNIDADE
Comandos DDL e DML
2 SET deptno = 20
Remoção de dados
A remoção de dados é uma operação DML.
Sintaxe:
Onde:
Exemplo:
22
As instruções responsáveis pelo controle das transações são o commit e o rollback. A
emissão de um commit confirma as transações, isto é, efetiva as manipulações de dados
realizadas nas tabelas. A emissão de um rollback descarta as transações que ainda não
tenham sido confirmadas (comitadas).
3 WHERE empno=7782;
SQL> COMMIT;
É importante lembrar que após a emissão do comando COMMIT não há mais como reverter
a operação feita anteriormente.
SQL> Delete
2 From employee;
14 rows deleted
SQL> ROLLBACK;
23
23
UNIDADE
Comandos DDL e DML
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Livros
Linguagem SQL Fundamentos e Práticas
CARDOSO, Virginia; CARDOSO, Giselle. Linguagem SQL fundamentos e práticas.
São Paulo: Editora Saraiva, 2013.
Banco de Dados
MACHADO, Felipe Nery Rodrigues. Banco de dados: projeto e implementação. São
Paulo: Ed. Érica|Saraiva, 2004.
24
Referências
CARDOSO, Virginia; CARDOSO, Giselle. Linguagem SQL fundamentos e práticas.
São Paulo: Editora Saraiva, 2013.
PRICE, Jason. Oracle database 11G SQL. São Paulo: Bookman, 2008
25
25