4shared

Autor: adeilsonrbrito

[SQL Server] Comparando Semi Joins

Comparando Semi Joins Existem alguns mitos envolvendo o que conceitualmente é conhecido como semi join, e, infelizmente, tais mitos acabam por prejudicar a escrita de consultas, causando problemas de performance. Mas, o que são semi joins? São joins que retornam linhas de uma tabela A baseado na existência de linhas correlacionadas em uma tabela B. Se a consulta retorna apenas atributos (campos) da tabela da esquerda, então o join é chamado de Left Semi Join; se retorna apenas atributos da tabela da direita, então é chamado de Right Semi Join. Um semi join pode ser produzido usando INNER JOINS, EXISTS, IN e também com o INTERSECT. Antes de entrarmos em mais detalhes, listemos os mitos comuns envolvendo semi joins: JOIN versus EXISTS IN versus EXISTS Será que realmente existe ganho de performance ao adotar, por exemplo, o EXISTS ao invés do IN? Iremos clarificar essa e outras questões no decorrer do artigo. Preparando o ambiente Antes de entrarmos diretamente no assunto, vamos executar o código abaixo para a criação do nosso ambiente de estudo. Estou utilizando o banco AdventureWorks2012 como referência. -- Cria o ambiente use tempdb go CREATE TABLE dbo.Clientes (      ClienteID INT NOT NULL PRIMARY KEY, Nome VARCHAR(50) NOT NULL, Sobrenome VARCHAR(50) NOT NULL, ); INSERT dbo.Clientes SELECT c.CustomerID , p.FirstName , p.LastName FROM AdventureWorks2012.Sales.Customer c JOIN AdventureWorks2012.Person.Person p ON c.PersonID = p.BusinessEntityID GO CREATE TABLE dbo.Vendas...

Read More

[SQL Server] Exame 70 461 – Tópico 4: Criando e Modificando Constraints – Parte 02 – Final

Integridade de Entidade: Primary Key e Unique Key Constraints Primary Key (PK) e Unique Key (UK) são utilizadas para identificar unicamente uma linha em uma tabela. Tanto PK’s quanto UK’s podem envolver mais de uma coluna. Desta forma, quando uma chave-primária é, por exemplo, constituída por mais de uma coluna é dito que a chave-primária é composta. O mesmo se aplica às UK’s. Mas quais são as diferenças entre primary key e unique key? Primary Key: Uma coluna que é envolvida em uma PK não pode ser nula; Só é possível existir uma chave-primária por tabela. Unique Key: Uma coluna que é envolvida em uma UK pode ser nula; É possível existirem várias UK’s numa mesma tabela. Primary Key Mesma estando fora do escopo deste post, bem como da pauta de conteúdos do exame 70-461, vale à pena mencionar os acalorados debates na comunidade acerca da melhor escolha de colunas para a formação de uma PK. Há quem defende o uso de Natural Key, que é a estratégia de utilizar uma ou mais colunas existentes na tabela. Outros defendem a adoção de Surrogate Key, que é a estratégia de utilizar um valor que não é natural ao dado, como, por exemplo, a geração automática de um número ou código. Deixo este tema, Natural Key versus Surrogate Key, como uma dica de pesquisa para você, amigo leitor. Vejamos agora como...

Read More

[SQL Server] Exame 70-461 – Tópico 4: Criando e Modificando Constraints – Parte 01

  Um importante passo, que faz parte do projeto de um banco de dados, é decidir a melhor maneira de como forçar e garantir a integridade dos dados. A integridade pode ser forçada completa e unicamente na camada de aplicação, ou exclusivamente no nível da camada de dados (leia-se banco de dados), ou, ainda, através de uma abordagem híbrida (esta é a abordagem mais comumente utilizada). Discussões e polêmicas à parte, existe um mínimo de “coisas” que você deveria implementar na camada de banco, visando garantir a integridade. Iremos falar sobre isso no decorrer deste post.   Tipos de Integridade de Dados Conceitualmente existem três tipos de integridade de dados, conforme ilustra a figura abaixo. · Integridade de domínio (coluna): especifica o conjunto de valores válidos para uma determinada coluna, bem como se a coluna aceita nulo ou não. · Integridade de entidade (linha): requer que cada linha seja identificada de forma única na tabela, ou seja, cada linha possui uma identificação exclusiva. Isto é normalmente chamado de chave primária (primary key). · Integridade referencial (entre tabelas): mantém um relacionamento consistente entre a Tabela A e a Tabela B. A chave primária da Tabela A existe como uma coluna na Tabela B, onde é conceitualmente chamada de chave-estrangeira. Desta forma, não será possível inserir um valor na coluna chave-estrangeira da Tabela B que não exista na coluna chave-primária da...

Read More

[SQL Server] Exame 70-461–Material para Complementar os Estudos

  Devido ao fato do exame 70-461 ser novo (oficialmente disponível desde o mês de julho deste ano), praticamente não existem materiais de referência em português. Todavia, temos à disposição boas fontes de estudo que estão em inglês. A primeira referência que deixo para vocês são os dois livros citados abaixo: Livro: Microsoft SQL Server 2012 T-SQL Fundamentals Autor: Itzik Ben-Gan Link: http://www.amazon.com/Microsoft-Server-2012-T-SQL-Fundamentals/dp/0735658145 Meus comentários: este livro cobre todos os tópicos exigidos no exame 70-461 e vai um pouco além. Ele te ajudará a dominar os fundamentos da programação T-SQL, proporcionando uma excelente base de conhecimentos para os exames seguintes também. Recomendo fortemente. Livro: Training Kit Exam 70-461: Querying Microsoft SQL Server 2012 Autor: Itzik Ben-Gan Link: http://www.amazon.com/Training-Kit-Exam-70-461-Microsoft/dp/0735666059 Meus comentários: sem dúvida alguma a série Training Kit é a que melhor direciona os estudos, pois aborda com exatidão os assuntos exigidos no exame. Além de exercícios que reforçam a aprendizagem, o livro vem com um CD contendo testes que simulam o exame. Vale à pena. Para aqueles que gostam de estudar através da internet, estou deixando uma listagem dos assuntos do exame + respectivos links para os estudos. 1) Create Database Objects (24%) Create and alter tables using T-SQL syntax (simple statements) CREATE TABLE Microsoft Links: http://msdn.microsoft.com/en-us/library/ms174979(v=sql.110).aspx DROP TABLE Microsoft links:http://msdn.microsoft.com/en-us/library/ms173790(v=sql.110).aspx ALTER TABLE Microsoft Links:http://msdn.microsoft.com/en-us/library/ms190273(v=sql.110).aspx ALTER COLUMN Microsoft links:Veja Alter table Create and alter views (simple statements) CREATE VIEW...

Read More

[SQL Server] Exame 70-461 – Tópico 3: Projetando Views – Parte 2 – Final

    Dando sequência aos estudos do tópico Projetando Views, vamos abordar o assunto Implicações de Segurança.   Implicações de Segurança Um dos benefícios ao se utilizar views é a camada de abstração de segurança que nos é proporcionada. Um usuário pode receber um grant de select em uma view, sem a necessidade de receber o mesmo grant de select nas tabelas base referenciadas. Isso significa que o usuário consegue fazer select na view, mas não consegue fazer select nas tabelas usadas pela view. Além disso, views é uma forma de implementar segurança tanto em coluna quanto em linha. É possível no SQL Server dar grant’s em colunas específicas de determinada tabela, mas não diretamente nas linhas. Imagine um cenário em que o DBA é requisitado a configurar as seguintes permissões para o usuário Pedro: A) Visualizar e ler o conteúdo das colunas Código, Nome e CPF da tabela Cliente; B) Ler apenas as linhas cuja coluna SALARIO seja inferior a R$ 1.000,00. O primeiro requisito é fácil de ser atendido e, para isso, o grant de select poderia ser setado diretamente nas colunas da tabela. Contudo, para o segundo requisito não existe um “tipo de grant” e, desta forma, precisamos recorrer a uma abordagem que implemente ambos os requisitos numa única “tacada”. Vejamos como. use DBExame70461 go -- Se a tabela Cliente existir então vamos dropá-la IF OBJECT_ID('dbo.Cliente')...

Read More
Follow

Get every new post delivered to your Inbox

Join other followers: