Trabalhando com SQLServer

Disponível

SQL é o nosso tudo

Como você provavelmente já deve ter adivinhado, todos os comandos para o servidor SQL podem ser fornecidos por meio de consultas SQL. Tudo.

Essas equipes são oficialmente divididas em 4 grupos:

  • instruções de definição de dados (Data Definition Language, DDL ):

    • CREATE cria um objeto de banco de dados (o próprio banco de dados, tabela, exibição, usuário e assim por diante)
    • ALTER altera um objeto
    • DROP remove um objeto
  • operadores de manipulação de dados (Data Manipulation Language, DML ):

    • SELECT seleciona os dados que satisfazem as condições dadas
    • INSERT adiciona novos dados
    • UPDATE altera os dados existentes
    • DELETE remove os dados
  • operadores de definição de acesso a dados (Data Control Language, DCL ):

    • GRANT concede a um usuário (grupo) permissões para executar determinadas operações em um objeto
    • REVOKE revoga permissões emitidas anteriormente
    • DENY define uma proibição que tem precedência sobre uma permissão
  • Declarações de Linguagem de Controle de Transação ( TCL ) :

    • COMMIT aplica uma transação
    • ROLLBACK reverte todas as alterações feitas no contexto da transação atual
    • SAVEPOINT divide uma transação em seções menores

E nos dois primeiros níveis, estudamos apenas variedades da instrução SELECT. Imagine quantas coisas interessantes nos esperam no futuro.

Mas estamos nos preparando aqui principalmente para programadores Java, então estudaremos os cenários que você certamente encontrará no trabalho.

O administrador do sistema no projeto provavelmente criará todos os bancos de dados, mas você definitivamente terá que fazer uma seleção dos dados várias vezes.

Além disso, às vezes seu código não gravará todos os dados no banco de dados ou os gravará da maneira errada; portanto, muitas vezes você terá que entrar nele com canetas e ver o que realmente está armazenado lá.

Vamos repassar as coisas que abordamos nas palestras anteriores novamente.

Criando um esquema em um banco de dados

Para criar um novo esquema no DBMS, você precisa executar o comando:

CREATE SCHEMA Name;

Essa é a opção mais fácil. Além disso, ao criar um novo esquema, você pode especificar o formato de codificação de dados e outros parâmetros.

Se você deseja excluir o esquema, mas não tem certeza se ele existe, é necessário executar o comando:

DROP SCHEMA IF EXIST Name;

Muitas vezes você verá esses comandos em arquivos com backups de diferentes bancos de dados, por isso os trago aqui.

Selecionando o esquema atual

Se você tiver muitos esquemas em seu DBMS, pode acontecer facilmente que esquemas diferentes tenham as mesmas tabelas. Para evitar confusão, você pode fazer duas coisas:

  • Sempre coloque o nome do esquema antes do nome da tabela
  • Especificar esquema padrão

Vamos escrever uma consulta que irá selecionar dados da tabela user , que está no esquema de teste . Vai parecer algo assim:

SELECT * FROM test.user;

Isso é simplesmente indispensável se você precisar juntar (JOIN) várias tabelas de esquemas diferentes em uma consulta.

A propósito, na linguagem Java costumamos fazer algo semelhante: se no código precisarmos usar classes com o mesmo nome de pacotes diferentes, adicionamos o nome do pacote antes do nome da classe.

A segunda maneira é especificar o esquema padrão . Se a consulta especificar um nome de tabela, mas nenhum esquema, o esquema padrão será usado. Para fazer isso, use a instrução USE :

USE name - schemes;

Vamos reescrever a consulta anterior usando a instrução USE:

USE test;
SELECT * FROM user;

Criando uma Visualização

Além de tabelas com dados reais, o SQL permite armazenar algo como tabelas virtuais, onde os dados são extraídos de tabelas reais. Essas tabelas virtuais são chamadas de VIEW.

Essa tabela não pode armazenar dados reais e, cada vez que é acessada, extrai dados de tabelas reais. O conteúdo de tal VIEW é especificado usando uma consulta SQL.

Você pode criar uma VIEW a partir de qualquer consulta SELECT com um comando como:

CREATE VIEW Name AS
SELECT-request;
Vamos escrever uma consulta que criará uma tabela virtual public_employee com base na tabela de funcionários, onde as informações de salário do funcionário serão ocultadas:
CREATE VIEW public_employee AS
SELECT id, name FROM employee

No exemplo acima, nossa tabela (VIEW) public_employee conterá apenas IDs de funcionários e seus nomes, mas não informações sobre seus salários. Você pode usar tais Views no mesmo local que as tabelas reais.

Por que as visualizações são necessárias? Eles têm uma série de vantagens:

Controle flexível de acesso à informação . Você pode dar a certos usuários acesso apenas para VIEW, mas não para dar acesso às tabelas. E em View, retire apenas informações públicas das tabelas. Além disso, se novas colunas com informações importantes forem adicionadas às tabelas no futuro, elas não entrarão acidentalmente na Visualização.

Desnormalização de dados . Por conveniência de armazenamento, os dados geralmente são divididos em centenas e milhares de tabelas, mas não é muito conveniente para uma pessoa comum trabalhar com esses dados - você precisa escrever consultas muito complexas. Com o View, você pode criar tabelas virtuais que exibem dados de dezenas de tabelas diferentes em uma única tabela.

Polimorfismo e Encapsulamento . Você pode alterar as estruturas do seu banco de dados. Ao mesmo tempo, os usuários do programa que trabalham com suas visualizações não adivinharão que algo mudou. E não haverá necessidade de reescrever o código dos programas que têm acesso ao View. Você só precisará ajustar o script SQL relacionado a VIEW.

Leia apenas . A exibição só pode ser definida com uma consulta SELECT, portanto, trabalhar com a exibição não pode alterar os dados em tabelas reais de forma alguma. A propósito, esta é outra vantagem a favor do cache de consulta. Mas mais sobre isso na próxima vez.

Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário