Buscar

Banco de DADOS

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 20 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 20 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 20 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

TRABALHO DE BANCO DE DADOS
A LINGUAGEM SQL
NIXON DE CASTRO SILVA
Salvador 2014
1 - INTRODUÇÃO
O uso de comandos SQL é fundamental quando se trabalha com banco de dados. A instrução SQL é usada em diversas linguagens que agregam o poder da Structured Query Language, tais como: Cobol, Natural, SQL Server, Oracle, MySql e outros. Atualmente, a SQL pode ser considerada um padrão para manipulação de dados em um banco de dados. Duas entidades, a ANSI (American National Standards Institute) e a ISO (International Standards Organization), vêm ao longo do tempo padronizando a linguagem SQL. O primeiro padrão (SQL-86) foi definido pela ANSI em 1986 e consistia basicamente na SQL da IBM, com poucas modificações. É um conjunto de comandos de manipulação de banco de dados utilizado para criar e manter a estrutura desse banco de dados, além de incluir, excluir, modificar e pesquisarinformações nas tabelas dele. A linguagem SQL não é uma linguagem de programação autônoma; poderia ser chamada de "sublinguagem". Quando se escrevem aplicações para banco de dados, é necessário utilizar uma linguagem de programação tradicional (C, Java, Pascal, COBOL, etc...) e embutir comandos SQL para manipular os dados. m um modelo relacional, apenas uma tipo de estrutura de dados existe: a tabela. Novas tabelas são criadas com a junção ou combinação de outras tabelas. Utilizando apenas um comando SQL é possível pesquisar dados em diversas tabelas ou atualizar e excluir diversas linhas das mesmas. 
A linguagem SQL não é procedural, logo é possível especificar o que deve ser feito, e não como deve ser feito. Dessa forma, um conjunto de linhas (set) será atingido pelo comando e não cada uma das linhas, como é feito no ambiente procedural. Portanto, não é necessário entender o funcionamento interno do banco de dados e como e onde estão armazenados fisicamente os dados.
2 - HISTÓRICO
Segundo [Melton,1999], as duas organizações atualmente envolvidas na padronização do SQL são o comitê americano ANSI e o comitê internacional ISO. Mais Especificamente, a comunidade internacional trabalha através da ISO/IEC/JTC1 (Joint Technical Committee 1), responsável por desenvolver e manter padrões relacionados à Tecnologia da Informação. Dentro da JTC1, um subcomitê denominado SC32 – Data Management and Interchange – foi formado para reunir vários padrões relacionados à banco de dados e metadados. SC32, por sua vez, é formado por um número de Working Groups que realmente fazem o trabalho técnico onde o WG3 (Database Languages) é responsável pelo padrão SQL. Nos Estados Unidos, os padrões relacionados à banco de dados, incluindo o SQL, são tratados pela ANSI NCITS H2 (National Committee for Information Technology Standards – Technical Comittee on Database), na qual IBM, Microsoft e Oracle têm seus representantes. O primeiro padrão (SQL-86) foi definido em 1986 pelo ANSI e no ano seguinte a ISSO adotou o SQL como padrão. Esta primeira geração consistia basicamente na implementação da IBM. Em 1989 surgiu uma nova versão (SQL-89) em que foram adicionados recursos importantes como chave primária, chave estrangeira e valores nulos. No ano em o SQL-89 foi publicado, a H2 tornou-se muito ativa nas propostas escritas para a especificação que gerou o SQL-92, o padrão até hoje mais seguido pelos gerenciadores de bancos de dados. Alterações significativas como domínios, tabelas temporárias, novos tipos de junção (left, right e natural join), expressões nomeadas (cláusula AS), valores únicos (unique), expressões na cláusula from, entre outras, foram incluídas neste padrão. 
Mas desde 1993, foi sendo desenvolvido um trabalho para atualizar o padrão SQL de modo que atendesse às características das últimas versões lançadas pelos bancos de dados comerciais. Como resultado, surgiu o padrão SQL:1999 (SQL3). Esta versão foi muito mais ambiciosa introduzindo novos tipos de dados, consultas recursivas, gatilhos e o conceito de orientação a objetos. 
Algumas implementações existentes no mercado adotam instruções SQL diferentes do
padrão, gerando extensões. Uma instrução SQL raramente pode ser transportada entre sistemas de banco de dados sem maiores modificações. Alguns acreditam que a incompatibilidade é intencional para que clientes dependam de um banco de dados específico,
Então, como garantir que as instruções SQL de uma aplicação funcionarão da mesma
forma se ocorrer migração de banco de dados? As instruções básicas não são críticas, mas as avançadas sim. Se esta garantia for desejada, é necessário seguir o padrão rigorosamente, o que pode comprometer facilidade e desempenho.
Os vendedores de bancos de dados criam extensões para melhorar o desempenho e tornar
mais fácil a manipulação dos dados. Eles se preocupam em: criar soluções rápidas para atender a demanda do mercado, tornar a implementação mais atrativa e ter vantagens com relação à concorrência.
Porém, atualmente, os vendedores estão mais preocupados com a padronização. As novas versões dos produtos já estão suportando grande parte dos recursos. Há também o inverso, soluções extremamente eficientes criadas pelos vendedores foram padronizadas (como por exemplo, o conceito de papéis).
3 - Álgebra Relacional
linguagem de consulta que consiste em um conjunto de operações, tendo como entrada uma ou duas relações e produzindo como resultado uma nova relação. Operações mais importantes:
 INSTITUTO BAIANO DE ENSINO SUPERIOR
 CURSO DE CIENCIAS DA COMPUTAÇÃO
Select
project 
Union
Namely
natural join
assignment
set difference
cartesian product
rename
set intersection
division
Operações primárias: operam sobre uma única relação: select, project, rename.
Operações binárias: operam sobre duas relações: union, set difference, cartesian product.
3.1.1 - Operação Seleção (SELECT)
Seleciona as tuplas que satisfaçam um determinado predicado. A letra sigma representa a seleção, o predicado aparece subscrito a sigma, e a relação utilizada é colocada entre parênteses.
Ex: σnome_agencia = “SAL-1”(conta) : seleciona as tuplas da relação conta cuja agência é igual a “SAL-1”.
O resultado da seleção é :
	nome_agencia
	numero_conta
	saldo
	SAL-1
	0001
	1200
	SAL-1
	0002
	3000
Podem ser usados comparações do tipo: =,≠,≥,>,≤,< e os conectivos: ∧ (e) ∨ (ou).
3.1.2 - Operação Projeção (PROJECT)
Denotada pela letra grega pi (π), esta operação retorna a relação com somente os atributos selecionados, eliminando as linhas em duplicidade. Os atributos aparecem ao lado de pi, subscrito, e a relação aparece entre parênteses.
Ex: πnome_agência,saldo(agencia)
	nome_agencia
	saldo
	NOH-1
	260050
	SAL-1
	455580
	POA-1
	1250369
	SAL-2
	125588
Juntando operações SELECT E PROJECT: podem-se unir operações desde que elas tratem de relações.
πnome_agencia,saldo(σnome_agencia = “SAL-1”(conta) ) 
	nome_agencia
	saldo
	SAL-1
	1200
	SAL-1
	3000
Conta 
	nome_agencia
	numero_conta
	saldo
	 SAL-1
	0001
	1200
	SAL-1
	0002
	2000
	 NOH-1
	0003
	4500
	POA-1
	0004
	4000
	POA-1
	0005
	1500
	NOH-1
	0006
	200
	SAL-2
	0007
	3750
	nome_agencia
	numero_conta
	saldo
	SAL-1
	0001
	1200
	SAL-1
	0002
	3000
 
3.1.3 - Operação União (UNION)
Considere a seguinte consulta: selecionar todos os nomes de clientes que tenham um empréstimo, uma conta ou ambos. Devem-se utilizar as relações “depositante” e “devedor”.
πnome_cliente(devedor) ∪ πnome_cliente(depositante)
Uma operação UNION entre duas relações “r” e “s” só é possível se:
As relações “r” e “s” têm o mesmo número de atributos;
Os domínios dos i-ésimo atributo de “r” e o i-ésimo atributo de “s”devem ser os mesmos para todo “i”.
3.1.4 - Operação Diferença entre conjuntos
Sendo “r” e “s” duas relações, “r-s” tem como resultado o conjunto de tuplas que estão na relação “r”, mas não se encontram na relação “s”.
Ex: selecionar todos os clientes que tem conta mas não tem empréstimo.
πnome_cliente(depositante) - πnome_cliente(devedor)
3.1.6 - Operação Produto Cartesiano
Permite combinar informações de duas relações quaisquer. Representado por “r x s”.
Ex: Qual o produto cartesiano entre as relações devedor e emprestimo.
(devedor)x(emprestimo) = (nome_cliente, num_emprestimo, nome_agencia, num_emprestimo, total)
Obs.: Para evitar o problema da duplicidade de nomes de atributos insere-se o nome da relação antes do atributo:
(nome_cliente, devedor.num_emprestimo, nome_agencia, emprestimo.num_emprestimo, 
total)
Quantas e quais tuplas aparecerão na relação (devedor x emprestimo) ?
Se a relação (devedor) possui “n” tuplas e a relação empréstimo tem “m” tuplas, então o produto cartesiano (devedor x empréstimo) tem n*m tuplas.
	nome_cliente
	devedor.num_emprestimo
	nome_agencia
	emprestimo.num_emprestimo
	total
	João
	E-001
	SAL-1
	E-001
	5420
	João
	E-001
	POA-1
	E-005
	25400
	João
	E-001
	NOH-1
	E-001
	40000
	Ana
	E-005
	SAL-1
	E-008
	5420
	Helena
	E-007
	POA-1
	E-005
	25400
	Andrea
	E-008
	NOH-1
	E-001
	40000
	Nilda
	E-009
	SAL-1
	E-008
	5420
Agora, deve-se encontrar todos os nomes de clientes que tenham um empréstimo na agência “SAL-1”, através da operação:
σnome_agência = “SAL-1”(devedor x emprestimo)
	nome_client
	devedor.num_emprestimo
	nome_agencia
	emprestimo.núm_emprestimo
	total
	João
	E-008
	SAL-1
	E-001
	40000
	Ana
	E-005
	SAL-1
	E-001
	40000
	Helena
	E-001
	SAL-1
	E-001
	40000
Obs: Como a operação produto cartesiano associa todas as tuplas de empréstimos a todas as tuplas de devedor, então existem empréstimos que estão relacionados erroneamente a alguns clientes. Para contornar este problema, devemos exigir que o atributo devedor.num_emprestimo seja igual ao atributo emprestimo.num_emprestimo.
Assim temos:
σdevedor.num_emprestimo = emprestimo.num_emprestimo (σnome_agência = “SAL-1” (devedor x empréstimo))
	nome_cliente
	devedor.num_emprestimo
	nome_agencia
	emprestimo.num_emprestimo
	total
	João
	E-001
	SAL-1
	E-001
	40000
πnome_cliente(σdevedor.num_emprestimo = emprestimo.num_emprestimo (σnome_agência = “SAL-1” (devedor x empréstimo)))
	nome_cliente
	João
