



























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostila SQL
Tipologia: Notas de estudo
1 / 35
Esta página não é visível na pré-visualização
Não perca as partes importantes!




























I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
Esse curso tem por objetivo dar condições ao aluno de se lançar na linha de
DBA’s e na área de Desenvolvimento de Aplicações. Esse curso abrange a criação de
estruturas de bancos de dados e o armazenamento, recuperação e manipulação de dados em
um banco de dados relacional.
A SQL se tornou o padrão para linguagens de banco de dados relacionais. Existem
diversas versões de SQL. A versão original foi desenvolvida pela IBM no Laboratório de
Pesquisa de San José. Essa linguagem, originalmente chamada de Sequel, foi implementada
no início dos anos 70. Desde então, a linguagem Sequel foi evoluindo e passou a ser chamada
de SQL, isto é, Structured Query Language (Linguagem de Consulta Estruturada). A grande
vantagem de se usar a SQL, é que inúmeros produtos dão suporte atualmente ao uso da SQL.
Nas décadas de 80 e 90, o American National Standards Institute (ANSI), a
Internacional Standards Organization (ISO) e a IBM, publicaram os padrões para a SQL.
Sistemas de banco de dados comerciais precisam de uma linguagem de consulta
mais fácil para atender as necessidades dos usuários. Neste tópico estudaremos a linguagem
comercial mais utilizada no mercado, para tal fim, a SQL. A SQL usa uma combinação de
construtores em álgebra e cálculo relacional.
A SQL possui também muitos outros recursos, além da consulta ao banco de
dados, tais como meios para definição da estrutura de dados, para modificação de dados e
para a especificação de restrições de segurança.
A linguagem SQL possui diversas partes, definidas a seguir:
criação de índices.
consulta de tuplas (linhas) no banco de dados.
geral, como PL/I, Visual Basic, Delphi, Pascal, C, etc.
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
visões.
que serão armazenados no banco de dados devem satisfazer.
transações
Convenções Tipográficas dentro de códigos
Letras maiúsculas Comandos, funções SQL> SELECT codigo FROM curso; Letras minúsculas, itálico Variáveis de sintaxe SQL> CREATE ROLE papel ; Inicial maiúscula Gatilhos de forms Trigger name: When-Validate-Item
4.1. SQL e SQLPlus*
Para tal objetivo, utilizaremos o produto SQL*Plus, pois é nesse software que são
formatadas, elaboradas e executadas as SQL’s. Quando você informa uma instrução SQL, ela
é armazenada em uma parte da memória chamada buffer de SQL e permanece lá até que você
informe uma nova instrução. O SQL*Plus é uma ferramenta, um ambiente Oracle que
reconhece e submete instruções SQL ao Oracle Server para execução e contém sua própria
linguagem de comando.
Recursos do SQL
nenhuma experiência em programação.
Recursos do SQL*Plus
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
ED[IT] nome arquivo [.ext] Chama o editor para editar o conteúdo de um arquivo. SPO[OL] nome arquivo [.ext] Imprime um arquivo na impressora do sistema. EXIT Sai do código SQL*Plus.
4.4. Estabelecendo Login no SQLPlus*
Para estabelecer Login, inicia-se o SQL*Plus através do iniciar, programas,
Oracle. O usuário deverá entrar com seu nome, senha e nome do banco de acesso.
Segue-se abaixo a lista de instruções que servirão como estrutura do curso. O
curso terá seu caminho traçado de acordo com a coluna Parte da tabela a seguir:
Instrução Descrição SELECT recuperação de dados Recupera dados do banco de dados. INSERT UPDATE DML DELETE
Insere linhas. Altera linhas. Deleta linhas. CREATE ALTER DROP DDL RENAME TRUNCATE
Cria estruturas (tabelas). Altera estruturas (tabelas). Elimina estruturas (tabelas). Renomeia estruturas (tabelas). Trunca estruturas (tabelas). VIEW SEQUENCE
Criando Visões Criando Seqüência COMMIT SAVEPOINT Controle de transação ROLLBACK
Grava em disco. Desfaz transação, antes do COMMIT. Marcar pontos de gravação. GRANT Fornece privilégios.
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
REVOKE DCL Remove privilégios. FORMATANDO RELATÓRIOS Formatação de relatórios.
6.1 Expressões Aritméticas
Operador Descrição
6.2. Operadores de Comparação
Operador Descrição
<= Menor do que ou igual a <> Diferente de
6.3. Operadores de Comparação mais Avançados
Operador Descrição BETWEEN ... AND... Entre dois valores (inclusive) IN(list) Lista de valores LIKE Um padrão de caractere IS NULL É um valor nulo.
6.4. Operadores Lógicos
Operador Significado AND TRUE se todas as condições forem atendidas. OR TRUE se pelo menos uma das condições forem atendidas. NOT TRUE se a condição seguinte for FALSE.
6.5. Tipo de dados
Tipo de dado Descrição NUMBER( p,s ) Valor numérico que possui um número máximo de dígitos p , o número dígitos à direita do ponto decimal s. VARCHAR( s ) Valor de caracteres com comprimento variável do tamanho
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
1.1. Instrução SELECT Básica – Recuperação de Dados
SELECT [DISTINCT] {*, coluna [ apelido ], ... } FROM tabela ;
Outros definições necessárias
aplicável, não o mesmo que um zero ou um espaço em branco. Em expressões aritméticas o resultado será nulo.
apelido. Se o apelido tiver letras maiúsculas e minúsculas, e espaços ou caracteres especiais, torna se necessário o uso de aspas duplas.
representado por duas barras verticais (| |).
Exemplos de instruções
SQL> SELECT * FROM professor; Lista todos os campos (colunas) da tabela professor.
SQL> SELECT codigo, nome FROM professor; Lista apenas o codigo e o nome da tabela professor.
SQL> SELECT DISTINCT cargo FROM professor; Lista apenas o codigo do cargo da tabela professor, sem repetição (DISTINCT)
SQL> SELECT nome, salario+200 FROM professor; Lista o nome e o salário com mais 200 reais da tabela de professor.
SQL> SELECT nome, salario, salario*15/100 AS aumento FROM professor; Lista o nome, o salário e um aumento de 15%, tendo como cabeçalho aumento.
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
SQL> SELECT nome AS “Nome”, salario AS “Aumento Salarial” FROM professor; Lista o nome e o salário tendo como cabeçalho Nome e Aumento Salarial.
SQL> SELECT nome | | ‘ faz aniversário em ‘ | | nascimento AS “Lista Aniversariantes” FROM professor; Lista o nome e a data de nascimento, com strings para frases, tendo como cabeçalho Lista
Aniversariantes.
1.2. Comando DESC
DESC[RIBE] tabela ;
dados) de uma tabela.
1.3. Usando a Cláusula ORDER BY
SELECT [DISTINCT] {*, coluna [ apelido ], ... } FROM tabela ORDER BY coluna ;
DESC.
Exemplos de instruções
SQL> SELECT codigo, nome, salario 2 FROM professor 3 ORDER BY nome DESC; SQL> SELECT codigo, nome, salario*13 anual 2 FROM professor 3 ORDER BY anual; SQL> SELECT codigo, nome 2 FROM professor 3 ORDER BY cargo, nome;
1.4. Usando a Cláusula GROUP BY
SELECT [DISTINCT] {*, coluna [ apelido ], ... }
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE nome LIKE ‘F%’; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE nome LIKE ‘_A%’; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE nascimento IS NULL; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE nascimento IS NULL; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE salario>=1300 AND nome=’FABIO’; SQL> SELECT codigo, nome, salario 2 FROM professor 3 WHERE salario NOT IN (1000, 1500, 2000);
1.6. Usando a Cláusula HAVING
SELECT coluna, grupo_função FROM tabela [GROUP BY grupo_por_expressão ] [HAVING grupo_condição ];
restrinja ainda mais os grupos com base nas informações agregadas.
condição especificada seja true.
3º os grupos que correspondem aos critérios na cláusula HAVING são exibidos.
Exemplos somente da cláusula
HAVING MAX(salario)>1250;
Exemplos de instruções
SQL> SELECT depto, MAX(salario) 2 FROM professor 3 GROUP BY depto 4 HAVING MAX(salario)>1500; SQL> SELECT depto, SUM(salario) 2 FROM professor
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
3 WHERE depto BETWEEN 3 AND 6 4 GROUP BY depto 5 HAVING SUM(salario)> 6 ORDER BY SUM(salario);
1.7. Obtendo Dados de Várias Tabelas
Algumas vezes é necessário utilizar dados a partir de uma ou mais tabelas. Para
isso é preciso vincular as tabelas para ter acesso aos dados das duas tabelas. Uma condição de
junção é criada a partir da cláusula WHERE. Usa se a notação tabela.coluna , já que existem
campos (colunas) iguais em tabelas diferentes.
SELECT tabela1.coluna, tabela2.coluna FROM tabela1, tabela WHERE tabela1.coluna1 = tabela2.coluna2;
Exemplos de junções
SQL> SELECT professor.codigo, professor.nome, cargo.descricao 2 FROM professor, cargo 3 WHERE professor.cargo = cargo.codigo; SQL> SELECT p.codigo, p.nome, c.descricao 2 FROM professor p, cargo c 3 WHERE p.cargo = c.codigo;
Utilizando Funções de Grupo
1.7.1. Funções de Grupo
Função Descrição AVG([DISTINCT|ALL] n ) Valor médio de^ n , ignorando valores nulos. COUNT({|[DISTINCT|ALL]* expr }) Fornece o número de linhas. A expr para algo diferente de nulo, ou * para todas as linhas (duplicados e nulos também) MAX([DISTINCT|ALL] expr ) Valor máximo de expr , ignorando valores nulos_._ MIN([DISTINCT|ALL] expr ) Valor mínimo de expr , ignorando valores nulos_._ STDDEV([DISTINCT|ALL] n ) Desvio padrão de n , ignorando valores nulos. SUM([DISTINCT|ALL] n ) Valores somados de^ n , ignorando valores nulos VARIANCE([DISTINCT|ALL] n ) Variação de n , ignorando valores nulos.
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
1.9. Utilizando Variáveis de Substituição
temporariamente.
se aspas simples.
solicitar sempre ao usuário.
Exemplos de instruções
SQL> SELECT depto, nome, salario, cargo 2 FROM professor 3 WHERE cargo = &numcar; Enter value for numcar: SQL> SELECT depto, nome, salario+salario/ 2 FROM professor 3 WHERE nascimento = ‘&nascprof’; Enter value for nascprof: SQL> ACCEPT numdepto PROMPT ‘Digite o número do Departamento:’ SQL> SELECT * 2 FROM professor 3 WHERE depto = UPPER(‘&numdepto’) 2 / Digite o número do Departamento: SQL> DEFINE numdepto = 4 SQL> SELECT * 2 FROM professores 3 WHERE depto = &numdepto;
2.1. Instrução INSERT
INSERT INTO tabela [( coluna [, coluna ...])] VALUES ( valor [, valor ...]);
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
Exemplos de instruções
SQL> INSERT INTO professor (codigo, nome, nascimento, salario, cargo, depto) 2 VALUES (15, ‘FULANO DE TAL’,’10-JAN-69’,1500,1,2); 1 row created. SQL> INSERT INTO cargo (codigo, descricao) 2 VALUES (10, ‘LIVRE DOCENTE’); 1 row created. SQL> INSERT INTO depto (codigo, descricao) 2 VALUES (&numdepto, ‘&nomedepto’); Enter value for numdepto: Enter value for nomedepto: 1 row created.
2.2. Instrução UPDATE
UPDATE tabela SET coluna = valor [, coluna = valor , ...] [WHERE condição ];
colunas, expressões, constantes, subconsultas e operadores de comparação.
Exemplos de instruções
SQL> UPDATE professor 2 SET depto = 3 3 WHERE codigo=2; 1 row update. SQL> UPDATE professor 2 SET salario = salario*1. n row update.
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
Exemplos de instruções
SQL> CREATE TABLE depto 2 (codigo NUMBER(2), 3 (descricao VARCHAR2(30)); Table created. SQL> DESCRIBE depto SQL> CREATE TABLE cargo 2 AS 3 (SELECT codigo, nome, salario, nascimento 4 FROM professor 5 WHERE cargo=2); Table created. SQL> DESCRIBE depto SQL> CREATE TABLE teste 2 AS 3 ( SELECT * FROM professor 4 WHERE 1=2); Table created. Obs: colocando uma condição inútil será copiado somente a estrutura. SQL> DESCRIBE teste
3.2. Instrução ALTER TABLE
ALTER TABLE tabela ADD ( tipo de dados da coluna [DEFAULT expr ] [, tipo de dados da coluna ]...); ALTER TABLE tabela MODIFY ( tipo de dados da coluna [DEFAULT expr ] [, tipo de dados da coluna ]...);
tabela.
Exemplos de instruções
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
SQL> ALTER TABLE depto 2 ADD (localidade VARCHAR2(25)); Table altered. SQL> DESCRIBE depto SQL> ALTER TABLE depto 2 MODIFY (localidade VARCHAR2(35)); Table altered. SQL> DESCRIBE depto SQL> ALTER TABLE depto 2 DROP COLUMN localidade; Table altered. SQL> DESCRIBE depto
3.3. Instrução DROP TABLE
DROP TABLE tabela ;
quanto sua estrutura.
Exemplos de instruções
SQL> DROP TABLE depto10; Table dropped.
3.4. Instrução RENAME
RENAME old_name TO new_name;
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
de linhas em uma tabela. Restrições
Restrição Descrição NOT NULL Especifica que esta coluna não pode conter um valor nulo. UNIQUE Especifica uma coluna ou combinação de colunas cujos valores devem ser excluídos para todas as linhas na tabela. PRIMARY KEY Identifica exclusivamente cada linha da tabela. FOREIGN KEY Estabelece e impõem um relacionamento de chave estrangeira entre a coluna e a coluna da tabela referenciada. CHECK Especifica uma condição que deve ser verdadeira.
Exemplo de instruções
SQL> CREATE TABLE depto 2 (codigo NUMBER(2), 3 descricao VARCHAR2(30), 3 CONSTRAINT depto_descricao_pk UNIQUE (descricao) 4 CONSTRAINT depto_codigo_ck CHECK(codigo BETWEEN 10 AND 99)); SQL> CREATE TABLE professor 2 (codigo NUMBER(4), 3 nome VARCHAR2(30), 4 ... 5 cargo NUMBER(2) NOT NULL, 6 CONSTRAINT professor_codigo_pk PRIMARY KEY (codigo), 7 CONSTRAINT professor_cargo_fk FOREIGN KEY (cargo) 8 REFERENCES depto(codigo));
Remove a restrição do cargo (chave estrangeira) da tabela PROFESSOR.
SQL> ALTER TABLE professor 2 DROP CONSTRAINT professor_cargo_fk;
Remove a restrição de chave primária da tabela DEPTO e elimina a restrição de chave
estrangeira associada na coluna PROFESSOR.DEPTO.
SQL> ALTER TABLE depto 2 DROP PRIMARY KEY CASCADE;
Desativar restrições de integridade dependentes, usando a cláusula DISABLE e CASCADE
SQL> ALTER TABLE professor 2 DISABLE CONSTRAINT professor_depto_fk CASCADE;
Ative restrições de integridade dependentes, usando a cláusula ENABLE
I nstituto M unicipal de E nsino S uperior de A ssis
Prof. Alex Poletto - [email protected]
SQL> ALTER TABLE professor 2 ENABLE CONSTRAINT professor_depto_fk;
Consulte a tabela USER_CONSTRAINTS para ver todos os nomes e definições de restrições
SQL> SELECT constraint_name, constraint_type, search_condition 2 FROM user_constraints 3 WHERE table_name = ‘PROFESSOR’; Instrução para visualizar todos os nomes e definições de restrições. Visualize as colunas associadas aos nomes de restrições na view USER_CONS_COLUMNS
SQL> SELECT constraint_name, column_name 2 FROM user_cons_columns 4 WHERE table_name = ‘PROFESSOR’; Instrução para visualizar as colunas associadas aos nomes de restrições.
3.7. Criando Índice
usando um método rápido de acesso a caminhos para localizar os dados rapidamente.
CREATE INDEX indice ON tabela (coluna[, coluna]...);
Quando criar um índice
de junção.
WHERE ou em uma condição de junção.
a 4% das linhas.
Quando não criar um índice