Você está na página 1de 31

Linguagem de base de dados SQL

• O DBMS relacional mais comummente usados para consulta e modificar o banco


de dados é
• através de uma linguagem chamada SQL (por vezes pronunciada“sequel 6”). SQL
significa
• “Structured Query Language.” A porção de SQL que suporta consultas
• tem capacidades muito próximos ao de álgebra relacional, tal como prorrogado
na Seção
• 5.2. No entanto, SQL também inclui instruções para modificar o banco de dados
• (Por exemplo, a inserção e a exclusão de tuplas a partir de relações) e para a
declaração de um esquema de banco de dados
• Assim, o SQL serve como uma linguagem de manipulação de dados e como de
definição. SQL também padroniza muitos outros comandos de banco de dados,
• coberto nos capítulos 7 e 9.
Cont…
• Há muitos dialectos diferentes de SQL. Em primeiro lugar, existem três principais padrões.
• Há ANSI (American National Standards Institute) SQL e um padrão actualizado adoptado em 1992,
chamado de SQL-92 ou SQL2. O mais recenteSQL-99 (anteriormente referido como SQL3) padrão
estende SQL2 com objectrelationalcaracterísticas e uma série de outros novos recursos. Há também
uma coleção de extensões para SQL-99, chamados coletivamente de SQL: 2003.
• Então, há são versões do SQL produzidas pelos principais fornecedores de DBMS. Estes incluem todos
as capacidades do padrão ANSI originais. Eles também estão em conformidade com um grande medida
ao SQL2 mais recente, embora cada um tem suas variações e extensões além SQL2, incluindo alguns,
mas não todos, os recursos do SQL-99 e SQL: padrões 2003.
• Este capítulo introduz os conceitos básicos de SQL: a linguagem de consulta e de banco de dados
instruções de modificação. Também introduzimos a noção de um“transação,” a unidade básica de
trabalho para sistemas de banco de dados. Este estudo, embora Simplificado, vontade dar-lhe uma
sensação de como as operações de banco de dados pode interagir e alguns dos resultante armadilhas.
Consultas simples em SQL

• Talvez a forma mais simples de consulta no SQL


