{"id":49050,"date":"2022-12-22T00:00:00","date_gmt":"2022-12-21T23:00:00","guid":{"rendered":"https:\/\/jotelulu.com\/blog\/comandos-de-transact-sql-uteis-para-gerir-o-sql-server\/"},"modified":"2022-12-22T00:00:00","modified_gmt":"2022-12-21T23:00:00","slug":"comandos-para-gerir-sql-server","status":"publish","type":"post","link":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/","title":{"rendered":"Comandos de Transact-SQL \u00fateis para gerir o SQL Server"},"content":{"rendered":"<p>Junte-se a n&oacute;s neste curto artigo e descubra v&aacute;rios&nbsp;<strong>comandos de SQL Server&nbsp;em Transact-SQL &uacute;teis para gerir o SQL Server<\/strong>, com os quais &eacute; poss&iacute;vel realizar tarefas b&aacute;sicas nas suas bases de dados.<\/p>\n<p>Antes de come&ccedil;ar, deve saber que este artigo &eacute; destinado a <strong>quem est&aacute; a come&ccedil;ar a trabalhar com Transact-SQL ou tem pouca experi&ecirc;ncia com esta linguagem<\/strong>. Se for o seu caso, o que contamos aqui pode ser de grande interesse para si, pois dar-lhe-&aacute; as no&ccedil;&otilde;es b&aacute;sicas de que precisa para operar com bases de dados SQL Server atrav&eacute;s de instru&ccedil;&otilde;es ou comandos de SQL Server.<\/p>\n<p>A primeira coisa que precisamos de saber &eacute; que uma <strong>instru&ccedil;&atilde;o SQL<\/strong> &eacute; basicamente uma <strong>unidade de trabalho at&oacute;mica<\/strong> (n&atilde;o divis&iacute;vel) que terminar&aacute; com &ecirc;xito, ou numa falha que provocar&aacute; um retorno (rollback).<\/p>\n<p>A pr&oacute;xima coisa que devemos saber &eacute; que <strong>todas as instru&ccedil;&otilde;es SQL s&atilde;o formadas n&atilde;o s&oacute; pelo comando<\/strong> em si, mas tamb&eacute;m por outras partes, como <strong>par&acirc;metros, vari&aacute;veis, etc.<\/strong><\/p>\n<p><strong>NOTA:<\/strong> <em>Este artigo n&atilde;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&atilde;o abordamos todas as op&ccedil;&otilde;es poss&iacute;veis, mas damos uma vis&atilde;o geral sobre muitas delas.<\/em><\/p>\n<p>&nbsp;<\/p>\n<h2><strong>Tipos de instru&ccedil;&otilde;es: <\/strong><\/h2>\n<p>No SQL existem <strong>diferentes tipos de instru&ccedil;&otilde;es<\/strong>&nbsp;que permitem fazer coisas t&atilde;o d&iacute;spares como definir, manipular ou extrair dados. Normalmente existem tr&ecirc;s tipos de instru&ccedil;&otilde;es: DDL, DML e DCL, mas na realidade existem tamb&eacute;m TCL e DQL.<\/p>\n<p>Vamos falar sobre todos estes tipos em maior ou menor grau.<\/p>\n<p>Os tipos de instru&ccedil;&otilde;es existentes s&atilde;o:<\/p>\n<ul>\n<li><strong>DDL<\/strong>: instru&ccedil;&otilde;es da&nbsp;<strong>linguagem de defini&ccedil;&atilde;o de dados<\/strong> (Data Definition Language).<\/li>\n<li><strong>DML<\/strong>: instru&ccedil;&otilde;es da&nbsp;<strong>linguagem&nbsp;<\/strong><strong>de manipula&ccedil;&atilde;o de dados<\/strong>&nbsp;(Data Manipulation Language).<\/li>\n<li><strong>DCL<\/strong>: instru&ccedil;&otilde;es da&nbsp;<strong>linguagem<\/strong><strong>&nbsp;de controlo de dados<\/strong>&nbsp;(Data Control Language).<\/li>\n<li><strong>TCL<\/strong>:&nbsp;instru&ccedil;&otilde;es da&nbsp;<strong>linguagem<\/strong><strong>&nbsp;de controlo de transa&ccedil;&otilde;es<\/strong>&nbsp;(Transactional Control Language).<\/li>\n<li><strong>DQL<\/strong>: instru&ccedil;&otilde;es da&nbsp;<strong>linguagem&nbsp;<\/strong><strong>de consulta de dados<\/strong>&nbsp;(Data Query Language).<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Neste ponto, como n&atilde;o poderia deixar de ser, vamos falar sobre cada um destes tipos de instru&ccedil;&otilde;es da linguagem SQL para conhec&ecirc;-los. Para cada um dos tipos, haver&aacute; uma breve descri&ccedil;&atilde;o dos comandos com os seus usos, sintaxe e exemplos.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>DDL (Data Definition Language):<\/strong><\/h3>\n<p>Os <strong>comandos de linguagem de defini&ccedil;&atilde;o de dados<\/strong>, comummente conhecidos como DDL, s&atilde;o usados &#8203;&#8203;para criar e modificar a estrutura dos objetos da base de dados.<\/p>\n<p>Os comandos deste tipo que podemos encontrar s&atilde;o:<\/p>\n<ul>\n<li><strong>CREATE<\/strong>:&nbsp;este comando permite criar objetos numa base de dados.<\/li>\n<li><strong>ALTER<\/strong>:&nbsp;este comando permite alterar objetos em bases de dados.<\/li>\n<li><strong>DROP<\/strong>:&nbsp;este comando permite eliminar objetos de bases de dados.<\/li>\n<li><strong>TRUNCATE<\/strong>:&nbsp;este comando remove todos os registos de uma tabela e redefine a identidade da tabela para o valor inicial, ou seja, faz uma esp&eacute;cie de &ldquo;reset&rdquo;.<\/li>\n<\/ul>\n<p><strong>&nbsp;<\/strong><\/p>\n<p>Agora vejamos com mais detalhe cada uma destas instru&ccedil;&otilde;es.<\/p>\n<p>&nbsp;<\/p>\n<h4><strong>CREATE: <\/strong><\/h4>\n<p>O comando <strong>CREATE<\/strong> &eacute; utilizado para <strong>criar objetos no SQL<\/strong>, possibilitando a cria&ccedil;&atilde;o de bases de dados, tabelas, etc.<\/p>\n<p>Normalmente iremos trabalhar com a cria&ccedil;&atilde;o de tabelas dentro de bases de dados existentes, podendo atribuir uma infinidade de propriedades, campos, tipos de dados, etc.<\/p>\n<p>A sintaxe reduzida para CREATE TABLE pode ser assim:<\/p>\n<p><em>CREATE TABLE &lt;TableName&gt;<\/em><br \/>\n<em>( { &lt;column_definition&gt; } [ ,&hellip; n ] );<\/em><\/p>\n<p>Um exemplo simples de cria&ccedil;&atilde;o de base de dados poderia ser o seguinte:<\/p>\n<p><em>CREATE TABLE Clientes <\/em><br \/>\n<em>(<\/em><br \/>\n<em>ID smallint NOT NULL PRIMARY KEY<\/em><br \/>\n<em>Nome nmarchar(50)<\/em><br \/>\n<em>Morada nmarchar(200)<\/em><br \/>\n<em>Telefone int<\/em><br \/>\n<em>Email nmarchar(40)<\/em><br \/>\n<em>Contacto nmarchar(40)<\/em><br \/>\n<em>Conta int NOT NULL<\/em><br \/>\n<em>);<\/em><\/p>\n<p>No caso de cria&ccedil;&atilde;o de bases de dados, ser&aacute; utilizada uma sintaxe que deve incluir um destino, tamanhos, etc.<\/p>\n<p>&nbsp;<\/p>\n<h4><strong>ALTER: <\/strong><\/h4>\n<p>Como vimos, o comando CREATE permite a <strong>cria&ccedil;&atilde;o de objetos numa base de dados<\/strong> ou mesmo a <strong>cria&ccedil;&atilde;o da pr&oacute;pria base de dados. <\/strong>J&aacute;&nbsp;o comando ALTER possibilita a sua modifica&ccedil;&atilde;o (altera&ccedil;&atilde;o). Ou seja, permite alterar a configura&ccedil;&atilde;o da tabela, adicionar e eliminar colunas, ou criar restri&ccedil;&otilde;es.<\/p>\n<p>O mais comum ser&aacute; trabalhar com ALTER TABLE, que nos permite modificar as caracter&iacute;sticas das tabelas previamente criadas.<\/p>\n<p>No caso do ALTER TABLE, devemos mencionar que a sintaxe ser&aacute; diferente conforme sejam tabelas baseadas em disco ou baseadas em mem&oacute;ria.<\/p>\n<p>&nbsp;<\/p>\n<h4><strong>DROP: <\/strong><\/h4>\n<p>O comando DROP permite <strong>eliminar diferentes objetos das bases de dados<\/strong>, como as pr&oacute;prias bases de dados, tabelas, vistas, etc. O comando DROP TABLE elimina tanto a configura&ccedil;&atilde;o da tabela como os dados nela contidos, as restri&ccedil;&otilde;es, etc.<\/p>\n<p><strong>NOTA:&nbsp;<\/strong><em>As vistas e procedimentos de uma tabela devem ser eliminados explicitamente com o comando DROP VIEW ou DROP PROCEDURE.<\/em><\/p>\n<p>A sintaxe deste comando para eliminar uma tabela ser&aacute;:<\/p>\n<p><em>DROP TABLE [IF EXISTS] &lt;TableName&gt;;<\/em><\/p>\n<p>Um exemplo de uso &eacute;:<\/p>\n<p><em>DROP TABLE IF EXISTS Clientes;<\/em><\/p>\n<p><strong>&nbsp;<\/strong><\/p>\n<h4><strong>TRUNCATE: <\/strong><\/h4>\n<p>A instru&ccedil;&atilde;o TRUNCATE <strong>elimina todas as linhas de uma tabela<\/strong> ou as parti&ccedil;&otilde;es especificadas de uma tabela, fazendo assim uma elimina&ccedil;&atilde;o de todas as linhas uma a uma.<\/p>\n<p>O comando TRUNCATE TABLE &eacute; muito semelhante ao comando DELETE quando n&atilde;o se usa a cl&aacute;usula de modifica&ccedil;&atilde;o WHERE. A vantagem do TRUNCATE TABLE &eacute; que &eacute; muito mais r&aacute;pido e leve, ou seja, envolve o uso de menos recursos.<\/p>\n<p>A sintaxe do TRUNCATE &eacute;:<\/p>\n<p><em>TRUNCATE TABLE &lt;TableName&gt;;<\/em><\/p>\n<p>Um exemplo de uso &eacute;:<\/p>\n<p><em>TRUNCATE TABLE Clientes;<\/em><\/p>\n<p><strong>&nbsp;<\/strong><\/p>\n<h3><strong>DML (Data Manipulation Language):<\/strong><\/h3>\n<p>Os <strong>comandos de linguagem de manipula&ccedil;&atilde;o de dados<\/strong>&nbsp;permitem recuperar, armazenar, modificar, eliminar, inserir e atualizar os dados que preenchem a nossa base de dados.<\/p>\n<p>Os comandos mais importantes s&atilde;o:<\/p>\n<ul>\n<li><strong>SELECT<\/strong>:&nbsp;permite recuperar os dados de uma tabela e tamb&eacute;m selecionar as partes de qualquer tabela atrav&eacute;s do uso de filtros e outras op&ccedil;&otilde;es.<\/li>\n<li><strong>INSERT<\/strong>:&nbsp;permite a inser&ccedil;&atilde;o de novos dados numa tabela existente, tanto para o seu preenchimento como para a adi&ccedil;&atilde;o de novos registos numa tabela j&aacute; preenchida.<\/li>\n<li><strong>UPDATE<\/strong>:&nbsp;permite atualizar os dados existentes numa tabela j&aacute; populada.<\/li>\n<li><strong>DELETE<\/strong>:&nbsp;permite eliminar todos os registos de uma tabela existente.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Vamos falar sobre cada um destes comandos de SQL Server (instru&ccedil;&otilde;es) para que o leitor possa dar os primeiros passos com eles.<\/p>\n<p>&nbsp;<\/p>\n<h4><strong>SELECT: <\/strong><\/h4>\n<p>O comando SELECT &eacute; o mais utilizado no mundo do SQL, pois &eacute; a instru&ccedil;&atilde;o utilizada para <strong>extrair informa&ccedil;&otilde;es dos dados armazenados<\/strong> na base de dados.<\/p>\n<p>A instru&ccedil;&atilde;o SELECT, sendo uma consulta, permite apenas exibir as entradas ou campos que nos interessam, e as formas de o fazer s&atilde;o diferentes para cada tipo.<\/p>\n<p>A sintaxa do comando SELECT tem a forma seguinte:<\/p>\n<p><em>SELECT &lt;Options&gt; FROM &lt;TableName&gt;;<\/em><\/p>\n<p>Um exemplo disto &eacute;:<\/p>\n<p><em>SELECT * FROM Clientes;<\/em><\/p>\n<p>Por um lado, podemos consultar todos os campos (colunas) da tabela com o &laquo;SELECT *&raquo;, que mostrar&aacute; todas as colunas contidas na tabela ou, se quisermos, ser&aacute; poss&iacute;vel filtrar apenas as colunas que nos interessam, utilizando os nomes das colunas separados por v&iacute;rgulas (,).<\/p>\n<p>Um exemplo disto &eacute;:<\/p>\n<p><em>SELECT ID, Nome, Contacto FROM Clientes;&nbsp; <\/em><\/p>\n<p>Por outro lado, podemos usar a cl&aacute;usula WHERE, que permite filtrar para mostrar apenas os campos que cumprem um determinado crit&eacute;rio, como os clientes de um determinado setor.<\/p>\n<p>A sintaxe do comando SELECT com a cl&aacute;usula WHERE tem a forma seguinte:<\/p>\n<p><em>SELECT &lt;Options&gt; FROM &lt;TableName&gt;<br \/>\nWHERE &lt;Conditions&gt;;<\/em><\/p>\n<p>Um exemplo disto &eacute;:<\/p>\n<p><em>SELECT ID, Nome, Contacto FROM Clientes<br \/>\nWHERE Sector = &lsquo;Reseller&rsquo;;<\/em><\/p>\n<p><strong>NOTA:<\/strong> <em>Como o SELECT &eacute; a instru&ccedil;&atilde;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&ccedil;&otilde;es e in&uacute;meros exemplos.<\/em><\/p>\n<p>&nbsp;<\/p>\n<h4><strong>INSERT: <\/strong><\/h4>\n<p>A instru&ccedil;&atilde;o INSERT permite <strong>carregar dados numa tabela<\/strong> e adicionar informa&ccedil;&otilde;es a linhas adicionais existentes.<\/p>\n<p>A sintaxe deste comando &eacute; a seguinte:<\/p>\n<p><em>INSERT INTO &lt;TableName&gt; [(column1, column2,&hellip;columnN)]&nbsp;&nbsp; <\/em><br \/>\n<em>VALUES (value1, value2,&hellip;valueN);<\/em><\/p>\n<p>Os campos &laquo;columnX&raquo; referem-se &agrave;s colunas nas quais os dados ser&atilde;o inseridos e os &laquo;valueX&raquo; referem-se aos dados que queremos carregar nas respetivas colunas.<\/p>\n<p>Um exemplo de INSERT pode ser assim:<\/p>\n<p><em>INSERT INTO Clientes (ID, Nome, Morada, Telefone, Email, Contacto, Conta) <\/em><br \/>\n<em>VALUES (723, Jotelulu, Plaza Pablo Ruiz Picasso 28020 Madrid, 911333712, Manuel Rodrigues, 723723723723);<\/em><\/p>\n<p>Caso sejam inseridos dados em todos os campos, n&atilde;o ser&aacute; necess&aacute;rio especificar o nome do campo, podendo ser utilizada a seguinte sintaxe simplificada:<\/p>\n<p><em>INSERT INTO &lt;TableName&gt;<br \/>\nVALUES (value1, value2, &hellip;, valueN);<\/em><\/p>\n<p>Um exemplo disto seria:<\/p>\n<p><em>INSERT INTO Clientes<br \/>\nVALUES (723, Jotelulu, Plaza Pablo Ruiz Picasso 28020 Madrid, 911333712, Manuel Rodrigues, 723723723723);<\/em><\/p>\n<p><strong>&nbsp;<\/strong><\/p>\n<h4><strong>UPDATE: <\/strong><\/h4>\n<p>Como dissemos anteriormente, o comando UPDATE permite fazer <strong>atualiza&ccedil;&otilde;es ou altera&ccedil;&otilde;es dentro de uma tabela<\/strong>, substituindo ou alterando os dados existentes.<\/p>\n<p>Este comando funciona com base numa condi&ccedil;&atilde;o definida pela cl&aacute;usula WHERE. Uma vez criado o filtro, usamos a cl&aacute;usula SET para indicar os dados a modificar.<\/p>\n<p>O comando UPDATE pode ser muito destrutivo se n&atilde;o for usado com cuidado. Geralmente &eacute; usado juntamente com a cl&aacute;usula WHERE para filtrar e selecionar as linhas que queremos alterar. Se n&atilde;o for devidamente filtrado ou se for ignorado, pode destruir todos os dados.<\/p>\n<p>A sintaxe do comando UPDATE &eacute; a seguinte:<\/p>\n<p><em>UPDATE &lt;TableName&gt;<br \/>\nSET<br \/>\n&lt;ColumnName&gt; = { expression | DEFAULT | NULL }<br \/>\n{,&hellip;n}<br \/>\nWHERE &lt;search_conditions&gt;;<\/em><\/p>\n<p>Um exemplo deste comando &eacute;:<\/p>\n<p><em>UPDATE Clientes<br \/>\nSET Contacto = &lsquo;Manuel Rodrigues&rsquo;<br \/>\nWHERE ID = 73;<\/em><\/p>\n<p>&nbsp;<\/p>\n<h4><strong>DELETE: <\/strong><\/h4>\n<p>O comando DELETE permite <strong>eliminar um conjunto de linhas<\/strong>, selecionadas <strong>atrav&eacute;s de uma cl&aacute;usula WHERE<\/strong>, que estabelece uma condi&ccedil;&atilde;o para a&nbsp;sele&ccedil;&atilde;o correta. Se a cl&aacute;usula WHERE n&atilde;o for definida, todas as entradas na tabela ser&atilde;o removidas, deixando a tabela em branco.<\/p>\n<p>Devemos dizer que a cl&aacute;usula WHERE de uma instru&ccedil;&atilde;o DELETE tem a mesma estrutura que as cl&aacute;usulas WHERE usadas nos comandos SELECT.<\/p>\n<p>O c&oacute;digo da instru&ccedil;&atilde;o caso queira excluir a tabela inteira seria:<\/p>\n<p><em>DELETE [FROM] &lt;TableName&gt;;<\/em><\/p>\n<p>E se quisermos eliminar apenas certos elementos da tabela:<\/p>\n<p><em>DELETE [FROM] &lt;TableName&gt;<br \/>\nWHERE &lt;Conditions&gt;; <\/em><\/p>\n<p>Um exemplo de uso da instru&ccedil;&atilde;o DELETE poderia ser:<\/p>\n<p><em>DELETE FROM Clientes<br \/>\nWHERE ID = 123; <\/em><\/p>\n<p><strong>&nbsp;<\/strong><\/p>\n<h3><strong>DCL (Data Control Language):<\/strong><\/h3>\n<p>Os <strong>comandos de linguagem de controlo de dados<\/strong>, tamb&eacute;m conhecidos como DCL, s&atilde;o usados para gest&atilde;o de acessos. Estes comandos de SQL Server permitem criar fun&ccedil;&otilde;es, atribuir permiss&otilde;es e integridade referencial. Atrav&eacute;s deste controlo de acesso &agrave; base de dados podemos proteg&ecirc;-la.<\/p>\n<p>Os comandos DCL dispon&iacute;veis s&atilde;o:<\/p>\n<ul>\n<li><strong>GRANT<\/strong>:&nbsp;este comando permite conceder privil&eacute;gios de acesso &agrave;&nbsp;base de dados.<\/li>\n<li><strong>REVOKE<\/strong>:&nbsp;este comando permite retirar ou revogar os privil&eacute;gios de acesso de um utilizador ao banco de dados (que foram concedidos anteriormente com o comando GRANT).<\/li>\n<li><strong>DENY<\/strong>:&nbsp;este comando permite negar privil&eacute;gios de acesso &agrave; base de dados. &Eacute;, por assim dizer, a ant&iacute;tese do comando GRANT.<\/li>\n<\/ul>\n<p><strong>&nbsp;<\/strong><\/p>\n<h4><strong>GRANT:<\/strong><\/h4>\n<p>O comando GRANT de Transact-SQL <strong>define as condi&ccedil;&otilde;es de acesso a um elemento atrav&eacute;s do uso de permiss&otilde;es de acesso\/seguran&ccedil;a<\/strong>. Concedem-se ou atribuem-se permiss&otilde;es a um elemento espec&iacute;fico com uma estrutura semelhante a:<\/p>\n<p><em>GRANT permiss&atilde;o ON objeto TO utilizador<\/em><\/p>\n<p>A sintaxe do comando GRANT &eacute;:<\/p>\n<p><em>GRANT { ALL [ PRIVILEGES ] }<br \/>\npermission [ ( columnX)<br \/>\n[ ON [ class :: ] securable ] TO principal [ ,&hellip;n ]<br \/>\n[ WITH GRANT OPTION ] [ AS principal ] ;<\/em><\/p>\n<p>As classes s&atilde;o:<\/p>\n<ul>\n<li>LOGIN<\/li>\n<li>DATABASE<\/li>\n<li>OBJECT<\/li>\n<li>ROLE<\/li>\n<li>SCHEMA<\/li>\n<li>USER<\/li>\n<\/ul>\n<p>Um exemplo de uso de GRANT pode ser:<\/p>\n<p><em>GRANT EXECUTE ON Cloud TO jioller;<\/em><\/p>\n<p><strong>&nbsp;<\/strong><\/p>\n<h4><strong>REVOKE: <\/strong><\/h4>\n<p>O comando REVOKE foi criado para <strong>eliminar ou revogar permiss&otilde;es<\/strong> que foram atribu&iacute;das anteriormente com GRANT.<\/p>\n<p>A sintaxe do comando &eacute;:<\/p>\n<p><em>REVOKE [ GRANT OPTION FOR ]<br \/>\n{<br \/>\n[ ALL [ PRIVILEGES ] ]<br \/>\npermission [ ( columnX<br \/>\n}<br \/>\n[ ON [ class :: ] securable ]<br \/>\n{ TO | FROM } principalX<br \/>\n[ CASCADE] [ AS principal ];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/em><\/p>\n<p>Um exemplo de revoga&ccedil;&atilde;o de acesso pode assumir esta forma:<\/p>\n<p><em>REVOKE SELECT ON SCHEMA :: Clientes TO Vendedores;<\/em><\/p>\n<p><strong>&nbsp;<\/strong><\/p>\n<h3><strong>TCL (Transactional Control Language):<\/strong><\/h3>\n<p>Os <strong>comandos de linguagem de controlo transacional<\/strong>, geralmente conhecidos como TCL, s&atilde;o comandos de SQL Server usados para gerir as diferentes transa&ccedil;&otilde;es que ocorrem dentro de uma base de dados.<\/p>\n<p>Os comandos de TCL s&atilde;o:<\/p>\n<ul>\n<li><strong>COMMIT<\/strong>:&nbsp;&eacute; o comando utilizado para guardar o trabalho transacional feito at&eacute; ao momento.<\/li>\n<li><strong>ROLLBACK<\/strong>:&nbsp;&eacute; o comando que permite a restaura&ccedil;&atilde;o da base de dados, levando-a ao estado anterior &agrave; execu&ccedil;&atilde;o do &uacute;ltimo script, ou seja, at&eacute; ao &uacute;ltimo comando COMMIT nas transa&ccedil;&otilde;es.<\/li>\n<li><strong>SAVE TRANSACTION<\/strong>:&nbsp;&eacute; o comando usado para estabelecer um ponto de backup (c&oacute;pia) dentro de uma transa&ccedil;&atilde;o.<\/li>\n<\/ul>\n<p>Vamos agora ver como funciona cada um destes comandos.<\/p>\n<p>&nbsp;<\/p>\n<h4><strong>COMMIT:<\/strong><\/h4>\n<p>O comando COMMIT <strong>marca o fim de uma transa&ccedil;&atilde;o quando esta &eacute; bem-sucedida<\/strong>, expl&iacute;cita ou implicitamente. Quando se executa o COMMIT, todas as modifica&ccedil;&otilde;es de dados que estavam a ser executadas naquela transa&ccedil;&atilde;o at&oacute;mica tornam-se permanentes na base de dados. Quando estes dados se tornam permanentes, os recursos que estavam a suportar o hist&oacute;rico de transa&ccedil;&otilde;es s&atilde;o libertados.<\/p>\n<p>A sintaxe do comando COMMIT &eacute; mostrada abaixo:<\/p>\n<p><em>COMMIT TRANSACTION [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ];&nbsp; <\/em><\/p>\n<p>E um exemplo de uso da instru&ccedil;&atilde;o COMMIT seria:<\/p>\n<p><em>COMMIT TRANSACTION;<\/em><\/p>\n<p>Nesta situa&ccedil;&atilde;o ver&iacute;amos toda a transa&ccedil;&atilde;o do princ&iacute;pio ao fim, sempre que seja correta:<\/p>\n<p><em>BEGIN TRANSACTION;<br \/>\nDELETE FROM Clientes WHERE ID = 13;<br \/>\nCOMMIT TRANSACTION;<\/em><\/p>\n<p>&nbsp;<\/p>\n<h4><strong>ROLLBACK: <\/strong><\/h4>\n<p>O comando ROLLBACK &eacute; basicamente <strong>a ant&iacute;tese do COMMIT<\/strong>. Se o COMMIT n&atilde;o for executado, ou melhor, se houver problemas na execu&ccedil;&atilde;o dos comandos da transa&ccedil;&atilde;o, esta deve ser revertida.<\/p>\n<p><span style=\"color: #000000\"><strong>O comando usado para reverter as altera&ccedil;&otilde;es &eacute; ROLLBACK<\/strong>, que reverte uma transa&ccedil;&atilde;o expl&iacute;cita ou impl&iacute;cita para o in&iacute;cio dessa transa&ccedil;&atilde;o ou para um ponto de verifica&ccedil;&atilde;o dentro da transa&ccedil;&atilde;o.<\/span><\/p>\n<p>A instru&ccedil;&atilde;o ROLLBACK apaga todas as modifica&ccedil;&otilde;es de dados feitas at&eacute; ao ponto ao qual retorna, libertando tamb&eacute;m os recursos mantidos pela transa&ccedil;&atilde;o.<\/p>\n<p>&Eacute; importante observar que as altera&ccedil;&otilde;es em vari&aacute;veis locais ou vari&aacute;veis de tabela n&atilde;o s&atilde;o inclu&iacute;das.<\/p>\n<p>A sintaxe do comando ROLLBACK &eacute; mostrada abaixo:<\/p>\n<p><em>ROLLBACK TRANSACTION [ transaction_name | @tran_name_variable ];&nbsp; <\/em><\/p>\n<p>Um exemplo de uso da instru&ccedil;&atilde;o ROLLBACK &eacute;:<\/p>\n<p><em>ROLLBACK TRANSACTION;<\/em><\/p>\n<p>E neste caso ver&iacute;amos toda a transa&ccedil;&atilde;o do in&iacute;cio ao fim:<\/p>\n<p><em>BEGIN TRANSACTION @TransactionName<br \/>\nINSERT INTO ValueTable VALUES(1);<br \/>\nROLLBACK TRANNSACTION @TransactionName;<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>Com isto, terminamos a primeira revis&atilde;o de comandos de SQL Server. Podemos desde j&aacute; dizer que n&atilde;o ser&aacute; a &uacute;ltima, mas a primeira de muitas, em que abordaremos novos comandos e at&eacute; alguns destes com maior profundidade.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>Conclus&otilde;es: <\/strong><\/h2>\n<p>Ao longo deste artigo apresentamos alguns <strong>comandos de SQL Server,&nbsp;instru&ccedil;&otilde;es de Transact-SQL &uacute;teis<\/strong>, que podemos utilizar para <strong>criar<\/strong>, <strong>modificar<\/strong> ou <strong>eliminar<\/strong> objetos no SQL Server, com uma explica&ccedil;&atilde;o b&aacute;sica, a sua sintaxe e um exemplo de uso.<\/p>\n<p>Esperamos que esta breve compila&ccedil;&atilde;o sirva como um primeiro contacto para quem quer come&ccedil;ar a aprender linguagem SQL para Microsoft SQL Server.<\/p>\n<p>Para quem quer continuar a aprender SQL e SQL Server, recomendamos a visita ao seguinte link, onde pode ler <a href=\"https:\/\/jotelulu.com\/pt-pt?s=sql\">artigos relacionados com esta tecnologia<\/a>.<\/p>\n<p>Tamb&eacute;m pode obter mais informa&ccedil;&otilde;es com uma consulta &agrave; documenta&ccedil;&atilde;o no&nbsp;<a href=\"https:\/\/learn.microsoft.com\/pt-pt\/sql\/t-sql\/language-reference?view=sql-server-ver16\">Microsoft Learn<\/a>.<\/p>\n<p>Obrigado por acompanhar-nos!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Junte-se a n&oacute;s neste curto artigo e descubra v&aacute;rios&nbsp;comandos de SQL Server&nbsp;em Transact-SQL &uacute;teis para gerir o SQL Server, com os quais &eacute; poss&iacute;vel realizar tarefas b&aacute;sicas nas suas bases de dados. Antes de come&ccedil;ar, deve saber que este artigo &eacute; destinado a quem est&aacute; a come&ccedil;ar a trabalhar com Transact-SQL ou tem pouca experi&ecirc;ncia [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":16913,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[13],"tags":[],"class_list":["post-49050","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-y-sistemas"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Comandos de Transact-SQL \u00fateis para gerir o SQL Server - Jotelulu<\/title>\n<meta name=\"description\" content=\"Descubra os comandos Transact-SQL mais \u00fateis para gerir o SQL Server e com os quais executar tarefas b\u00e1sicas nas suas bases de dados.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comandos de Transact-SQL \u00fateis para gerir o SQL Server - Jotelulu\" \/>\n<meta property=\"og:description\" content=\"Descubra os comandos Transact-SQL mais \u00fateis para gerir o SQL Server e com os quais executar tarefas b\u00e1sicas nas suas bases de dados.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/\" \/>\n<meta property=\"og:site_name\" content=\"Jotelulu\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-21T23:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/jotelulu.com\/wp-content\/uploads\/2022\/12\/SQL-comandos-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1210\" \/>\n\t<meta property=\"og:image:height\" content=\"729\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Juan Ignacio Oller Aznar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Juan Ignacio Oller Aznar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/\"},\"author\":{\"name\":\"Juan Ignacio Oller Aznar\",\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/#\\\/schema\\\/person\\\/2ae97818cae086c48f108cd74234aca9\"},\"headline\":\"Comandos de Transact-SQL \u00fateis para gerir o SQL Server\",\"datePublished\":\"2022-12-21T23:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/\"},\"wordCount\":2957,\"image\":{\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jotelulu.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/SQL-comandos-1.jpg\",\"articleSection\":[\"Cloud y sistemas\"],\"inLanguage\":\"pt-PT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/\",\"url\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/\",\"name\":\"Comandos de Transact-SQL \u00fateis para gerir o SQL Server - Jotelulu\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jotelulu.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/SQL-comandos-1.jpg\",\"datePublished\":\"2022-12-21T23:00:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/#\\\/schema\\\/person\\\/2ae97818cae086c48f108cd74234aca9\"},\"description\":\"Descubra os comandos Transact-SQL mais \u00fateis para gerir o SQL Server e com os quais executar tarefas b\u00e1sicas nas suas bases de dados.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/#primaryimage\",\"url\":\"https:\\\/\\\/jotelulu.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/SQL-comandos-1.jpg\",\"contentUrl\":\"https:\\\/\\\/jotelulu.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/SQL-comandos-1.jpg\",\"width\":1210,\"height\":729,\"caption\":\"Imagen destacada de SQL Comandos\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/blog\\\/comandos-para-gerir-sql-server\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Comandos de Transact-SQL \u00fateis para gerir o SQL Server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/#website\",\"url\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/\",\"name\":\"Jotelulu\",\"description\":\"Cloud Paradise for Tech Companies\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/#\\\/schema\\\/person\\\/2ae97818cae086c48f108cd74234aca9\",\"name\":\"Juan Ignacio Oller Aznar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/87efd80399b2c40a1d78dd5cee4e788d3f6c29d33e3b67bcfbc6abbf91d0fdcf?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/87efd80399b2c40a1d78dd5cee4e788d3f6c29d33e3b67bcfbc6abbf91d0fdcf?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/87efd80399b2c40a1d78dd5cee4e788d3f6c29d33e3b67bcfbc6abbf91d0fdcf?s=96&d=mm&r=g\",\"caption\":\"Juan Ignacio Oller Aznar\"},\"url\":\"https:\\\/\\\/jotelulu.com\\\/pt-pt\\\/author\\\/juanignaciooller\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Comandos de Transact-SQL \u00fateis para gerir o SQL Server - Jotelulu","description":"Descubra os comandos Transact-SQL mais \u00fateis para gerir o SQL Server e com os quais executar tarefas b\u00e1sicas nas suas bases de dados.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/","og_locale":"pt_PT","og_type":"article","og_title":"Comandos de Transact-SQL \u00fateis para gerir o SQL Server - Jotelulu","og_description":"Descubra os comandos Transact-SQL mais \u00fateis para gerir o SQL Server e com os quais executar tarefas b\u00e1sicas nas suas bases de dados.","og_url":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/","og_site_name":"Jotelulu","article_published_time":"2022-12-21T23:00:00+00:00","og_image":[{"width":1210,"height":729,"url":"https:\/\/jotelulu.com\/wp-content\/uploads\/2022\/12\/SQL-comandos-1.jpg","type":"image\/jpeg"}],"author":"Juan Ignacio Oller Aznar","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Juan Ignacio Oller Aznar","Tempo estimado de leitura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/#article","isPartOf":{"@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/"},"author":{"name":"Juan Ignacio Oller Aznar","@id":"https:\/\/jotelulu.com\/pt-pt\/#\/schema\/person\/2ae97818cae086c48f108cd74234aca9"},"headline":"Comandos de Transact-SQL \u00fateis para gerir o SQL Server","datePublished":"2022-12-21T23:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/"},"wordCount":2957,"image":{"@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/#primaryimage"},"thumbnailUrl":"https:\/\/jotelulu.com\/wp-content\/uploads\/2022\/12\/SQL-comandos-1.jpg","articleSection":["Cloud y sistemas"],"inLanguage":"pt-PT"},{"@type":"WebPage","@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/","url":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/","name":"Comandos de Transact-SQL \u00fateis para gerir o SQL Server - Jotelulu","isPartOf":{"@id":"https:\/\/jotelulu.com\/pt-pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/#primaryimage"},"image":{"@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/#primaryimage"},"thumbnailUrl":"https:\/\/jotelulu.com\/wp-content\/uploads\/2022\/12\/SQL-comandos-1.jpg","datePublished":"2022-12-21T23:00:00+00:00","author":{"@id":"https:\/\/jotelulu.com\/pt-pt\/#\/schema\/person\/2ae97818cae086c48f108cd74234aca9"},"description":"Descubra os comandos Transact-SQL mais \u00fateis para gerir o SQL Server e com os quais executar tarefas b\u00e1sicas nas suas bases de dados.","breadcrumb":{"@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/#primaryimage","url":"https:\/\/jotelulu.com\/wp-content\/uploads\/2022\/12\/SQL-comandos-1.jpg","contentUrl":"https:\/\/jotelulu.com\/wp-content\/uploads\/2022\/12\/SQL-comandos-1.jpg","width":1210,"height":729,"caption":"Imagen destacada de SQL Comandos"},{"@type":"BreadcrumbList","@id":"https:\/\/jotelulu.com\/pt-pt\/blog\/comandos-para-gerir-sql-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/jotelulu.com\/pt-pt\/"},{"@type":"ListItem","position":2,"name":"Comandos de Transact-SQL \u00fateis para gerir o SQL Server"}]},{"@type":"WebSite","@id":"https:\/\/jotelulu.com\/pt-pt\/#website","url":"https:\/\/jotelulu.com\/pt-pt\/","name":"Jotelulu","description":"Cloud Paradise for Tech Companies","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jotelulu.com\/pt-pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Person","@id":"https:\/\/jotelulu.com\/pt-pt\/#\/schema\/person\/2ae97818cae086c48f108cd74234aca9","name":"Juan Ignacio Oller Aznar","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/secure.gravatar.com\/avatar\/87efd80399b2c40a1d78dd5cee4e788d3f6c29d33e3b67bcfbc6abbf91d0fdcf?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/87efd80399b2c40a1d78dd5cee4e788d3f6c29d33e3b67bcfbc6abbf91d0fdcf?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/87efd80399b2c40a1d78dd5cee4e788d3f6c29d33e3b67bcfbc6abbf91d0fdcf?s=96&d=mm&r=g","caption":"Juan Ignacio Oller Aznar"},"url":"https:\/\/jotelulu.com\/pt-pt\/author\/juanignaciooller\/"}]}},"_links":{"self":[{"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/posts\/49050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=49050"}],"version-history":[{"count":0,"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/posts\/49050\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/media\/16913"}],"wp:attachment":[{"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=49050"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=49050"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jotelulu.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=49050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}