Introdução ao banco de dados SQL SERVER

O SQL SERVER é um sistema de gerenciamento de banco de dados (SGBD). Pois bem, mas o que é um banco de dados?

Essa pergunta é crucial, pois muitos mitos se desenvolvem em torno de banco de dados. Simplesmente, um banco de dados é um aplicativo que serve para armazenar informações para posterior utilização. Para fazer este armazenamento, o banco de dados utiliza tabelas. Essas tabelas são divididas em colunas (campos com os nomes) e linhas.

Sim, é simplesmente assim. Esse é o conceito mais simples de banco de dados, e também é o mais correto. Os bancos de dados mais modernos, permitem que essas tabelas criadas se relacionem, tomando a nomenclatura de banco de dados relacional.

Agora, cabe ao desenvolvedor da aplicação estruturar este banco de forma que possa ser relacional, ter um bom desempenho e executar sua função.

De forma sucinta, podemos dizer que são três as estruturas que o desenvolvedor precisa saber: as tabelas e como relacioná-las, Stored Procedures e Triggers.

Tabelas

Uma tabela no SQL Server é feita de colunas e registros. Os registros, conhecidos como tuplas em uma tabela, representam o “registro” completo dos dados dentro da tabela. O modelo relacional, porém, permite que o registro se espalhe por várias tabelas, mas tomados coletivamente, todos os registros de dados inter-relacionados se combinam para formar o registro. Muitas vezes é sensato para nós quebrar grandes tabelas em muitas tabelas pequenas, para dar flexibilidade à estrutura de nossos dados, o que os torna mais maleáveis para o trabalho. Por exemplo, em um banco de dados de entrada de pedidos simples e um banco de dados de gerenciamento de pedidos, criaríamos normalmente uma tabela para os detalhes do cliente e uma tabela para os pedidos do cliente e assim por diante.

Clique na imagem para ampliar

Índices

Os índices do SQL Server podem ser associados às tabelas e views para acelerar a recuperação de linhas, as atualizações e exclusões. Eles são muito importantes no SQL Server, especialmente para os bancos de dados complexos. Isso acontece, porque, como todos os engines relacionais, o SQL Server primeiro deve encontrar uma linha em uma tabela antes que os dados possam ser apresentados ou manipulados. Pela referência a um índice, você estará ajudando o SQL Server a encontrar mais rapidamente a linha. Os índices organizam as linhas nas estruturas internas da tabela, de acordo com uma lógica peculiar ou algoritmo de ordenação.

Chaves

Uma chave, por outro lado, não influencia diretamente a ordenação, pesquisa e recuperação. Ela assegura que a linha de uma tabela seja única. O debate sobre exclusividade tem sido alimentado desde que a humanidade emergiu de um buraco no solo no meio do nada. Você não pode ser indiferente à exclusividade em seu banco de dados. O nome reconhecido para a chave única em sua tabela principal (você poderia chamá-la de tabela raiz) é chave primária. Se você dividir ou separar em módulos suas tabelas constituindo um relacionamento entre várias delas, precisará conectá-las (de modo a preservar o registro) criando uma chave nas tabelas externas. Essa chave de “salto-de-tabela” é chamada de chave externa,que é essencialmente a ligação que une as linhas da tabela externa às linhas da tabela primária, transformando-as, desse modo, em um registro. O relacionamento chave primária/chave externa é ilustrado abaixo.

Clique na imagem para ampliar

Views

As views são essencialmente tabelas virtuais criadas com o código SQL que podem executar operações de álgebra relacional sobre os dados de uma tabela ou conjunto de tabelas. As views são muito semelhantes às consultas do Microsoft Access no fato de que são criadas usando a linguagem de consulta e retornam dados em formato tabular. O que torna uma view o que ela é, e não uma tabela, é que sua estrutura tabular não é armazenada em nenhum banco de dados, nem é persistente. Em vez disso, uma instrução SELECT que recupera os dados para a view é armazenada no banco de dados. Em outras palavras, as views são somente para visualização. Elas são úteis para várias tarefas:

  • Podem ser usadas para ocultar as linhas de uma tabela. Em outras palavras uma view pode retornar só o conjunto de linhas que pertencem ao usuário ou processo em particular.
  • Podem ser usadas para ocultar as colunas de uma tabela. Um usuário, por exemplo, pode ser impedido de visualizar informações confidenciais da tabela cliente, como as sobre o cartão de crédito ou sobre o status do crédito.
  • Podem ser usadas em construções de junção para reunir colunas de várias tabelas em um objeto representando uma única tabela.
  • Podem ser usadas para executar operações com os dados das tabelas, como apresentar as somas de todos os valores de uma coluna específica.

Stored Procedures e Triggers

Stored Procedures, são procedimentos que ficam armazenados no banco de dados e podem ser chamados pela aplicação, ou mesmo por outra Stored Procedure, ou então por uma Trigger. Eles executam uma rotina, podem retornar algo ou não. Assim como as instruções de consultas, as Stored Procedures utilizam a linguagem SQL em sua programação.

Assim como as Stored Procedures, Triggers e também são procedimentos armazenados no banco de dados. A diferença é que só podem ser utilizados em três situações especiais: quando ocorrer um comando Insert, Delete ou Update na tabela.

Select

O comando SELECT no SQL é talvez um dos mais importantes, pois todas as consultas deverão ser chamadas através dele.

Sua estrutura básica é:

SELECT [CAMPOS] FROM [TABELA] WHERE [CONDIÇÃO] ORDER BY [CAMPO]

A leitura desta cláusula deve ser:

“Selecione todos os campos da tabela onde condição ordenado pelo campo.”

Pode ser utilizado o caractere coringa asterisco (*), que significa selecionar todos:

SELECT * FROM [TABELA] WHERE [CONDIÇÃO] ORDER BY [CAMPO]

Também existem condições que podem ser inseridas no início da instrução SELECT para poder filtrar os resultados obtidos:

SELECT TOP 10 [CAMPOS] FROM [TABELA] WHERE [CONDIÇÃO] ORDER BY [CAMPO]

Seleciona os dez primeiros registros que satisfazem as condições.

SELECT DISTINCT [CAMPOS] FROM [TABELA] WHERE [CONDIÇÃO] ORDER BY [CAMPO]

Seleciona todos os registros, excluindo os duplicados.

Podem ser adicionados também funções à cláusula SELECT:

SELECT AVG([CAMPOS]) FROM [TABELA] WHERE [CONDIÇÃO] ORDER BY [CAMPO]

Retorna a média dos valores do campo que satisfaz a condição.

SELECT SUM([CAMPOS]) FROM [TABELA] WHERE [CONDIÇÃO] ORDER BY [CAMPO]

Retorna a soma dos valores do campo que satisfaz a condição.

Um método muito utilizado é adicionar um ALIAS na sua cláusula SQL. Isso facilitará na identificação dos valores, pois nem sempre o nome do campo é escrito corretamente:

SELECT st_nome as Nome, st_senha as Senha FROM tbUsuarios

Isso irá retornar uma tabela com todos os registros, e dois campos, um chamado Nome e outro chamado Senha, da tabela tbusuarios.

É importante notar que o uso do ALIAS não é permitido na cláusula WHERE, GROUP BY e HAVING.

Podem ser juntadas várias cláusulas SELECT utilizando a palavra-chave UNION. Note que para esta condição, a quantidade de campos de todas as cláusulas deve ser o mesmo.

SELECT nome, telefone FROM vendedores

UNION

SELECT nome, telefone FROM administradores

UNION

SELECT nome, telefone FROM analistas

Para a parte das tabelas utilizadas, a cláusula FROM [TABELA], assim como na cláusula SELECT, podem ser utilizados ALIAS para identificar cada tabela. Isso facilitará quando existirem muitas tabelas para serem integradas à mesma cláusula SELECT. É muito importante notar que toda referência dos campos deve ser precedida pelo nome da tabela, ou seu ALIAS, contendo o ponto (.) para a separação:

SELECT t1.nome, t2.telefone FROM usuarios t1, detalhes t2

INNER JOIN, LEFT OUTER JOIN e RIGHT OUTER JOIN

O comando INNER JOIN serve para juntar duas tabelas na sua cláusula SELECT. LEFT OUTER JOIN também serve para juntar duas tabelas, dando a preferência para a primeira tabela, ou seja, todos os campos da primeira tabela e o que for relacionado à segunda tabela. No caso do RIGHT OUTER JOIN, são todos os campos da segunda tabela e os campos que estiverem relacionados na primeira tabela.

Update

A cláusula UPDATE é para atualizar registros nas tabelas. Sua sintaxe básica é:

UPDATE [TABELA] SET [CAMPO]=[VALOR] WHERE [CONDIÇÃO]

Note que se não for colocada a cláusula WHERE todos os registros serão atualizados com o valor fornecido. Isso é um erro muito comum e algo que exige atenção do desenvolvedor.

Insert

A cláusula INSERT tem a finalidade de inserir registros no banco. Sua sintaxe básica é:

INSERT INTO [TABLEA]([CAMPO]) VALUES ([VALOR])

Importante notar que todos os campos devem ser mencionados. Caso não sejam, ocorrerá um erro no comando, informando que a quantidade de campos não confere com a quantidade de valores do comando. Uma forma de sintaxe é não mencionar os campos, porém será necessário colocar todos os valores na ordem em que são inseridos na tabela.

Delete

DELETE é utilizado para pagar registros na tabela. Sua sintaxe básica é:

DELETE FROM [TABELA] WHERE [CONDIÇÃO]

Note que no caso de haver um campo auto numeração, ele não irá utilizar o mesmo valor em outro campo. Esta é uma diferença básica entre o comando TRUNCATE TABLE.

Truncate Table

Remove todas as linhas de uma tabela ou partições especificadas de uma tabela sem registrar as exclusões de linha individual. TRUNCATE TABLE é semelhante à instrução DELETE sem nenhuma cláusula WHERE, entretanto, TRUNCATE TABLE é mais rápida e utiliza menos recursos de sistema.

Sua sintaxe básica é:

TRUNCATE TABLE [TABELA]

Print Friendly, PDF & Email

Sobre o Autor