Escolar Documentos
Profissional Documentos
Cultura Documentos
UFCD 5083
Designação da UFCD
Formação
Duração (horas)
Direitos Reservados
Este manual é da autoria do Formador referido, o qual assume
todos os direitos de autor relativos aos conteúdos aqui
desenvolvidos.
Foi entregue à Sigway para sua utilização como Recurso
Técnico-Pedagógico no âmbito desta formação.
Dezembro de 2023
PO.01-MN.02.00
ÍNDICE
1 Objetivos ...................................................................................................................................... 3
2. Introdução ................................................................................................................................... 4
3. Criação, alteração e eliminação de tabelas e índices em SQL ................................................. 5
Criação de tabelas (comando CREATE TABLE) ............................................................................ 5
Criação de índices (comando CREATE INDEX) ............................................................................. 6
Eliminação de tabelas e índices (comandos DROP TABLE e DROP INDEX); ............................ 11
Atualização de dados ................................................................................................................... 12
Inserção de linhas (comando INSERT INTO) ............................................................................12
Alteração de valores nas linhas (comando UPDATE) .............................................................. 13
Eliminação de linhas (comando DELETE FROM) ..................................................................... 14
Conceito de transação (comandos COMMIT e ROLLBACK) ...................................................... 14
Privilégios e controlo de acessos (comandos GRANT e REVOKE) .............................................15
4. Bibliografia ................................................................................................................................ 17
Página 2 de 17
PO.01-MN.01.00
1 Objetivos
Página 3 de 17
PO.01-MN.01.00
2. Introdução
Página 4 de 17
PO.01-MN.01.00
3. Criação, alteração e eliminação de tabelas e índices em SQL
CREATE TABLE é o comando para criação da tabela e deve ser seguida pelo nome que
daremos à tabela. Dentro do comando, devemos definir os nomes dos campos de acordo com
a conveniência do banco de dados, e determinar o tipo de dado que poderá ser incluído neste
campo. Na seção abaixo Tipo de Dados estão especificados os tipos mais comuns
encontrados nos SGBDs. PRIMARY KEY define a chave primária da tabela, isto é, o campo
que serve como chave da tabela e que não pode ser repetido.
Se desejamos que um campo seja de preenchimento obrigatório, devemos inserir NOT NULL
na frente do campo determinado.
Autor VARCHAR(100),
AnoPublicacao INT,
Genero VARCHAR(50)
);
Página 5 de 17
PO.01-MN.01.00
Criação de índices (comando CREATE INDEX)
Para criar um índice numa tabela existente, utilize um comando CREATE INDEX. Um comando
CREATE INDEX tem a seguinte sintaxe:
O argumento DESC faz com que o índice seja criado em ordem descendente, o que pode ser
útil se executar frequentemente consultas que procuram valores de topo para o campo
indexado, ou que classificam o campo indexado em ordem descendente. Por padrão, um
índice é criado por ordem ascendente.
O argumento NUR SEM FAVOR FAZ COM QUE O Índice exija a entrada de um valor para o
campo indexado — ou seja, não são permitidos valores nulos.
Suponha que tem uma mesa chamada Cars com campos que armazenam o nome, ano, preço
e condição de carros usados que está a considerar para compra. Suponha também que a
mesa se tornou grande e que frequentemente inclui o campo do ano em consultas. Pode criar
um índice no campo Ano para ajudar as suas consultas a devolver os resultados mais
rapidamente, utilizando o seguinte procedimento:
Página 6 de 17
PO.01-MN.01.00
CRIAR ÍNDICE AnoIndex ON Cars (Ano)
Uma relação é um tipo de restrição que se refere aos valores de um campo ou combinação de
campos em outra tabela para determinar se um valor pode ser inserido no campo
constrangido ou na combinação de campos. Não se usa uma palavra-chave especial para
indicar que um constrangimento é uma relação.
Para criar uma restrição, utilize uma cláusula RESTRIÇÃO num comando CREATE TABLE ou
ALTER TABLE. Existem dois tipos de cláusulas RESTRIÇÃO: uma para criar uma restrição
num único campo, e outra para criar uma restrição em vários campos.
Uma cláusula restrição de um único campo segue imediatamente a definição do campo que
limita, e tem a seguinte sintaxe:
Página 7 de 17
PO.01-MN.01.00
No separador Design, no grupo Tipo de Consulta, clique na Definição de Dados.
Agora suponha que, passado algum tempo, note que há muitos valores semelhantes no
campo condição que devem ser os mesmos. Por exemplo, alguns dos carros têm um valor de
condição de pobre e outros têm um valor de mau.
Nota: Se quiser seguir os procedimentos restantes, adicione alguns dados falsos à tabela
Carros que criou nos passos anteriores.
Depois de limpar os valores para que sejam mais consistentes, pode criar uma tabela,
denominada CarCondition, com um campo, denominado Condição, que contém todos os
valores que pretende utilizar para o estado dos carros:
Página 8 de 17
PO.01-MN.01.00
No separador Estrutura, no grupo Resultados, clique em Executar.
Crie uma chave primária para a tabela utilizando uma declaração ALTER TABLE:
Para inserir os valores do campo Condição da tabela Carros na nova tabela CarCondition,
digite o seguinte SQL no separador de objeto de vista SQL:
Nota: A declaração do SQL neste passo é uma consulta Acrescentar. Ao contrário de uma
consulta de definição de dados, uma consulta de apêndice termina com um ponto e vírgula.
Para exigir que qualquer novo valor inserido no campo condição da tabela Carros corresponda
a um valor do campo Condição na tabela CarCondition, pode então criar uma relação entre
CarCondition e Cars no campo denominado Condição, utilizando o seguinte procedimento:
Página 9 de 17
PO.01-MN.01.00
No separador Estrutura, no grupo Resultados, clique em Executar.
Uma cláusula de restrição de vários campos só pode ser utilizada fora de uma cláusula de
definição de campo, e tem a seguinte sintaxe:
CONSTRAINT constraint_name
ALTER TABLE Cars ADD RESTRIÇÕES NoDupes EXCLUSIVO (nome, ano, condição, preço)
Página 10 de 17
PO.01-MN.01.00
Eliminação de tabelas e índices (comandos DROP TABLE e
DROP INDEX);
Remove um ou mais índices relacionais, espaciais, filtrados ou XML do banco de dados atual.
É possível descartar um índice clusterizado e mover a tabela resultante para outro grupo de
arquivos ou esquema de partição em uma única transação especificando a opção MOVE TO.
A instrução DROP INDEX não se aplica a índices criados definindo as restrições PRIMARY
KEY ou UNIQUE. Para remover a restrição e o índice correspondente, use ALTER TABLE com
a cláusula DROP CONSTRAINT.
-- Syntax for SQL Server (All options except filegroup and filestream apply to Azure SQL
Database.)
| <drop_backward_compatible_index> [ ,...n ]
<drop_relational_or_xml_or_spatial_index> ::=
index_name ON <object>
<drop_backward_compatible_index> ::=
[ owner_name. ] table_or_view_name.index_name
<object> ::=
{ database_name.schema_name.table_or_view_name | schema_name.table_or_view_name |
table_or_view_name }
<drop_clustered_index_option> ::=
{
MAXDOP = max_degree_of_parallelism
| ONLINE = { ON | OFF }
Página 11 de 17
PO.01-MN.01.00
| filegroup_name
| "default"
[ FILESTREAM_ON { partition_scheme_name
| filestream_filegroup_name
| "default" } ]
Atualização de dados
Inserção de linhas (comando INSERT INTO)
O comando SQL INSERT é utilizado para inserirmos dados em uma tabela. Entretanto, existem
diferentes formas de utilizar esse recurso. Confira quais são elas nos próximos tópicos.
O comando SQL INSERT INTO é utilizado para inserir dados em uma tabela. Para isso,
devemos indicar quais campos serão inseridos e seus valores correspondentes.
Página 12 de 17
PO.01-MN.01.00
Quando declaramos os campos da tabela na cláusula INSERT, podemos inserir apenas os
dados desejados e os que sejam obrigatórios. Além disso, não precisamos seguir a mesma
ordem em que os campos estão definidos no banco de dados. O importante é seguir a mesma
ordem apenas na disposição dos campos e valores na instrução SQL.
Quando utilizamos a sintaxe dessa forma, não precisamos informar o valor do ID, caso ele
tenha sido declarado para ser incrementado automaticamente. Falaremos mais sobre isso no
tópico com os exemplos práticos.
Perceba que, nessa sintaxe, não definimos os nomes de campos que serão inseridos. Isso
significa que precisamos inserir todos os registros que fazem parte da tabela e na ordem
existente no banco de dados.
Pessoa: utilizada para armazenar as informações de qualquer tipo de pessoa que tenha
alguma relação com a escola (professor, aluno, funcionário, por exemplo);
Além disso, ele faz parte do subconjunto SQL denominado como DML (Data Manipulation
Language), que agrupa os comandos utilizados para manipular as informações registradas na
base de dados.
Página 13 de 17
PO.01-MN.01.00
Qual a sintaxe do comando SQL UPDATE?
A sintaxe do comando UPDATE é bastante simples, observe:
UPDATE nome_da_tabela
SET nome_da_coluna1 = valor_da_coluna1, nome_da_coluna2 = valor_da_coluna2
WHERE condição;
A princípio, pode parecer um pouco confuso, mas vamos explicar detalhadamente para quê
servem cada uma dessas instruções presentes no comando.
Para remover linhas de uma tabela, use o comando DELETE. É possível usar o comando
DELETE para remover linhas específicas ou todas as linhas de uma tabela. Para excluir linhas,
especifique a tabela e uma condição de procura opcional (WHERE) que especifica quais linhas
excluir.
O BEGIN TRANSACTION indica onde ela deve começar, então os comando SQL a seguir
estarão dentro desta transação.
O COMMIT TRANSACTION indica o fim normal da transação, o que tiver de comando depois
já não fará parte desta transação. Neste momento tudo o que foi manipulado passa fazer parte
do banco de dados normalmente e operações diversas passam enxergar o que foi feito.
Página 14 de 17
PO.01-MN.01.00
Ao contrário do que muita gente acredita rollback no contexto de banco de dados não
significa reverter e sim voltar ao estado original. Um processo de reversão seria de
complicadíssimo à impossível. Um processo de descarte é simples e pode ser atômico.
A maioria dos comandos SQL são transacionais implicitamente, ou seja, ele por si só já é uma
transação. Você só precisa usar esses comandos citados quando precisa usar múltiplos
comandos e todos esses devam rodar atomicamente. Ou seja, eles funcionam como as
chaves de um código, eles criam um bloco. Na verdade está mais para o using do C# já que
há uma consequência garantida no final da execução.
Enquanto não dá o COMMIT essas inserções não constam de fato no banco de dados. Um
ROLLBACK descartaria tudo feito antes.
• Sintaxe
FROM {lista_usuários│PUBLIC}
determinados usuários
• Sintaxe
Página 15 de 17
PO.01-MN.01.00
TO {lista_usuários│PUBLIC}
[WITH GRANT OPTION]
Página 16 de 17
PO.01-MN.01.00
4. Bibliografia
https://support.microsoft.com/pt-pt/office/criar-ou-modificar-tabelas-ou-%C3%ADndices-
utilizando-uma-consulta-defini%C3%A7%C3%A3o-de-dados-d935e129-229b-48d8-9f2d-
1d4ee87f418e
https://www.w3bai.com/pt/sql/sql_drop.html#gsc.tab=0
https://learn.microsoft.com/pt-br/sql/t-sql/statements/drop-index-transact-sql?view=sql-
server-ver16
https://blog.betrybe.com/sql-insert/
https://blog.betrybe.com/sql-update/
https://www.ibm.com/docs/pt-br/psfa/7.1.0?topic=tables-delete-rows-from
https://pt.stackoverflow.com/questions/203669/o-que-s%C3%A3o-as-
transa%C3%A7%C3%B5es-begin-commit-e-rollback
http://wiki.icmc.usp.br/images/5/5f/SCC024120142_GrantRevoke.pdf
Página 17 de 17
PO.01-MN.01.00