SQL comandos

Comandos de Transact-SQL úteis para gerir o SQL Server

Partilhar

Junte-se a nós neste curto artigo e descubra vários comandos de SQL Server em Transact-SQL úteis para gerir o SQL Server, com os quais é possível realizar tarefas básicas nas suas bases de dados.

Antes de começar, deve saber que este artigo é destinado a quem está a começar a trabalhar com Transact-SQL ou tem pouca experiência com esta linguagem. Se for o seu caso, o que contamos aqui pode ser de grande interesse para si, pois dar-lhe-á as noções básicas de que precisa para operar com bases de dados SQL Server através de instruções ou comandos de SQL Server.

A primeira coisa que precisamos de saber é que uma instrução SQL é basicamente uma unidade de trabalho atómica (não divisível) que terminará com êxito, ou numa falha que provocará um retorno (rollback).

A próxima coisa que devemos saber é que todas as instruções SQL são formadas não só pelo comando em si, mas também por outras partes, como parâmetros, variáveis, etc.

NOTA: Este artigo não pretende ser um manual completo de SQL para SQL Server, ou melhor, de T-SQL (Transact-SQL), mas pretende ser um ponto de partida para a sua aprendizagem. Por isso, não abordamos todas as opções possíveis, mas damos uma visão geral sobre muitas delas.

 

Tipos de instruções:

No SQL existem diferentes tipos de instruções que permitem fazer coisas tão díspares como definir, manipular ou extrair dados. Normalmente existem três tipos de instruções: DDL, DML e DCL, mas na realidade existem também TCL e DQL.

Vamos falar sobre todos estes tipos em maior ou menor grau.

Os tipos de instruções existentes são:

  • DDL: instruções da linguagem de definição de dados (Data Definition Language).
  • DML: instruções da linguagem de manipulação de dados (Data Manipulation Language).
  • DCL: instruções da linguagem de controlo de dados (Data Control Language).
  • TCL: instruções da linguagem de controlo de transações (Transactional Control Language).
  • DQL: instruções da linguagem de consulta de dados (Data Query Language).

 

Neste ponto, como não poderia deixar de ser, vamos falar sobre cada um destes tipos de instruções da linguagem SQL para conhecê-los. Para cada um dos tipos, haverá uma breve descrição dos comandos com os seus usos, sintaxe e exemplos.

 

DDL (Data Definition Language):

Os comandos de linguagem de definição de dados, comummente conhecidos como DDL, são usados ​​para criar e modificar a estrutura dos objetos da base de dados.

Os comandos deste tipo que podemos encontrar são:

  • CREATE: este comando permite criar objetos numa base de dados.
  • ALTER: este comando permite alterar objetos em bases de dados.
  • DROP: este comando permite eliminar objetos de bases de dados.
  • TRUNCATE: este comando remove todos os registos de uma tabela e redefine a identidade da tabela para o valor inicial, ou seja, faz uma espécie de “reset”.

 

Agora vejamos com mais detalhe cada uma destas instruções.

 

CREATE:

O comando CREATE é utilizado para criar objetos no SQL, possibilitando a criação de bases de dados, tabelas, etc.

Normalmente iremos trabalhar com a criação de tabelas dentro de bases de dados existentes, podendo atribuir uma infinidade de propriedades, campos, tipos de dados, etc.

A sintaxe reduzida para CREATE TABLE pode ser assim:

CREATE TABLE <TableName>
( { <column_definition> } [ ,… n ] );

Um exemplo simples de criação de base de dados poderia ser o seguinte:

CREATE TABLE Clientes
(
ID smallint NOT NULL PRIMARY KEY
Nome nmarchar(50)
Morada nmarchar(200)
Telefone int
Email nmarchar(40)
Contacto nmarchar(40)
Conta int NOT NULL
);

No caso de criação de bases de dados, será utilizada uma sintaxe que deve incluir um destino, tamanhos, etc.

 

ALTER:

Como vimos, o comando CREATE permite a criação de objetos numa base de dados ou mesmo a criação da própria base de dados. Já o comando ALTER possibilita a sua modificação (alteração). Ou seja, permite alterar a configuração da tabela, adicionar e eliminar colunas, ou criar restrições.

O mais comum será trabalhar com ALTER TABLE, que nos permite modificar as características das tabelas previamente criadas.

No caso do ALTER TABLE, devemos mencionar que a sintaxe será diferente conforme sejam tabelas baseadas em disco ou baseadas em memória.

 

DROP:

O comando DROP permite eliminar diferentes objetos das bases de dados, como as próprias bases de dados, tabelas, vistas, etc. O comando DROP TABLE elimina tanto a configuração da tabela como os dados nela contidos, as restrições, etc.

NOTA: As vistas e procedimentos de uma tabela devem ser eliminados explicitamente com o comando DROP VIEW ou DROP PROCEDURE.

A sintaxe deste comando para eliminar uma tabela será:

DROP TABLE [IF EXISTS] <TableName>;

Um exemplo de uso é:

DROP TABLE IF EXISTS Clientes;

 

TRUNCATE:

A instrução TRUNCATE elimina todas as linhas de uma tabela ou as partições especificadas de uma tabela, fazendo assim uma eliminação de todas as linhas uma a uma.

O comando TRUNCATE TABLE é muito semelhante ao comando DELETE quando não se usa a cláusula de modificação WHERE. A vantagem do TRUNCATE TABLE é que é muito mais rápido e leve, ou seja, envolve o uso de menos recursos.

A sintaxe do TRUNCATE é:

TRUNCATE TABLE <TableName>;

Um exemplo de uso é:

TRUNCATE TABLE Clientes;

 

DML (Data Manipulation Language):

Os comandos de linguagem de manipulação de dados permitem recuperar, armazenar, modificar, eliminar, inserir e atualizar os dados que preenchem a nossa base de dados.

Os comandos mais importantes são:

  • SELECT: permite recuperar os dados de uma tabela e também selecionar as partes de qualquer tabela através do uso de filtros e outras opções.
  • INSERT: permite a inserção de novos dados numa tabela existente, tanto para o seu preenchimento como para a adição de novos registos numa tabela já preenchida.
  • UPDATE: permite atualizar os dados existentes numa tabela já populada.
  • DELETE: permite eliminar todos os registos de uma tabela existente.

 

Vamos falar sobre cada um destes comandos de SQL Server (instruções) para que o leitor possa dar os primeiros passos com eles.

 

SELECT:

O comando SELECT é o mais utilizado no mundo do SQL, pois é a instrução utilizada para extrair informações dos dados armazenados na base de dados.

A instrução SELECT, sendo uma consulta, permite apenas exibir as entradas ou campos que nos interessam, e as formas de o fazer são diferentes para cada tipo.

A sintaxa do comando SELECT tem a forma seguinte:

SELECT <Options> FROM <TableName>;

Um exemplo disto é:

SELECT * FROM Clientes;

Por um lado, podemos consultar todos os campos (colunas) da tabela com o “SELECT *”, que mostrará todas as colunas contidas na tabela ou, se quisermos, será possível filtrar apenas as colunas que nos interessam, utilizando os nomes das colunas separados por vírgulas (,).

Um exemplo disto é:

SELECT ID, Nome, Contacto FROM Clientes; 

Por outro lado, podemos usar a cláusula WHERE, que permite filtrar para mostrar apenas os campos que cumprem um determinado critério, como os clientes de um determinado setor.

A sintaxe do comando SELECT com a cláusula WHERE tem a forma seguinte:

SELECT <Options> FROM <TableName>
WHERE <Conditions>;

Um exemplo disto é:

SELECT ID, Nome, Contacto FROM Clientes
WHERE Sector = ‘Reseller’;

NOTA: Como o SELECT é a instrução ou comando com o qual iremos trabalhar de forma mais comum, vamos dedicar um artigo para falar a fundo sobre ele, com diferentes opções e inúmeros exemplos.

 

INSERT:

A instrução INSERT permite carregar dados numa tabela e adicionar informações a linhas adicionais existentes.

A sintaxe deste comando é a seguinte:

INSERT INTO <TableName> [(column1, column2,…columnN)]  
VALUES (value1, value2,…valueN);

Os campos “columnX” referem-se às colunas nas quais os dados serão inseridos e os “valueX” referem-se aos dados que queremos carregar nas respetivas colunas.

Um exemplo de INSERT pode ser assim:

INSERT INTO Clientes (ID, Nome, Morada, Telefone, Email, Contacto, Conta)
VALUES (723, Jotelulu, Plaza Pablo Ruiz Picasso 28020 Madrid, 911333712, Manuel Rodrigues, 723723723723);

Caso sejam inseridos dados em todos os campos, não será necessário especificar o nome do campo, podendo ser utilizada a seguinte sintaxe simplificada:

INSERT INTO <TableName>
VALUES (value1, value2, …, valueN);

Um exemplo disto seria:

INSERT INTO Clientes
VALUES (723, Jotelulu, Plaza Pablo Ruiz Picasso 28020 Madrid, 911333712, Manuel Rodrigues, 723723723723);

 

UPDATE:

Como dissemos anteriormente, o comando UPDATE permite fazer atualizações ou alterações dentro de uma tabela, substituindo ou alterando os dados existentes.

Este comando funciona com base numa condição definida pela cláusula WHERE. Uma vez criado o filtro, usamos a cláusula SET para indicar os dados a modificar.

O comando UPDATE pode ser muito destrutivo se não for usado com cuidado. Geralmente é usado juntamente com a cláusula WHERE para filtrar e selecionar as linhas que queremos alterar. Se não for devidamente filtrado ou se for ignorado, pode destruir todos os dados.

A sintaxe do comando UPDATE é a seguinte:

UPDATE <TableName>
SET
<ColumnName> = { expression | DEFAULT | NULL }
{,…n}
WHERE <search_conditions>;

Um exemplo deste comando é:

UPDATE Clientes
SET Contacto = ‘Manuel Rodrigues’
WHERE ID = 73;

 

DELETE:

O comando DELETE permite eliminar um conjunto de linhas, selecionadas através de uma cláusula WHERE, que estabelece uma condição para a seleção correta. Se a cláusula WHERE não for definida, todas as entradas na tabela serão removidas, deixando a tabela em branco.

Devemos dizer que a cláusula WHERE de uma instrução DELETE tem a mesma estrutura que as cláusulas WHERE usadas nos comandos SELECT.

O código da instrução caso queira excluir a tabela inteira seria:

DELETE [FROM] <TableName>;

E se quisermos eliminar apenas certos elementos da tabela:

DELETE [FROM] <TableName>
WHERE <Conditions>;

Um exemplo de uso da instrução DELETE poderia ser:

DELETE FROM Clientes
WHERE ID = 123;

 

DCL (Data Control Language):

Os comandos de linguagem de controlo de dados, também conhecidos como DCL, são usados para gestão de acessos. Estes comandos de SQL Server permitem criar funções, atribuir permissões e integridade referencial. Através deste controlo de acesso à base de dados podemos protegê-la.

Os comandos DCL disponíveis são:

  • GRANT: este comando permite conceder privilégios de acesso à base de dados.
  • REVOKE: este comando permite retirar ou revogar os privilégios de acesso de um utilizador ao banco de dados (que foram concedidos anteriormente com o comando GRANT).
  • DENY: este comando permite negar privilégios de acesso à base de dados. É, por assim dizer, a antítese do comando GRANT.

 

GRANT:

O comando GRANT de Transact-SQL define as condições de acesso a um elemento através do uso de permissões de acesso/segurança. Concedem-se ou atribuem-se permissões a um elemento específico com uma estrutura semelhante a:

GRANT permissão ON objeto TO utilizador

A sintaxe do comando GRANT é:

GRANT { ALL [ PRIVILEGES ] }
permission [ ( columnX)
[ ON [ class :: ] securable ] TO principal [ ,…n ]
[ WITH GRANT OPTION ] [ AS principal ] ;

As classes são:

  • LOGIN
  • DATABASE
  • OBJECT
  • ROLE
  • SCHEMA
  • USER

Um exemplo de uso de GRANT pode ser:

GRANT EXECUTE ON Cloud TO jioller;

 

REVOKE:

O comando REVOKE foi criado para eliminar ou revogar permissões que foram atribuídas anteriormente com GRANT.

A sintaxe do comando é:

REVOKE [ GRANT OPTION FOR ]
{
[ ALL [ PRIVILEGES ] ]
permission [ ( columnX
}
[ ON [ class :: ] securable ]
{ TO | FROM } principalX
[ CASCADE] [ AS principal ];     

Um exemplo de revogação de acesso pode assumir esta forma:

REVOKE SELECT ON SCHEMA :: Clientes TO Vendedores;

 

TCL (Transactional Control Language):

Os comandos de linguagem de controlo transacional, geralmente conhecidos como TCL, são comandos de SQL Server usados para gerir as diferentes transações que ocorrem dentro de uma base de dados.

Os comandos de TCL são:

  • COMMIT: é o comando utilizado para guardar o trabalho transacional feito até ao momento.
  • ROLLBACK: é o comando que permite a restauração da base de dados, levando-a ao estado anterior à execução do último script, ou seja, até ao último comando COMMIT nas transações.
  • SAVE TRANSACTION: é o comando usado para estabelecer um ponto de backup (cópia) dentro de uma transação.

Vamos agora ver como funciona cada um destes comandos.

 

COMMIT:

O comando COMMIT marca o fim de uma transação quando esta é bem-sucedida, explícita ou implicitamente. Quando se executa o COMMIT, todas as modificações de dados que estavam a ser executadas naquela transação atómica tornam-se permanentes na base de dados. Quando estes dados se tornam permanentes, os recursos que estavam a suportar o histórico de transações são libertados.

A sintaxe do comando COMMIT é mostrada abaixo:

COMMIT TRANSACTION [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ]; 

E um exemplo de uso da instrução COMMIT seria:

COMMIT TRANSACTION;

Nesta situação veríamos toda a transação do princípio ao fim, sempre que seja correta:

BEGIN TRANSACTION;
DELETE FROM Clientes WHERE ID = 13;
COMMIT TRANSACTION;

 

ROLLBACK:

O comando ROLLBACK é basicamente a antítese do COMMIT. Se o COMMIT não for executado, ou melhor, se houver problemas na execução dos comandos da transação, esta deve ser revertida.

O comando usado para reverter as alterações é ROLLBACK, que reverte uma transação explícita ou implícita para o início dessa transação ou para um ponto de verificação dentro da transação.

A instrução ROLLBACK apaga todas as modificações de dados feitas até ao ponto ao qual retorna, libertando também os recursos mantidos pela transação.

É importante observar que as alterações em variáveis locais ou variáveis de tabela não são incluídas.

A sintaxe do comando ROLLBACK é mostrada abaixo:

ROLLBACK TRANSACTION [ transaction_name | @tran_name_variable ]; 

Um exemplo de uso da instrução ROLLBACK é:

ROLLBACK TRANSACTION;

E neste caso veríamos toda a transação do início ao fim:

BEGIN TRANSACTION @TransactionName
INSERT INTO ValueTable VALUES(1);
ROLLBACK TRANNSACTION @TransactionName;

 

Com isto, terminamos a primeira revisão de comandos de SQL Server. Podemos desde já dizer que não será a última, mas a primeira de muitas, em que abordaremos novos comandos e até alguns destes com maior profundidade.

 

Conclusões:

Ao longo deste artigo apresentamos alguns comandos de SQL Server, instruções de Transact-SQL úteis, que podemos utilizar para criar, modificar ou eliminar objetos no SQL Server, com uma explicação básica, a sua sintaxe e um exemplo de uso.

Esperamos que esta breve compilação sirva como um primeiro contacto para quem quer começar a aprender linguagem SQL para Microsoft SQL Server.

Para quem quer continuar a aprender SQL e SQL Server, recomendamos a visita ao seguinte link, onde pode ler artigos relacionados com esta tecnologia.

Também pode obter mais informações com uma consulta à documentação no Microsoft Learn.

Obrigado por acompanhar-nos!

Categorias:Cloud e sistemas

Outros artigos que podem interessar-lhe

13 de Novembro de 2024
Temos novas distribuições em Servidores! Em resposta aos múltiplos pedidos de vários dos nossos parceiros, foi ativada a opção
13 de Novembro de 2024
Já é possível configurar modelos de diferentes softwares através do assistente de configuração de servidores. Inauguramos esta funcionalidade do
13 de Novembro de 2024
Integração com QNAP! Agora é possível criar cópias sincronizadas entre dispositivos de armazenamento local QNAP e o nosso serviço