pede para aquelas tuplas de alguma relação que
satisfazem uma condição. Tal consulta é análoga
a uma selecção em álgebra relacional. Esta
consulta simples, como quase todas as consultas
SQL, usa a três palavras-chave,SELECT FROM, e
WHERE que caracterizam SQL.
• Filmes (título, ano, duração, gênero, studioName,
producerC #)
• StarsIn (MovieTitle, movieYear, starName)
• MovieStar (nome, endereço, sexo, data de
nascimento)
• MovieExec (nome, endereço, cert #, networth)
• Studio (nome, endereço, Presc #)
Cont…
• Nos exemplos prosteriores, vamos usar o banco de dados de filme Para
referência, estes esquemas de relação.
• Como a nossa primeira consulta, vamos perguntar sobre a relação
• Filmes (título, ano, duração, gênero, studioName, producerC #)
• para todos os filmes produzidos pela Disney Studios em 1990. Em SQL, dizemos
• SELECT *
• FROM filmes
• WHERE studioName = 'Disney e ano = 1990;
• Esta consulta exibe a característica select-from-where forma de mais
SQLconsultas
Cont….
• A cláusula FROM dá a relação ou relações para que a consulta se refere.
• No nosso exemplo, a consulta é sobre a relação Filmes.
• • A cláusula WHERE é uma condição, assim como uma seleção-
condição na relacional álgebra.
• Tuples deve satisfazer a condição, a fim de coincidir com o
• inquerir. Aqui, a condição é que o atributo studioName da tupla
• tem o valor'Disney' e o atributo de ano do tuple tem o valor 1990.
• Todos os tuplos reunião, ambas as estipulações satisfazer a condição;
de outras tuplas não.
Cont…
• • A cláusula SELECT diz que os atributos dos tuplos correspondentes a condição são produzidos
como parte da resposta.
• A * neste exemplo indica que todo o tuplo é produzido. O resultado da consulta é a relação que
consiste de todos os tuplos produzidos por este processo.
• Uma maneira de interpretar esta consulta é considerar cada tupla da relação mencionado na
cláusula FROM.
• A condição na cláusula WHERE é aplicada a tupla. Mais precisamente, todos os atributos
mencionados na cláusula WHERE são substituído pelo valor na tupla‘ componente s para esse
atributo.
• A condição é então avaliado, e se for verdade, os componentes que aparecem na cláusula
SELECT são produzidos como um tuplo da resposta.
• Assim, o resultado da consulta é os filmes tuplas para os filmes produzidos pela Disney em1990
• título | ano \ comprimento \ gênero \
studioName \ producerC #
• Pretty Woman | 1990 | 119 | romance |
Disney | 999
Consultas que envolvam mais de uma relação

• Muito do poder da álgebra relacional vem de sua capacidade de


combinar duas ou mais relações através de juntar, produtos,
uniões, interseções e diferenças.
• Recebemos todas essas operações no SQL. As operações de
conjunto da teoria- União, interseção e diferença- aparecem
diretamente no SQL, como iremos aprender na
• Em primeiro lugar, vamos aprender como o select-from-where
declaração de SQL nos permite realizar produtos e se junta.
Produtos e junta-se em SQL

• SQL tem uma maneira simples de relações


casal em uma consulta:
• Listar cada relação na cláusula FROM. Em
seguida, o SELECT e WHERE pode consultar os
atributos do qualquer das relações na cláusula
FROM. 
exemplo
• Suponha que nós • Filmes (título, ano,
queremos saber o nome duração, gênero,
do produtor de StarWars. studioName, producerC
Para responder a esta #)
questão precisamos das • MovieExec (nome,
duas relações seguintes
endereço, cert #,
do nosso correndo
networth)
exemplo:
Cont…
• O número do certificado produtor é dado na relação Filmes, para que possamos fazer
uma consulta simples em filmes para obter este número.
• Poderíamos, então, fazer uma segunda consulta sobre a relação MovieExec para
encontrar o nome da pessoa com esse certificado número.
• No entanto, podemos fazer ambos estes passos como uma consulta sobre o par de
• relações Filmes e MovieExec como segue:
• SELECT nome
• FROM filmes, MovieExec
• WHERE title = 'Star Weirs' E producerC # = cert #;
• Esta consulta nos pede para considerar todos os pares de tuplas, um de Filmes e outros
de MovieExec. As condições deste par estão demonstrados na cláusula WHERE
• 1. O componente título da tupla de Filmes deve ter
valor ‘StarWar' .
• 2. O producerC # atributo da tupla Filmes deve ser
o mesmo certificado número como a cert#
atributo no tuplo MovieExec.
• Isso é, estas duas tuplas devem se referir ao
mesmo produtor.
• Às vezes pedimos uma consulta que envolve várias
relações, e entre estas relações dois ou mais atributos com
o mesmo nome. Se assim for, precisamos de uma maneira
para indicar qual desses atributos que significa um uso de
seu nome compartilhado.
• Resolve SQL este problema, permitindo-nos para colocar
um nome da relação e um ponto na frente de um atributo.
• Portanto RA refere-se ao atributo UMA da relação R.
EX….
• MovieStar (nome, endereço, sexo, data de
nascimento)
• MovieExec (nome, endereço, cert #, networth)
• cada um tem atributos nome e endereço. Suponha
que deseja encontrar pares consistindo
• de uma STAR e um executivo com o mesmo
endereço. A consulta a seguir faz o emprego.
Cont…
• SELECT MovieStar.name, MovieExec.name
• FROM MovieStar, MovieExec
• WHERE MovieStar.address = MovieExec.address;
• Nesta consulta, nós olhamos para um par de tuplas, um de STAR de cinema e o
outro de MovieExec,de tal forma que seus componentes de endereço concordar. A
cláusula WHERE
• impõe a exigência de que oendereço atributos de cada um dos dois tuplos
concordar.
• Então, para cada par correspondente de tuplas, extraímos os doisnome atributos, a
partir do primeiro Star de cinema tupla e, em seguida, a partir do outro. O
resultado seria um conjunto de pares, como.
MovieStar. Name| MovieExec. name
Jane Fonda Ted Turner
Subqueries

• Em SQL, uma consulta pode ser usado de várias maneiras para


ajudar na avaliação deoutro.
• Uma consulta que é parte de outro é chamado
desubconsulta.subqueries pode têm subconsultas, e assim por
diante, para baixo tantos níveis como nós desejamos.
• Nós já vimos um exemplo do uso de subconsultas; na Seção 6.2.5
nós construímos uma união, interseção, ou consulta diferença
conectando dois subconsultas para formar toda a consulta.
• Láuma série de outras maneiras que subqueries podem ser usados:
Subconsulta
• . Subqueries pode retornar uma única constante, e este
pode ser comparado constante
• por outro valor em uma cláusula WHERE.
• 2. Subqueries pode retornar relações que podem ser
usados ​de várias maneiras em cláusulas WHERE.
• 3. Subqueries pode aparecer em DE cláusulas, seguido por
uma variável que tupla representa as tuplas no resultado
da subconsulta. 
Operações de Relação completa

• Nesta seção vamos estudar algumas operações que atuam sobre as


relações como um todo, em vez de tuplas individualmente ou em
pequenos números (como fazem junta de várias relações, por exemplo).
• Primeiro, lidamos com o fato de que o SQL usa relações que são sacos em
vez de conjuntos, e uma tupla pode aparecer mais de uma vez em uma
relação.
• Veremos como forçar o resultado de uma operação para ser um jogo na
Seção 6.4.1, e na Seção 6.4.2, veremos que também é possível para evitar
a eliminação de duplicatas em circunstâncias onde os sistemas de SQL
normalmente eliminam eles.
• Então, discutimos como SQL suporta o operador de
agrupamento e agregação 7 que foi introduzida na Seção
5.2.4.
• SQL tem operadores de agregação eUm GROUP-BY
cláusula.
• Há também um"TENDO" cláusula que permite a seleção
de certos grupos de uma forma que depende do grupo
como um todo, em vez de tuplas individuais.
Modificacao de Banco de dados

• Até este ponto, temos focado no formulário de consulta SQL normal: o select-
from where declaração.
• Há uma série de outras formas de instrução que não fazer retornar um
resultado, mas sim alterar o estado do banco de dados.
• Nesta seção, deve se concentrar em três tipos de declarações que nos permitem
• 1. Insira tuplas em uma relação.
• 2. Eliminar certos tuplas de uma relação.
• 3. Valores de actualização de determinados componentes de certos tuplas
existentes.
• Referimo-nos a esses três tipos de operações coletivamente como modificações
Inserção

• A forma básica de declaração de inserção é:


• INSIRA DENTRO DE R (A 1,. . . ,A) VALUES (ui,. . . ,vn);
• Uma tupla é criado usando o valor para o atributo Ai, para * = 1, 2 ,, .., n.
E se a lista de atributos não inclui todos os atributos da relaçãoR, então o
• tuple criado tem valores padrão para todos os atributos ausentes.
• E x am p le 6.35: Suponha que deseja adicionar Sydney Greenstreet à
lista de estrelas deO Falcão Maltês. Nós dizemos:
• 1) INSERIDA EM Starsln (MovieTitle, movieYear, starName)
• 2) VALUES ( 'The Maltese Falcon', 1942, 'Sydney Greenstreet');
• O efeito de executar essa instrução é que uma tupla com os três componentes na linha (2) é
inserida na relação S ta rs ln. Desde todos os atributos de Star ln são mencionados na linha (1),
não há necessidade de adicionar componentes padrão.
• Ovalores na linha (2) São combinados com os atributos na linha (1) Na ordem dada, assim'O H
altese F n alco ' torna-se o valor do componente para o atributo movieT itle, e assim por diante.
• Se, como no Exemplo 6.35, que fornecem os valores para todos os atributos da relação, então
podemos omitir a lista de atributos que segue o nome da relação. Isso é, podemos apenas
dizer:
• INSERT INTO Starsln
• VALUES ( 'The Maltese Falcon', 1942, 'Sydney Greenstreet');
• No entanto, se tomarmos essa opção, é preciso ter certeza de que a ordem dos valores é a
mesma que a ordem padrão de atributos para a relação.
Eliminação

• A forma de uma deleção é


• DELETE FROM R WHERE <condição>;
• Podemos excluir da relação
• S ta rsln (mov ou seja, T itle, movieYear, starName) o fato de que Sydney
Greenstreet era uma estrela emO Falcão Maltês pelo SQL declaração:
• DELETE FROM S ta rs ln
• Em que M = ovieT itle 'O H altese F n alco ' E
• movieYear = 1942 e
• starName ='Sydney L re ens tre et' ; 
Atualizações

• Embora possamos pensar em ambas as inserções e deleções de tuplas como


“atualizações” ao banco de dados, umatualizar em SQL é um tipo muito específico de
alteração ao banco de dados:
• Uma ou mais tuplas que já existem no banco de dados tem alguns dos
• seus componentes alterados. A forma geral de uma instrução de atualização é:
• ATUALIZAR R Set <novo valor atribuições> WHERE <condição>;
• Cada atribuição novo valor é um atributo, um sinal de igual, e uma expressão.
• Se houver mais de uma atribuição, eles são separados por vírgulas.
• O efeito desta declaração é encontrar todas as tuplas emR que satisfazem a condição.
• Cadadestes tuplos é então alterado por tendo as expressões nas atribuições avaliada e
atribuído aos componentes do tuplo para o correspondente atributos deR.
• MovieExec (nome, ad d ress, ce rt #, networth)
• anexando o título P, na frente do nome de cada
executivo de cinema que é o presidente de um estúdio.
A condição dos tuplos desejados satisfazer é que os
números dos certificados aparecem no componente
Presc # de alguma tupla na relação Studio.
• Expressamos esta atualização como:
Cont…
• 1) ACTUALIZAÇÃO MovieExec
• 2) Razão = SET 'P re s.' nome II
• 3) ONDE ce ta # IN (SELECT PRESC # DE S tu d io);
• Linha (3) testa se o número do certificado da tupla MovieExec é um daqueles que
aparecem como um presidente's número do certificado em Studio.
• Line (2) executa a atualização sobre os tuplos selecionados. Lembre-se que o operador
II denota concatenação de strings, então a expressão seguinte o sinal = no
• A linha (2) coloca os caracteres P re s. e um espaço em branco em frente ao antigo
valor da nome do componente desta tupla. A nova cadeia torna-se o valor do nome
componente deste tupla; o efeito é que' res p. ' foi anexado ao valor antigo do nome.
Transações em SQL

• Até este ponto, o nosso modelo de operações no banco de dados tem sido a
de um utilizador consultar ou modificando a base de dados.
• Assim, as operações no banco de dados são executados um de cada vez, eo
estado de banco de dados deixado por uma operação é o estado sobre a
qual a próxima operação atua.
• Além disso, nós imaginamos que as operações sejamrealizada em sua
totalidade (“atomicamente”).
• Ou seja, assumimos que é impossível para o hardware ou software a falhar
no meio de uma modificação, deixando o banco de dados em um estado que
não pode ser explicado como o resultado das operações realizada sobre ele.
• A vida real é muitas vezes consideravelmente mais
complicado.
• Vamos primeiro considerar opode acontecer de deixar
o banco de dados em um estado que doesn't refletem
as operações realizada sobre ele, e, em seguida,
vamos considerar o SQL ferramentas dá ao usuário
assegurar que estes problemas não ocorrem.

Você também pode gostar