Baixe o app para aproveitar ainda mais
Prévia do material em texto
SQL – Índices, Constraints e DML Prof. Me. Sirlon Thiago Índices • SGBDs u6lizam índices para eficiência na recuperação dos dados do BD • Índice é uma estrutura de dados • Armazenados valores e ponteiros organizados de forma ascendente ou descendente Índices • Possível localizar rapidamente as linhas de uma tabela nas quais o valor desejado está armazenado • U6lização de índices é transparente ao usuário do SGBD Índices - Comando • CREATE [UNIQUE] INDEX nome_indice ON nome_tabela (lista_de_colunas); • UNIQUE u6lizado quando não deve haver registros duplicados no índice • Um índice único é automa6camente criado quando uma coluna é definida como chave primária Índices - Exemplo • C r i a r u m í n d i c e c h a m a d o produto_desc_prod_idx sobre a coluna desc_prod da tabela produto. • CREATE INDEX produto_desc_prod_idx on produto (desc_prod); Índices - Exemplo • Cr ia r um índ i ce ún i co chamado cliente_nome_cli_idx sobre a coluna nome_cli da tabela cliente. • CREATE UNIQUE INDEX cliente_nome_cli_idx ON cliente (nome_cli); Índices - Exemplo • Cr ia r um índ i ce ún i co chamado pedido_num_ped_cd_vend_idx sobre as colunas num_ped e cd_vend da tabela pedido. • CREATE UNIQUE INDEX pedido_num_ped_cd_vend_idx on pedido (num_ped,cd_vend); Índices - Eliminando • Para eliminar um índice u6lizados o comando • DROP INDEX nome_indice; Índices - Exemplo • Eliminar os índices criados acima: • DROP INDEX produto_desc_prod_idx; • DROP INDEX cliente_nome_cli_idx; • DROP INDEX pedido_num_ped_cd_vend_idx; CONSTRAINTS Constraints • Restrição é semelhante a um índice • Possa ser u6lizada para estabelecer uma relação com uma outra tabela • Cláusula CONSTRAINT nas instruções ALTER TABLE e CREATE TABLE • Restrição em um campo único ou em mais de um campo Constraints • Tipos de Constraint: • CHECK – Verifica se os valores de uma coluna obedecem a uma restrição • NOT NULL – Garante que não hajam valores nulos em uma coluna • UNIQUE – Garante que os registros de uma coluna ou combinação de colunas sejam únicos Constraints • Tipos de Constraint: • PR IMARY KEY – Chave s p r imá r i a s , iden6ficadores únicos. Não nulas, sequenciais, auto incrementáveis. • FOREIGN KEY – Chaves estrangeiras. Ligação de uma tabela com outra. Constraints - Exemplo • Criar uma constraint que garanta a inserção de preços maiores que zero em uma tabela: CREATE TABLE produto ( id_produto integer, nome text, preco numeric CHECK (preco > 0) ); Constraints - Exemplo • Criar uma constraint que garanta que o preço com desconto seja sempre menor que o preço do produto: CREATE TABLE produto ( id_produto integer, nome text, preco numeric CHECK (preco > 0), preco_desconto numeric CHECK (preco_desconto > 0), CHECK (preco > preco_desconto) ); Constraints - Exemplo • Criar uma chave estrangeira entre duas tabelas: CREATE TABLE pedido ( pedido_id SERIAL PRIMARY KEY, produto_id integer REFERENCES produto (produto_id), quan6dade integer ); Constraints - Exemplo • Criar uma chave estrangeira nomeada entre duas tabelas: CREATE TABLE pedido ( pedido_id SERIAL PRIMARY KEY, produto_id integer, quan6dade integer, CONSTRAINT g_pedido_produto FOREIGN KEY (produto_id) REFERENCES produto (produto_id) ); DML – INSERT E UPDATE Insert • Adiciona um ou mais registros em uma tabela • INSERT INTO tabela (campo1 [, campo2, ...]) VALUES (valor1 [, valor2, ...]); Insert - Exemplo • Inserir um registro na tabela produto INSERT INTO produto VALUES (1, ’Queijo', 9.99); • Nota: quando as colunas da tabela não são especificadas, deve-se, obrigatoriamente, fornecer os va lores das co lunas obedecendo a ordem delas. Insert - Exemplo • Inserir um registro na tabela produto INSERT INTO produto (produto_id, nome, preco) VALUES (1, ’Queijo', 9.99); INSERT INTO produto (nome, preco, produto_id) VALUES (’Queijo', 9.99, 1); Insert - Exemplo • Inserir vários registros na tabela produto INSERT INTO produto (produto_id, nome, preco) VALUES (1, ’Queijo', 9.99), (2, ’Pão', 1.99), (3, ’Leite', 2.99); Update • Altera valores de campos em uma tabela especificada, com base em critérios especificados. • UPDATE tabela SET valor WHERE criterios; Update - Exemplo • Atualizar o nome do produto que possui iden6ficador igual a 1: UPDATE produto SET nome = ‘Queijo Suíço’ WHERE produto_id = 1; Update - Exemplo • Atualizar nome e preço do produto que possui iden6ficador igual a 2: UPDATE produto SET nome = ‘Pão Francês’, preco = 2.99 WHERE produto_id = 2; Update - Exemplo • Atualizar nome “Drama” para “Dramá6co” na tabela filme: UPDATE filme SET genero = ’Dramá6co' WHERE genero = 'Drama'; Delete • Remove registros de uma tabela sa6sfazendo aos critérios estabelecidos. • DELETE FROM tabela WHERE criterios; Delete - Exemplo • Excluir todos os produtos com preço maior que 2,99. DELETE FROM produto WHERE preco > 2.99; Delete - Exemplo • Excluir o produto com iden6ficador igual a 1. DELETE FROM produto WHERE produto_id = 1; Delete - Exemplo • Limpar a tabela filme: DELETE FROM filme; Delete - Exemplo • Excluir todos os filmes do gênero “Musical” DELETE FROM filme WHERE genero = 'Musical'; Delete - Exemplo • Excluir todos os filmes EXCETO os do gênero “Musical” DELETE FROM filme WHERE genero <> 'Musical'; Exercícios • Criar as chaves estrangeiras das tabelas dos exercícios da úl6ma aula (Biblioteca e Holliwud). • Inserir, pelo menos, um valor em cada tabela. • Alterar o valor de, no mínimo, três registros em três tabelas diferentes. • Excluir, no mínimo, três registros de três tabelas diferentes. • Procurar u6lizar diferentes critérios nas alterações e exclusões.
Compartilhar