3.1.5 - Operação Renomeação (Rename)
Representado pela letra grega rho (ρ), permite dar um nome a uma determinada expressão. Assim, a expressão em álgebra relacional E abaixo tem por resultado uma expressão sob o nome x.
ρx(E)
Ex: Desejamos o nome dos clientes que moram na mesma cidade de Francisco.
Primeiro, é necessário descobrir em qual cidade Francisco mora, fazendo uma seleção:
σnome_cliente = “Francisco”(cliente),
E depois uma projeção:
πcidade_cliente(σnome_cliente = “Francisco”(cliente))
Para encontrar os outros clientes, é necessário fazer uma varredura na relação cliente, comparando o atributo cidade_cliente com o atributo da relação obtida após a projeção anterior, ficando assim:
πnome_cliente(σcliente.cidade_cliente = cid_francisco.cidade_cliente
(cliente x ρcid_francisco(πcidade_cliente(σnome_cliente = “Francisco”(cliente)))))
3.2 - Outras Operações de Álgebra Relacional
As operações fundamentais da álgebra relacional são suficientes para expressar qualquer consulta de álgebra relacional. Entretanto, se nos retringirmos somente as operações fundamentais, certas consultas comuns serão extensas para expressar. Portanto, definimos as operações adicionais que não acrescetam qualquer capacidade a álgebra, mas simplificam consultas comuns.
3.2.1 - Operação de Interseção de conjuntos 
Captura todas as tuplas que encontram-se em uma relação “r”, e que também encontram-se na relação “s”.
Ex: Selecionar os nomes de clientes que possuem uma conta e um empréstimo.
πnome_cliente(devedor) ∩ πnome_cliente(depositante)
3.2.2 - Operação de Junção Natural
A junção natural ou natural join é uma operação binária que permite combinar seleções e um produto cartesiano em uma só operação.
Ex: encontrar todos os nomes de clientes que tenham um empréstimo no banco, bem como o total emprestado.
Utilizando apenas as operações fundamentais, poderia ser resolvido assim:
πnome_cliente, emprestimo.num_emprestimo, total(σdevedor.num_emprestimo = emprestimo.num_emprestimo (devedor x emprestimo))
No entanto, é possível simplificar esta operação utilizando o símbolo da junção natural: 
A junção natural forma um produto cartesiano das duas relações, e já executa uma seleção, fazendo a equivalência dos atributos que aparecem em ambos os esquemas da relação, e por último, remove os atributos em duplicidade.
πnome_cliente, num_emprestimo total(devedor∞ empréstimo)
	nome_cliente
	num_emprestimo
	total
	João
	E-001
	40000
	Ana
	E-005
	25400
	Helena
	E-008
	5420
3.2.3 - Operação de Divisão
A divisão de duas relações R ÷ S, onde os atributos de S estão contidos nos atributos de R, A(R) ⊆ A(S), resulta na relação T, onde A(T) = { A(R) – A(S) }, onde para cada tupla t que aparece no resultado, os valores de t devem aparecer em R, combinando com cada tupla de S. Esta operação é utilizada nas consultas em que se emprega a frase “para todos”;
4 - PRINCIPAIS COMANDOS
	
4.1 Comandos DDL 
4.1.2 - Comando: Create Table 
 
O comando CREATE TABLE permite criar e definir a estrutura de uma tabela(arquivo) definido as colunas (campos) e as chaves primárias e estrangeiras existentes. Sua sintaxe é:
CREATE TABLE nome-tabela 
(nome-coluna tipo-do-dado [NOT NULL] 
 [NOT NULL WITH DEFAULT] 
CONSTRAINT nome PRIMARY KEY (nome-coluna-chave) 
CONSTRAINT nome FOREIGN KEY (nome-coluna-chave-estrangeira) 
REFERENCES nome-tabela-pai(nome-coluna-pai)) 
ON DELETE [RESTRICT] [CASCADE] [SET NULL]
Onde: 
nome-tabela - Representa o nome da tabela que será criada. 
nome-coluna - Representa o nome da coluna que será criada. A definição das colunas de uma tabela é feita relacionando-as uma após a outra. 
tipo-do-dado - Define o tipo e tamanho dos campos definidos para a tabela. Os tipos de dados mais comuns são: 
Numéricos: (NUMBER) 
Smallint - Armazena valores numéricos, em dois bytes binários, compreendidos entre o intervalo -32768 a +32767. 
Integer - Armazena valores numéricos, em quatro bytes binários, compreendidos entre o intervalo -2147483648 a +2147483647 
Decimal(n,m) - Armazena valores numéricos com no máximo 15 dígitos. Nesta opção deve ser definida a quantidade de dígitos inteiros (n) e casas decimais (m) existentes no campo. 
 
Alfanuméricos: 
 Varchar (n) - Definir um campo alfanumérico de até n caracteres, onde n deve ser menor ou igual a 254 caracteres. 
Char (n) - Definir um campo alfanumérico de n caracteres, onde n deve ser menor ou igual a 254 caracteres. 
Long Varchar - Definir um campo alfanuméricos de comprimento maior que 254 caracteres.
Date - Definir um campo que irá armazenar datas.
Time - Definir um campo que irá armazenamento de horário.
NOT NULL - Exige o preenchimento do campo, ou seja, no momento da inclusão é obrigatório que possua um conteúdo. 
NOT NULL WITH DEFAULT - Preenche o campo com valores pre-definidos, de acordo com o tipo do campo, caso não seja especificado o seu conteúdo no momento da inclusão do registro. Os valores pre-definidos são:
Campos numéricos - Valor zero. 
Campos alfanuméricos - Caracter branco. 
Campo formato Date - Data corrente. 
Campo formato Time - Horário no momento da operação.
4.1.3 - Comando: Alter Table 
O comando ALTER TABLE permite alterar a estrutura de uma tabela(arquivo) acrescentando, 
alterando, retirando e alterando nomes, formatos das colunas e a integridade referencial definidas em uma 
determinada tabela. A sintaxe correta paraesse comando é: 
 
ALTER TABLE nome-tabela 
DROP nome-coluna 
ADD nome-coluna tipo-do-dado [NOT NULL] 
 [NOT NULL WITH DEFAULT] 
RENAME nome-coluna novo-nome-coluna 
RENAME TABLE novo-nome-tabela 
MODIFY nome-coluna tipo-do-dado [NULL][NOT NULL] 
 [NOT NULL WITH DEFAULT] 
ADD CONSTRAINT nome PRIMARY KEY nome-coluna 
DROP PRIMARY KEY nome-coluna 
ADD CONSTRAINT nome FOREIGN KEY (nome-coluna-chave-estrangeira) 
REFERENCES nome-tabela-pai (nome-campo-pai) 
ON DELETE [RESTRICT][CASCADE][SET NULL] 
DROP FOREIGN KEY (nome-coluna-chave-estrangeira) 
REFERENCES (nome-tabela-pai)
Onde: 
nome-tabela - Representa o nome da tabela que será atualizada. 
nome-coluna - Representa o nome da coluna que será criada. 
tipo-do-dado - Cláusula que define o tipo e tamanho dos campos definidos para a tabela. 
DROP nome-coluna - Realiza a retirada da coluna especificada na estrutura da tabela. 
ADD nome-coluna tipo-do-dado - Realiza a inclusão da coluna especificada na estrutura 
da tabela. Na coluna correspondente a este campo nos registros já existentes será preenchido o valor NULL (Nulo). As definições NOT NULL e NOT NULL WITH DEFAULT são semelhantes à do comando 
CREATE TABLE. 
RENAME nome-coluna novo-nome-coluna - Realiza a troca do nome da coluna 
especificada. 
RENAME TABLE novo-nome-tabela - Realiza a troca do nome da tabela especificada. 
MODIFY nome-coluna tipo-do-dado - Permite a alteração na característica da coluna 
especificada. 
ADD CONSTRAINT nome PRIMARY KEY nome-coluna - Esta opção é utilizada quando é 
acrescido um novo campo como chave primária da tabela. 
DROP PRIMARY KEY nome-coluna - Esta opção é utilizada quando é retirado um campo 
como chave primária da tabela. 
ADD CONSTRAINT nome FOREIGN KEY nome-coluna - Esta opção é utilizada quando é 
acrescido um novo campo sendo ele uma chave estrangeira. 
DROP FOREIGN KEY nome-coluna - Esta opção é utilizada quando é retirada uma chave 
estrangeira da estrutura da tabela.
4.1.4 - Comando: Drop Table 
O comando DROP TABLE permite excluir a estrutura e os dados existentes em uma tabela. Após a execução deste comando estarão deletados todos dados, estrutura e índices de acessos que estejam a ela associados. A sintaxe correta para esse comando é: 
 
onde: 
 
DROP TABLE nome-tabela
a) nome-tabela - Representa o nome da tabela que será deletada. 
 
4.1.5 - Comando: Create Index
 
O comando CREATE INDEX permite criar uma estrutura de índice de acesso para uma determinada coluna em uma tabela. Um índice de acesso permite um acesso mais rápido aos dados em uma operação de seleção. Os índices podem ser criados a partir de um ou mais campos de uma tabela. A sintaxe para a execução desse comando é: 
 
CREATE [UNIQUE] INDEX nome-índice 
ON nome-tabela (nome-coluna[ASC], 
[nome-coluna [ASC ] ]) [DESC] [DESC]
onde: 
nome-índice - Representa o nome da estrutura de índice que será criada. 
nome-tabela - Representa o nome da tabela que contem a coluna na qual será criada o índice de acesso. 
nome-coluna - Representa o nome da coluna que será criada. 
Opção ASC/DESC - Representa a criação do índice ordenada crescentemente (ASC) ou decrescentemente (DESC). 
CREATE [UNIQUE] INDEX nome-índice 
ON nome-tabela (nome-coluna[ASC], 
[nome-coluna [ASC ] ]) [DESC] [DESC]
4.1.6 - Comando: Drop Index 
Este comando exclui uma estrutura de índice de acesso para uma determinada coluna em uma tabela. A sintaxe correta para esse comando é: 
 
DROP INDEX nome-índice
onde: 
a) nome-índice - Representa o nome da estrutura de índice que será deletada. 
 
4.2 - Comandos DML 
4.2.1 - Instrução INSERT INTO 
Este comando permite adicionar um ou vários registros a uma tabela do Banco de Dados. A sintaxe para a execução é:
INSERT INTO nome-tabela [(nome-coluna, ...)] 
 VALUES (relação dos valores a serem incluídos)
onde: 
nome-tabela - Representa o nome da tabela onde será incluída o registro. 
nome-coluna - Representa o nome da(s) coluna(s) terão conteúdo no momento da operação de inclusão. 
Relação dos valores:- Representa os valores a serem incluídos na tabela. 
 
Obs.: Este comando pode ser executado de duas maneiras: 
Quando todos os campos da tabela terão conteúdo - Neste caso não é necessário especificar as colunas, entretanto a relação dos valores a serem incluídos deverão obedecer a mesma seqüência da definição da tabela. Por exemplo:
INSERT INTO Alunos 
VALUES (2, "Andre", "303569871", "R. Jaboticaba 37", 
27/03/1978, "14-5223778"); 
 
Quando apenas parte dos campos da tabela terão conteúdo - Neste caso devem ser especificadas todas as colunas que terão conteúdo e os valores relacionados deverão obedecer esta seqüência. Para os campos que não tem conteúdo especificado será preenchido o valor NULL, como mostra o exemplo abaixo: 
 
INSERT INTO Alunos (ra, nome, rg, endereco) 
VALUES (1, "Anderson", "2722589-1", "R. Vendaval, 75”); 
INSERT INTO Alunos ( ra, nome, rg, endereco, data_nascimento, 
telefone )SELECT ra, nome, rg, endereco, data_nascimento, fone; 
Instrução UPDATE 
Objetivo: 
 Esse comando permite atualizar os dados de um ou um grupo de registros em uma tabela do 
Banco de Dados. Sua sintaxe é: 
UPDATE nome-tabela 
SET <nome-coluna = <novo conteúdo para o campo> 
 [nome-coluna = <novo conteúdo para o campo>] 
WHERE condição
Comentários 
UPDATE é especialmente útil quando se quer alterar muitos registros ou quando os registros que se quer alterar estão em várias tabelas. É possível alterar vários campos ao mesmo tempo. O exemplo abaixo altera o professor da disciplina de S.O. no período noturno, atribuindo a disciplina um novo Professor. 
 
 UPDATE Leciona SET cod_pro = 3 WHERE cod_dis = 2 OR cod_dis = 7; 
 
UPDATE não gera um conjunto de resultados. Se você quiser saber quais resultados serão alterados, examine primeiro os resultados da consulta seleção que use os mesmos critérios e então execute a consulta atualização. 
4.2.2 - Instrução Delete 
Essa instrução permite remover (deletar) um ou um grupo de registros em uma tabela do Banco de 
Dados. Sintaxe: 
 
DELETE * FROM nome-tabela WHERE condição
 
onde: 
nome-tabela - Representa o nome da tabela cujos registros serão deletados. 
condição - Representa a condição para a deleção dos registros. Este seleção poderá resultar em um ou vários registros. Neste caso a operação irá ocorrer em todos os registros selecionados. 
Comentários 
DELETE é especialmente útil quando se quer excluir muitos registros. Para eliminar uma tabelainteira do banco de dados. 
Pode-se usar DELETE para remover registros de tabelas que estão em uma relação um por várioscom outras tabelas. Operações de exclusão em cascata fazem com que os registros das tabelas que estão no lado "vários" da relação sejam excluídos quando os registros correspondentes do lado "um" da relação são excluídos na consulta. Por exemplo, nas relações entre as tabelas Clientes e Pedidos, a tabela Clientes está do lado "um" e a tabela Pedidos está no lado "vários" da relação. Excluir um registro em Clientes faz com que os registros correspondentes em Pedidos sejam excluídos se a opção de exclusão em cascata for especificada. 
Uma consulta de exclusão exclui registros inteiros e não apenas dados em campos específicos. Se quiser excluir valores de um campo específico, crie uma consulta atualização que mude os valores para Null. 
 
Importante 
Após remover os registros usando uma consulta exclusão, não será possível desfazer a operação.
Se quiser saber quais arquivos foram excluídos, primeiro examine os resultados de uma consulta seleção que use o mesmo critério e então, execute a consulta exclusão. Mantenha os backups de seus dados. Se você excluir os registros errados, poderá recuperá-los a partir dos seus backups. 
 
Exemplo de instrução DELETE 
 
Esse exemplo exclui todos os registros de Professores cujo código seja 1.
DELETE * FROM ProfessoresWHERE codigo=1; 
 
Se fosse necessário passar um parâmetro para o delete a estrutura seria assim 
DELETE * FROM Professores 
WHERE Professores.nome=[nome professor]; 
 
4.2.3 - Instrução Select 
A instrução SELECT é a mais poderosa da linguagem SQL. Ela permite selecionar um conjunto de registros em uma ou mais tabelas que atenda a uma determinada condição definida pelo comando. Sua sintaxe é:
SELECT ALL FROM nome-tabela [AS APELIDO] [,nome-tabela] 
 DISTINCT 
 WHERE condição 
 GROUP BY nome-coluna 
 HAVING condição 
 ORDER BY nome-campo ASC DESC
onde: 
nome-tabela - Representa o nome da(s) tabela(s) que contem as colunas que serão selecionadas ou que serão utilizadas para a execução da consulta. 
Apelido: Os nomes que serão usados como títulos de colunas em vez dos nomes originais das colunas na tabela.
condição - Representa a condição para a seleção dos registros. Este seleção poderá resultar em um ou vários registros. 
nome-coluna - Representa a(s) coluna(s) cujos resultados são grupados para atender à consulta. 
ALL (*) - Opção default. Mostra todos os valores obtidos na seleção. 
DISTINCT - Opção que mostra os valores obtidos na seleção eliminando as duplicidades. 
WHERE - Especifica o critério de seleção dos registros nas tabelas especificadas. 
GROUP BY - Especifica o(s) campo(s) que serão grupados para atender a consulta. 
HAVING - Especifica uma condição para seleção de um grupo de dados. Esta opção só é utilizada combinada com a opção GROUP BY. 
ORDER BY - Esta opção quando utilizada apresenta o resultado da consulta ordenado de forma crescente ou decrescente pelos campos definidos. 
4.2.4 - A Clausula WHERE 
Freqüentemente é necessário localizar registros em um banco de dados que satisfaçam certos critérios de seleção. O SQL utiliza a clausula WHERE para especificar os critérios de seleção para a consulta. O formato mais simples para uma consulta com critérios é:
SELECT * FROM nome-tabela WHERE condição; 
 
SELECT * FROM Alunos WHERE ano_nascimento < 1984;
A condição da cláusula WHERE pode conter os operadores <, >, <=, >=, <> e LIKE. O operador LIKE é utilizado para coincidência de padrão, o que permite a busca de valores semelhantes ao digitado utilizando os caracteres curinga (* e ?). O asterisco indica qualquer número de caracteres em seqüência na posição do asterisco dentro do padrão. Já a interrogação indica um único caracter na posição. Por
exemplo, em uma tabela que temos os alunos Anderson, Andre e Manoel. 
 
 SELECT * FROM Alunos WHERE nome LIKE “?n*”;
No SELECT acima o retorno será Anderson e Andre, uma vez que buscamos apenas os valores iniciados por qualquer letra, tendo a segunda letra um “n” e finalizado por qualquer sequência. 
 
SELECT * FROM Alunos WHERE nome LIKE “*n*”; 
 
Nesse SELECT procuramos qualquer aluno que tenha a letra “n” em seu nome, no caso Anderson, Andre e Manoel.
 5. CARACTERÍSTICAS
A ideia original da SQL só previa seu uso de forma interativa. Após sofrer acréscimos, ela passou também a ter capacidade de ser utilizada em linguagens hospedeiras, tais como: COBOL, FORTRAN, “C”, etc. atualmente, a linguagem SQL assume um papel muito importante nos sistemas de gerenciamento de banco de dados, podendo ter muitos enfoques, algumas características são listadas abaixo:
Linguagem interativa de consulta (query AdHoc) – por meio de comandos SQL, os usuários podem montar consultas poderosas sem a necessidade da criação de um programa, podendo utilizar Forms ou ferramentas de montagem de relatório;
Linguagem de programação para acesso a banco de dados – comandos SQL embutidos em programas de aplicação que acessam os dados armazenados;
Linguagem de administração de banco de dados – o responsável pela administração do banco de dados (DBA) pode utilizar comandos SQL para realizar suas tarefas;
Linguagem cliente/servidor – os programas (cliente) dos computadores pessoais usam comandos SQL para se comunicarem por meio de uma rede local, compartilhando os dados armazenados em um único local (servidor). A arquitetura cliente/servidor minimiza o trafego de dados pela rede;
Linguagem para banco de dados distribuído – a SQL auxilia na distribuição dos dados por meio de vários nós conectados ao sistema de computação. Auxilia também na comunicação de dados com outros sistemas;
Caminho de acesso a outros bancos de dados em diferentes máquinas – a SQL auxilia na conversão entre diferentes produtos de banco de dados colocados em diferentes máquinas (de micro até mainframe).
6. BIBLIOGRAFIA
 
MACHADO, Felipe, ABREU, Mauricio; Projeto de Banco de Dados – Uma Visão Prática. 12 ed. : Érica, 2005. 
 
DATE, C. J.; Introdução a Sistemas de Banco de Dados. 7 ed. Rio de Janeiro: Campus, 2000. 
 
ELMASRI, Ramez, NAVATHE, S. B.; Sistemas de banco de dados. São Paulo : Pearson Addison Wesley, 2011. 
 
SILBERSCHATZ, Abraham; Sistema de banco de dados. 5 ed. Rio de Janeiro : Elsevier, 2006.

Outros materiais