Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

SQL Fundamentos e DML e DDL, conceitos, aplicação, Transcrições de Informática

SQL fundamentos e DML e DDL, conceitos, aplicação

Tipologia: Transcrições

2021

Compartilhado em 07/06/2022

rosangela-nobre-1
rosangela-nobre-1 🇧🇷

5 documentos

1 / 16

Toggle sidebar

Documentos relacionados


Pré-visualização parcial do texto

Baixe SQL Fundamentos e DML e DDL, conceitos, aplicação e outras Transcrições em PDF para Informática, somente na Docsity! Implementação de banco de dados Aula 2: Linguagem SQL —- DML e DDL Apresentação Anteriormente, estudamos o Modelo Relacional e a Álgebra Relacional, suas características e visualizamos suas principais operações. Além disso, realizamos vários exercícios de fixação. Nesta aula, seremos apresentados à linguagem SQL e vamos conhecer as partes que a compõem, estudaremos os comandos de criação de tabelas (DDL) e os comandos que permitem colocar, alterar ou eliminar linhas das tabelas (DML). Objetivos * Criar e eliminar tabelas; * Inserir, alterar e eliminar dados das tabelas. (3 Fonte: exenyitino possible Linguagem SQL O padrão mundial de acesso a banco de dados é a Linguagem Estruturada de Consulta (Structured Query Language) ou simplesmente SQL, na sigla em inglês. A linguagem SQL divide-se em partes, cada uma atendendo a uma necessidade específica. Temos, então, a seguinte divisão: Linguagem de Descrição de Dados (Data Definition Language — DDL) - tem como principais comandos Create, Alter e Drop, destinados, respectivamente, a criar, alterar e eliminar objetos de banco de dados, como usuários, tabelas, índices etc. Linguagem de Manipulação de Dados (Data Manipulation Language - DML) — tem como principais comandos Insert, Update, Delete e Select, destinados, respectivamente, a inserir linhas nas tabelas, alterar linhas, eliminar linhas e consultar os dados da tabela. Linguagem de Controle de Dados (Data Control Language — DCL) — tem como principais comandos Grant e Revoke, destinados a conceder e revogar privilégios de acesso respectivamente. Nosso foco de estudo será nos comandos de criação, alteração e eliminação de tabelas e nos comandos de DML (Insert, Update, Delete e Select). Tabelas Tabelas são os objetos básicos de armazenamento de dados no modelo relacional. Para criarmos uma tabela, devemos definir o seu nome, suas colunas, os tipos de dados das colunas e suas restrições. luna, Tip *º Clique no botão acima. Nome O nome da tabela é normalmente definido durante a modelagem lógica, constituindo às vezes, alguma variação em relação ao nome da entidade. Por exemplo, entidade Aluno vira tabela Aluno ou Alunos. É importante conhecer as limitações do SGBD na hora de criar a tabela. A maior parte dos SGBD não dão suporte a caracteres em português no nome da tabela. Dessa forma, se temos uma entidade Aprovação, teremos que criar a tabela Aprovacao; se a entidade tem o nome Prova Aluno, teremos que substituir o espaço em banco por: - Prova Aluno. Colunas As colunas das tabelas se originaram dos atributos das entidades conforme vimos na modelagem lógica. Da mesma forma que o nome da tabela, temos que respeitar as limitações do SGBD: não usar espaço em branco, caracteres em português e nos preocupar também com a quantidade máxima de caracteres que o nome da coluna ou tabela pode ter. Muitas vezes, por causa dessa limitação, teremos que abreviar o nome. Por exemplo: o atributo Matrícula do Aluno poderá virar a coluna Mat. Aluno na tabela. Tipos de dados As colunas possuem um tipo de dado que podem armazenar de forma similar ao conceito de tipo utilizado nas variáveis criadas em programas. Os SGBD possuem uma variedade muito grande de tipos. Cada SGBD tem o seu conjunto específico, que é, muitas vezes, incompatível com outros SGBD. Nós faremos uso do PostGreSql como SGBD para a realização de exercícios. Nos comandos de criação de tabelas, os tipos básicos são: Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Tipos de Dados Descrição VARCHAR(tam) Caracter de tamanho variável, podendo atingir de 1 até 8.000 bytes, sendo limitado a tam. CHAR(tam) Caracter de tamanho fixo, podendo tam ser especificado no máximo de 8.000 caracteres. TEXT Caracter de tamanho variável sem limite. Note que a tabela está vazia, mas foi criada no banco com duas colunas. No SQL Server, o comando é o mesmo. O comando funciona também no Oracle: Mais Constraints Até agora utilizamos apenas as constraints NOT NULL e PRIMARY KEY. Vejamos agora as constraints UNIQUE e FOREIGN KEY. Campos únicos UNIQUE Ao estabelecermos a constraint UNIQUE para uma coluna, determinamos que ela não pode ter valor repetido. Entretanto, ela não obriga a coluna a ter valor ou não a torna de preenchimento obrigatório e, como NULO não é valor, uma coluna UNIQUE pode possuir várias linhas nulas (sem valor). Exemplo CPF char(11) UNIQUE, Reforçando a Integridade Referencial com Chave Estrangeira (Foreign Key) Foreign Key Os relacionamentos entre tabelas são criados através da geração de chaves estrangeiras (foreign key — FK) nas tabelas FILHO que referenciam colunas chaves nas tabelas PAI. Para estabelecer essa restrição, acrescentamos REFERENCES na definição da coluna, como exemplo: ID DEPTO numeric (7) References Departamento(ID), Onde: e Id depto é o nome da coluna; * Numeric r(7) o tipo da coluna; * References identifica a restrição de chave estrangeira; * Departamento é o nome da tabela para onde aponta a chave estrangeira; e (ID) é coluna da tabela departamento apontada pela chave estrangeira. Vejamos um exemplo de criação de tabela com essas restrições. CREATE TABLE EMPREGADO (ID NUMERIC(7) PRIMARY KEY, ULT NOME VARCHAR(20) NOT NULL, PRIM.NOME VARCHAR(20) NOT NULL, CARGO VARCHAR(30), SALARIO NUMERIC(7,2), DT-ADMISSAO DATE, CPF CHAR(11) UNIQUE, ID. DEPTO NUMERIC(7) REFERENCES DEPARTAMENTO(ID)) Observe o comando. Através de sua análise, podemos observar que: - a coluna ID é sua chave primária; - As colunas ULT. NOME e PRIM NOME são de preenchimento obrigatório; - A coluna CPF é única; - A coluna ID. DEPTO é uma chave estrangeira para a tabela departamento. Vamos criá-la no PostGgreSdl. Observe a mensagem de sucesso. Atenção Importante Se uma tabela possui uma chave estrangeira para outra, ela tem que ser criada depois da tabela referenciada, senão ocorrerá um erro. Vamos agora criar uma terceira tabela: CREATE TABLE CLIENTE (ID NUMERIC(7) PRIMARY KEY, NOME VARCHAR(40) NOT NULL, VENDEDOR NUMERIC(7)) Acrescentando colunas em tabelas Podemos acrescentar colunas em tabelas já criadas com o comando Alter Table. Sua sintaxe é: alter table <nome tabela> add <nome. coluna> <tipo da coluna> <constraint > Em que: <nome tabela> é o nome da tabela a qual será acrescida à coluna. <nome coluna> é o nome da coluna que será acrescida. <tipo da coluna> é o tipo de dado da coluna a ser acrescida. <constraint> é a restrição, se for o caso, da coluna a ser acrescida. Exemplo Na criação da tabela Departamento. Vimos que duas restrições (constraints) são estabelecidas como: uma de obrigatoriedade (NOT NULL) e uma Chave Primária. Vamos assumir, entretanto que nossa tabela, com esse último comando de criação, não foi completamente estabelecida Está faltando a coluna descrição. Para inseri-la, podemos dar o comando: ALTER TABLE DEPARTAMENTO ADD descricao VARCHAR(30) NOT NULL; Vamos executar o comando. Para isso, digite-o no PostgreSql. Eliminando colunas de tabelas É possível eliminar colunas de tabelas, inclusive aquelas referenciadas por constraints e índices, e até mesmo chaves primárias, únicas e estrangeiras. É verdade que cuidados quanto à aplicação devem ser tomados por parte dos desenvolvedores e DBA, porém, o SGBD implementa essa funcionalidade. Ao eliminarmos uma coluna, suas restrições, caso existam, também são removidas do dicionário de dados. Sintaxe: alter table <nome tabela> drop column <nome coluna>; Em que: <nome tabela> é o nome da tabela da qual será eliminada a coluna. <nome coluna> é o nome da coluna que será eliminada. Por exemplo: se desejarmos eliminar a coluna descrição da tabela Departamento, daremos o seguinte comando: ALTER TABLE DEPARTAMENTO DROP COLUMN DESCRICAO Vamos executar o comando. Para isso, digite-o no PostgreSql. É Inserindo Linha fe Clique no botão acima. Inserindo Linhas O comando INSERT insere linhas em uma tabela. Sua sintaxe básica é: insert into .<nome tabela> (coluna7, coluna2, ... colunan) values (valor1, valor?, ..., valorn); Em que: Cláusula Descrição nome tabela O nome da tabela a ser atualizada Coluna n A coluna que queremos inserir Valor n É o novo valor associado à coluna a ser inserida Vamos inserir uma linha na tabela de departamento. INSERT INTO DEPARTAMENTO (ID, NOME) VALUES (100, 'Financeiro); A relação entre a lista de colunas (ID, NOME) e a lista de valores (100, VENDAS) é posicional, portanto: * Acoluna ID receberá o valor 100; * Nome receberá Vendas. Execute o comando no PostgreSql e observe a mensagem de linha inserida. Uma outra forma de dar o comando INSERT é sem referenciar as colunas. Nesse caso, a lista de valores deve estar na ordem das colunas da tabela. INSERT INTO DEPARTAMENTO VALUES (200, 'Compras') Desta vez, não foram especificadas as colunas que receberão os valores. Portanto, o comando utilizará todas as colunas da tabela na ordem em que foram criadas. A nossa tabela possui duas linhas. Inserindo com valores nulos Caso alguma coluna deva ficar com NULO em uma inserção, basta omitir o nome da mesma na lista de colunas. Vejamos um exemplo em que isso ocorre: No exemplo acima, foram omitidas as colunas CARGO, SALARIO, DT. ADMISSAO e CPF, que ficaram nulas. Atenção Observe que NULO não é equivalente a O (zero), espaço ou qualquer outro valor. NULO é, justamente, a ausência de qualquer valor na coluna. Um cuidado que devemos ter é que só é possível fazer isso em colunas que não possuam a constraint NOT NULL. Outro detalhe é que nenhuma coluna definida como chave primária poderá conter NULO. No nosso exemplo, se não fosse especificado um valor para a coluna id, a inserção resultaria em erro. O mesmo erro ocorreria se não tivéssemos valores para as colunas PRIM NOME e ULT NOME, já que são de preenchimento obrigatório (constraint not null. Aproveitando ainda esse exemplo de inserção, note que inserimos o PRIM NOME e depois o ULT. NOME, apesar de na tabela ULT. NOME vir antes de PRIM NOME. Isso foi possível devido à inserção ser realizada na ordem da lista de colunas. Uma última observação se refere à Chave Estrangeira ID. DEPTO, cujo valor inserido OBRIGATORIAMENTE tem que existir na tabela DEPARTAMENTO. Outra forma de inserirmos com valores nulos em uma coluna é utilizando a palavra reservada null. Vejamos um exemplo: Como omitimos a lista de colunas, temos que ter um valor para cada coluna. Então estamos inserindo 20 no ID, Fonseca no Prim. Nome, Antonio no Ult Nome no NOME , nulo nas colunas CARGO, SALARIO, DT. ADMISSAO e CPF e 200 no Id depto. Execute o comando. Observe a mensagem de linha inserida. Como omitimos a lista de colunas, temos que ter um valor para cada coluna, na ordem das colunas da tabela. Você também pode executar vários comandos de inserção juntos; Basta separá-los por: INSERT INTO EMPREGADO VALUES (2, 'Neves, 'Lauro, 'Diretor de Compras',19500, '07/03/2009'/23456789012',200); INSERT INTO EMPREGADO VALUES (3, 'Nogueira', 'Mário' Diretor de Vendas, 18000, '07/04/2010/34567890123'100); INSERT INTO EMPREGADO VALUES (4, 'Queiroz', 'Mark'/Gerente de Compras',8000, '07/11/2010'/12345432123'200); INSERT INTO EMPREGADO VALUES( 5, 'Rodrigues, Alberto, Vendedor 4000, 10/1/2008" '87965432123, 100); INSERT INTO EMPREGADO VALUES( 6, 'Ugarte', 'Marlene,, "Vendedor, 3500,23/11/2009,'87654345678' 100); Como resultado, temos sete linhas na tabela. Observe que apesar de termos inserido a data no formato DD/MM/AAAA, o PostgreSq! sempre exibe por padrão no formato AAAA/MM/DD. Você pode dar o comando de inserção de uma forma ou de outra, mas, para evitar problemas, use sempre AAAA/MM/DD. É mais seguro. Atualizando linhas O comando UPDATE permite que atualizemos dados já existentes nas tabelas. Sua sintaxe é: UPDATE nome tabela SET coluna = expressão WHERE condição Onde: Cláusula Descrição Nome tabela O nome da tabela a ser atualizada. coluna A coluna que queremos alterar. expressão O novo valor associado à coluna a ser alterada. condição A condição que deverá satisfazer as colunas que serão alteradas. Vejamos um exemplo: Vamos aumentar o salário de todos empregados em R$ 1000. UPDATE EMPREGADO SET SALARIO = SALARIO + 1000; Navegando até o local do arquivo e o selecionando. Feito isso, o conteúdo do Script é carregado e basta mandar executá-lo. As tabelas são criadas e os dados inseridos. Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Atividade 1. A partir do Modelo Lógico a seguir, crie as tabelas no PostGreSdl. 2. Insira os dados nas tabelas criadas na atividade 1 de forma que as tabelas fiquem conforme as figuras a seguir: 3. Baixe o Script Escola disponível aqui <./galeria/aula2/apoio/Aula 2 ESCOLA sgl> e o execute no PostGreSql. Notas Título modal * Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos. Título modal 1 Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos. Referências DATE, C. J. Introdução a sistemas de banco de dados. 7. ed. Rio de Janeiro: Campus, 2000. ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo: Pearson Addison Wesley, 2015. SILBERSCHATZ, A.; KORTH, H. F; SUDARSHAN, S. Sistemas de banco de dados. 5. ed. Rio de Janeiro: Campus, 2006. Próxima aula * Estudo do comando Select; e Cláusulas iniciais (Select e From); * Cláusula Distinct. Explore mais * PostgreSQL
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved