• Nenhum resultado encontrado

SQL. Structured Query Language

N/A
N/A
Protected

Academic year: 2021

Share "SQL. Structured Query Language"

Copied!
82
0
0

Texto

(1)

SQL

(2)

Construções básicas



Junção de Tabelas Join

O uso da operação JOIN numa cláusula FROM especifica como se deseja que as tabelas sejam vinculadas.

Use INNER JOIN para associar somente os tuplas coincidentes de ambas as tabelas.

 O OUTER JOIN liga as linhas de tabelas, mas não

necessariamente precisam casar entre si. Desta forma, mesmo as linhas que não se encontrou referência no cruzamento das tabelas aparecerá no Resultado de Dados. Existem tipos de OUTER JOIN:

(3)

Construções básicas

 LEFT JOIN usado para associar todas as

tuplas da primeira tabela com apenas as

coincidentes na segunda tabela. O SQL retorna com valor nulo para as tuplas que não

coincidem na segunda tabela.

 RIGHT JOIN usado para associar todas as

tuplas da segunda tabela com apenas as coincidentes na primeira tabela

(4)

Construções básicas

SELECT Nome_Tabela.nome_campo

FROM Tabela1 LEFT OUTER JOIN Tabela2 ON Tabela1.chave_primaria =

Tabela2.chave_estrangeira

SELECT Nome_Tabela.nome_campo

FROM Tabela1 RIGHT OUTER JOIN Tabela2 ON Tabela1.chave_primaria =

(5)

Construções básicas

SELECT nome_da_tabela1.nome_do_campo, nome_da_tabela2.nome_do_campo FROM nome_da_tabela1 inner join

nome_da_tabela2 on

nome_da_tabela1.nome_da_chaveprimaria1= nome_da_tabela2.nome_da_chave_estrangeira

(6)

Conversão de dados

 A função CONVERT permite converter

um tipo de dado para outro. A sua forma geral de uso é

:

CONVERT(tipo_de_dados, valor)

SELECT convert(char(10), pri_nome) + ' '+ convert(char(10), sobrenome)

(7)

Casamento de padrões

 O operador LIKE [como] faz casamento de

padrões. Um padrão é uma string contendo

caracteres que podem ser combinados com parte de outra string.

 O caractere % em um padrão representa qualquer

caracter. Por exemplo, para obter todos os autores cujo (primeiro) nome começa com A, use:

SELECT prinome, sobrenome FROM clientes

(8)

Casamento de padrões

(cont.)

 Para obter todos os nomes que contém

as letras 'en' no meio (ou no início ou no fim), use:

SELECT prinome, sobrenome FROM clientes

(9)
(10)

Casamento de padrões

(cont.)

 Outro caractere para usar em padrões é o

sublinhado (_). Ele combina com um único caractere. Por exemplo, se nos seus dados

existem pessoas com nome 'Sousa' ou 'Souza', você pode usar: LIKE '%sou_a%'.

 Também é possível usar os colchetes para

combinar com uma determinada faixa de

caracteres. Por exemplo, LIKE '[CK]%' encontra os nomes que iniciam com C ou K e LIKE

'[A-E]%' os que começam com as letras de A até E. Já LIKE '[^V]%' encontra os nomes que não

(11)
(12)
(13)
(14)
(15)

Casamento de padrões

(cont.)

 Note que as comparações feitas com

LIKE

dependem da ordem de

classificação [sort order] escolhida

durante a instalação do SQL Server. Se foi usada a ordem "accent-insensitive", como foi recomendado, ele consegue procurar ignorando acentos. Por

exemplo,

LIKE

‘guimaraes' vai encontrar também ' Guimarães '.

(16)
(17)

Alias



Para simplificar a qualificação de colunas,

pode-se usar um apelido [alias] de tabela,

um nome colocado imediatamente após o

nome da tabela.

SELECT c.cadger_nome AS NomePessoa, p.NumProntuario AS [Nº Prontuario]

FROM Cadastro_Pessoa c

INNER JOIN CadPessoaProntUnico p ON c.cadger_codender = p.CodPessoa

WHERE (c.cadger_nome LIKE N'%GUIMARAES%') ORDER BY c.cadger_nome

(18)
(19)

Sem Alias

SELECT Cadastro_Pessoa.cadger_nome,

CadPessoaProntUnico.NumProntuario FROM Cadastro_Pessoa

INNER JOIN CadPessoaProntUnico ON

Cadastro_Pessoa.cadger_codender = CadPessoaProntUnico.CodPessoa

WHERE (Cadastro_Pessoa.cadger_nome LIKE N'%GUIMARAES%')

(20)
(21)

Alias

(cont.)

 Note que os aliases podem ser usados

na lista do SELECT ou nas condições de junção (ou em outros lugares, como

(22)

Integridade Declarativa de

Dados

 Integridade de dados é a maneira de

dizer que os dados que estão na sua base são confiáveis.

 Existem dois tipos de implementar

integridade de dados no SQL Server: declarativa e procedural.

 Declarativa diz respeito ao uso das

constraints e das rules. Procedural diz respeito ao uso de Stored Procedures e Triggers.

(23)

Constraint



Uma

restrição

[constraint] é uma

propriedade de uma coluna usada para

reforçar a integridade de dados.

(24)

Constraint

 DEFAULT

 Serve para indicar um valor padrão para um

campo, quando o mesmo não for

especificado. Exemplo: se a tabela TESTE possui três campos, COD, NOME e UF, e para o campo UF existe uma constraint

DEFAULT de valor SP criada, ao inserirmos dados nesta tabela podemos somente

fornecer o conteúdo do campo COD e

NOME, pois o conteúdo do campo UF será automaticamente preenchido com o valor definido na constraint DEFAULT.

(25)

Constraint DEFAULT

 Não podemos criar constraints em

campos com o tipo de dados

rowversion e campos que possuem uma propriedade IDENTITY definida.

(26)

Constraints

(cont.)

 CHECK

 CHECK constraints reforça a integridade do

domínio através da limitação de valores aceitos por essa coluna. São similares às chaves

estrangeiras (FOREIGN KEY), que controlam os valores aceitos para uma coluna. A diferença está na forma como esses valores são validados.

 FOREIGN KEY constraints obtém a lista de valores

possíveis em outra tabela enquanto o CHECK

constraints determina os valores válidos por uma expressão lógica que não está baseada em

(27)

Constraint

CHECK

 Por exemplo: é possível limitar a faixa salarial da

coluna salario através da criação de uma CHECK constraint, estipulando intervalos de 500 a

10000. Isso evita que salários sejam entrados fora dessa faixa salarial.

 Podemos criar uma CHECK constraint com

qualquer expressão lógica (Boolean) que retorna TRUE ou FALSE baseada em operadores lógicos (=; >=;<=). O CHECK para o exemplo anterior é a expressão lógica

(28)
(29)

Constraints

(cont.)

 PRIMARY KEY

 Esta constraint serve para definirmos um ou

mais campos como chaves primárias. Uma chave primária é o atributo de um ou mais campos que identifica unicamente um

registro em uma tabela. Podemos criar

somente uma constraint PRIMARY KEY por tabela e não podemos colocar o valor NULL nos campos que compõem a chave

(30)

Constraint PRIMARY KEY

 Quando esta constraint é criada na

tabela, um índice também é

automaticamente criado sobre as colunas que fazem parte da chave primária.

(31)
(32)

Constraints

(cont.)

 UNIQUE

 Esta constraint faz a validação de valores

únicos em uma ou mais colunas de uma

tabela. Se um campo estiver definido com a constraint UNIQUE nenhum valor repetido poderá ser fornecido para esta campo.

Podemos colocar várias constraints UNIQUE por tabela mas para cada campo que tem uma constraint UNIQUE podemos somente inserir o valor NULL uma vez.

(33)
(34)

Constraint UNIQUE

 Quando esta constraint é criada

na tabela, um índice também é automaticamente criado sobre a coluna sobre a qual a constraint está definida.

(35)

Constraints

(cont.)

 FOREIGN KEY

 Esta constraint é utilizada para

implementar o conceito de chave

estrangeira e serve para indicar que o conteúdo de um campo deve se

referenciar a um outro campo que se encontra em outra tabela que seja

(36)

Constraint FOREIGN KEY

 Quando o campo que está sendo

referenciado residir na mesma tabela, não precisamos utilizar a palavra-chave FOREIGN KEY, podendo somente utilizar REFERENCES. Esta constraint também pode ser desabilitada, para o caso de

uma grande inserção de dados na tabela Podemos programar eventos em cascata utilizando as cláusulas ON DELETE e ON UPDADE.

(37)
(38)

Ferramentas de

Administração

(39)

Ferramentas

 O SQL Server vem com várias ferramentas de

administração:

 Enterprise Manager: gerencia vários servidores,

permitindo executar qualquer tarefa relacionada ao SQL Server, ele roda dentro MMC (Microsoft

Management Console).

 Service Manager(SQLMANGR.EXE): permite iniciar, pausar, continuar e parar ("finalizar") os serviços do SQL Server.

(40)
(41)
(42)

Ferramentas

 Query Analyzer(ISQLW.EXE): permite

administrar diretamente o SQL Server usando comandos Transact-SQL. Os comandos SQL podem ser executados

interativamente, ou podem ser executados de procedimentos armazenados ou scripts.

 Profiler (SQLTRACE.EXE): permite

monitorar toda a atividade do servidor e registrar essa atividade em arquivos de log, incluindo comandos SQL executados pelo servidor.

(43)
(44)
(45)

Ferramentas

 ClientNetwork Utility (CLICONFG.EXE): configura

o software de acesso cliente numa estação.

 Performance Monitor (SQLCTRS.PMC: integra o

Performance Monitor ("Desempenho do Sistema") do Windows NT com o SQL Server, para

(46)
(47)
(48)

Ferramentas

 Server Network Utility (SRVNETCN.EXE):

permite adicionar, remover ou configurar as Net-libraries, que são os protocolos

aceitos para comunicação do cliente com o servidor.

 SQL Server Books Online: toda a

documentação do SQL Server, para

consultar online. Permite fazer pesquisas de texto na documentação.

(49)
(50)
(51)

Diagramas

 São os Diagramas Entidades Relacionamentos.  Refletem o Modelo Entidade Relacionamento,

só que agora já estruturado sobre o SGBD escolhido.

 É a ferramenta gráfica do SQL Server que

permite que sejam feitos os relacionamentos entre tabelas do mesmo Banco de Dados.

 Permitem que sejam quebrados por assunto

(52)
(53)
(54)
(55)
(56)
(57)

Sistemas Gerenciadores

de Banco de Dados

 Um sistema gerenciador de banco de

dados (SGBD) como o SQL Server é responsável por armazenar dados de forma confiável e permitir fácil

recuperação e atualização desses

dados. Um SGBD relacional armazena dados de forma relacional, isto é na forma de linhas e colunas.

(58)

Conceitos Relacionais

 Um registro [record] ou linha [row] é um

grupo de variáveis com tipos de dados diferentes, que armazenam dados

relacionados.

 Um campo [field] ou coluna [column] é um

dos itens de informação dentro de uma linha da tabela, como a descrição da informação.

 Uma tabela [table] é um conjunto de linhas

(registros) com a mesma estrutura (coluna), armazenados de forma permanente em

disco.

 Um banco de dados [database] é um

conjunto de tabelas que contêm dados relacionados.

(59)

Conceitos Relacionais

 Um índice [index, plural 'indexes' ou

'indices'] é um mecanismo que permite

pesquisar rapidamente por linhas em uma tabela, dado o valor de uma determinada coluna (ou algumas colunas) da tabela.

 Um índice primário ou chave primária

define um valor único, que não pode ser repetido em outras linhas da tabela.

 Uma consulta [query] é um pedido de

pesquisa no banco de dados, que permite obter todo um subconjunto da tabela ou de várias tabelas, especificando as condições de seleção.

(60)

SQL Server

 Os itens de menu importantes são Action, View

e Tools:

 Action te permite fazer coisas tais como registrar

um novo servidor ou um novo grupo (conforme visto na seção de instalação).

 Views te fornece uma lista dos diferentes tipos de

visões disponíveis. Você pode selecionar as visões grande, pequeno, detalhe ou lista dos ícones e suas propriedades associadas.

 O menu Tools lista todas as ferramentas e

assistentes do SQL Server. Você pode fazer backup de um banco de dados; parar, iniciar e configurar a replicação; e iniciar ferramentas como o Query

(61)
(62)

Visões

 Uma visão [view] é uma forma alternativa de

olhar os dados contidos em uma ou mais tabelas. Para definir uma visão, usa-se um comando SELECT que faz uma consulta sobre as tabelas. A visão aparece depois como se fosse uma tabela. Visões têm as seguintes vantagens:

 Uma visão pode restringir quais as colunas

da tabela que podem ser acessadas (para leitura ou para modificação), o que é útil no caso de controle de acesso.

(63)

Visões

 Uma consulta SELECT que é usada

muito freqüentemente pode ser criada como visão. Com isso, a cada vez que ela é necessária, basta selecionar dados da visão.

 Visões podem conter valores calculados

ou valores de resumo, o que simplifica a operação.

 Uma visão pode ser usada para

(64)
(65)

Stored Procedures

 Um procedimento armazenado é um conjunto

de comandos SQL que são compilados e armazenados no servidor. Ele pode ser chamado a partir de um comando SQL qualquer.

 Um procedimento armazenado é compilado

em tempo de execução como qualquer outro comando Transact-SQL. O SQL Server

mantém planos de execução para todos os comandos SQL na cache de procedimentos.

(66)

Stored Procedures

 A vantagem de usar procedimentos

armazenados é que eles podem

encapsular rotinas de uso freqüente no próprio servidor, e estarão disponíveis para todas as aplicações.

Parte da lógica do sistema pode ser

armazenada no próprio banco de dados, em vez de ser codificada várias vezes

(67)

Stored Procedures

 Os Procedimentos Armazenados não seriam úteis

se não pudessem aceitar argumentos.

Procedimentos Armazenados são implementados como funções, aceitando um ou mais argumentos e retornando um ou mais valores. Também

retornam um ou mais cursores. Um cursor é o equivalente a um conjunto de registros. Os

argumentos devem ser declarados imediatamente após a instrução CREATE PROCEDURE. Aparecem como uma lista separada por vírgulas após o

(68)

Stored Procedures

 Sintaxe:

 CREATE PROCEDURE procedure_name

 @argumento1 tipo1, @argumento2 tipo2, ....

[OUTPUT]

 AS

 SELECT... 

O argumento que será retornado para o

procedimento é marcado com a palavra-chave

OUTPUT significa que é a variável usada para saída (retorno da execução do procedimento). Para

(69)

Stored Procedures

 A palavra INPUT é o padrão, por isso você não

precisa especificá-lo explicitamente.

 Ex.

 CREATE PROCEDURE CountOrdersbyDate  @startDate datetime, @enddate datetime,

@CountOrders int OUTPUT

 AS

 Select @CountOrders = COUNT(OrderID) from

Orders

 WHERE OrderDate BETWEEN @startdate and

(70)

Stored Procedures

 Declare @date1 datetime

 declare @date2 datetime  SET @date1 = '1/1/2006'  SET @date2 = ‘1/31/2006'  declare @ordercount int

 EXECUTE CountOrdersbyDate @date1,

@date2, @orderCount OUTPUT

 PRINT 'THERE WERE ' +

CONVERT(VARCHAR(5), @ORDERCOUNT) + 'ORDERS PLACED IN THE CHOSEN INTERVAL

(71)
(72)

Triggers

São tipos especiais de procedimentos armazenados muito usados para tarefas administrativas.

Desempenham um importante papel na programação do SQL porque é um Procedimento Armazenado que

o SQL chama automaticamente quando

determinadas ações ocorrem. Ex. um Procedimento Armazenado que é executado automaticamente

quando uma linha da tabela é excluída.

Você pode pensar nos gatilhos como manipuladores de eventos do VB para os eventos onUpdate, onDelete, onInsert.

(73)

Triggers

Os gatilhos são comumente usados para acompanhar as alterações ocorridas no banco de dados.

Sintaxe:

CREATE TRIGGER nome_gatilho ON tabela

[WITH ENCRYPTION]

FOR [DELETE] [,] [INSERT] [,] [UPDATE] [NOT FOR REPLICATION]

AS

(74)

Triggers

Cada gatilho possui um nome e é definido para uma tabela específica e para uma ou mais ações

específicas. A palavra [WITH ENCRYPTION] é para armazenar o gatilho de forma criptografada a fim de que usuários não possam acessá-lo. A palavra [NOT FOR REPLICATION] indica que o gatilho não deve ser executado quando um processo de replicação

modifica a tabela envolvida no gatilho. O mesmo gatilho pode ser aplicado para várias ações. Para distinguir entre elas, sintaxe:

(75)

Triggers

 Os Triggers são usados para realizar

tarefas relacionadas com validações,

restrições de acesso, rotinas de segurança e consistência de dados; desta forma estes controles deixam de ser executados pela

aplicação e passam a ser executados pelos Triggers em determinadas situações:

 Mecanismos de validação envolvendo múltiplas

tabelas

 Criação de conteúdo de uma coluna derivada de

outras colunas da tabela

 Realizar análise e e atualizações em outras

tabelas com base em alterações e/ou inclusões da tabela atual

(76)

Triggers

 Um Trigger é bloco de comandos

Transact-SQL que é automaticamente executado

quando um comando INSERT , DELETE ou UPDATE for executado em uma tabela do banco de dados.

 A criação de um Trigger envolve duas

etapas :

 Um comando SQL que vai disparar o

Trigger

( INSERT , DELETE , UPDATE)

 A ação que o Trigger vai executar

(77)

Triggers

TRIGGER UPDATE EM CASCATA

EX. Create Trigger CascadeImovel_TerritorialUpdate

On dbo.Lote

For Update As

declare @LoteNumLoteNovo float

declare @LoteNumLoteOld float

Select @LoteNumLoteNovo=LoteNumLote from inserted

Select @LoteNumLoteOld=LoteNumLote from deleted

UPDATE Imovel_Territorial SET CadTerNumLote = @LoteNumLoteNovo

WHERE CadTerNumLote =@LoteNumLoteOld

TRIGGER DELETE EM CASCATA

Ex. Create Trigger CascadeManualItensDelete

On dbo.MatManual

For Delete

As declare @CodID int

Select @CodID=CodManualfrom deleted

(78)

Triggers

 Como não poderia deixar de ser ,

existem certas limitações na utilização de um Trigger:

 Não é possível criar um Trigger para uma

visão

 O resultado da execução de um Trigger é

retornado para a aplicação que o chamou.

 O comando WRITETEXT não ativa um

Trigger

 O comando TRUNCATE TABLE não pode

(79)
(80)
(81)

Projeto



Para verificação do aprendizado, fazer a

análise, o documento de requisitos, o

MER e a criação do banco de dados em

SQL.



O tema do Projeto é: Controle de

(82)

Projeto



O Controle de Animais municipal se dá

pelo cadastro dos animais do município,

seu endereço, suas apreensões e suas

retiradas, quando essas ocorrem.

Referências

Documentos relacionados

O  Estabelecimento  de  Ensino  deve  pagar  as  verbas  devidas  na  rescisão  contratual  no  dia  seguinte  ao  término  do  aviso prévio,  quando 

O ASSINANTE, previamente vinculado a outro contrato de prestação do serviço VÍRTUA, que optar pela contratação, a qualquer tempo, da OPÇÃO FIDELIDADE prevista

Eles ressaltaram diversos aspectos de sua imensa contribuição ao management: Drucker foi um transgressor, tinha imensa capacidade de fazer previsões, foi um fenômeno como autor

O ponto de equilíbrio é o número de unidades que precisão ser vendidas para uma empresa atingir o equilíbrio- não ter lucro e nem prejuízo5. O CVL é qualquer análise

M.C.O.B.V. Encontrando-se negociados em mais do que um mercado, o valor a considerar na avaliação dos instrumentos financeiros reflecte o preço praticado no

O estágio ocorre sem interrupção, em regime obrigatório de 35 horas de serviço semanal, no centro de saúde em que decorre a formação, com integração e participação nas

Pode-se perceber, portanto, que a indústria de beneficiamento da biomassa possui um grande potencial não só na área de combustíveis, a mais famosa, mas também

traseira é de no máximo 15cm após a coluna B ( no sentido do painel de instrumentos do veículo). g) Liberada a substituição das caixas de roda traseira para acomodação dos pneus