Baixe o app para aproveitar ainda mais
Prévia do material em texto
BANCO DE DADOS APLICADO AO DESENVOLVIMENTO DE SOFTWARE Linguagem SQL 1 Introdução • Álgebra • Usuário preocupa-se com a ordem que as operações devem ser executadas • Preocupação com a performance e otimização • SQL • O nome SQL é derivado de Structured Query Language ou Linguagem de Consulta Estruturada. • Usuário apenas especifica qual o resultado desejado através de uma consulta declarativa, deixando a otimização com o SGBD 2 Conceitos Iniciais • Projetada e implementada no Centro de Pesquisa da IBM como interface de um banco de dados relacional experimental chamado System R • A SQL é agora a linguagem-padrão para os SGBDs relacionais comerciais. Isto decorre da sua simplicidade e facilidade de uso. • Ela se diferencia de outras linguagens de consulta a banco de dados no sentido em que uma consulta SQL especifica a forma do resultado e não o caminho para chegar a ele. • Ela é uma linguagem declarativa em oposição a outras linguagens procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem. 3 Conceitos Iniciais • SQL oferece um conjunto de comandos para uma variedade de tarefas diferentes, incluindo: • pesquisar, inserir, alterar e deletar linhas de uma tabela; • criar, deletar e alterar objetos de banco de dados; • controlar o acesso aos dados e objetos; • garantir a consistência dos dados. • SQL é utilizada por todos os tipos de usuários de um banco de dados relacional: • Administrador de sistemas; • Administrador de banco de dados; • Desenvolvedores de sistemas; • Usuários finais. 4 Conceitos Iniciais • SQL não é por si só um sistema de gerenciamento de banco de dados. A responsabilidade pelo armazenamento, gerenciamento físico e recuperação dos dados no disco é do SGBD. • SQL é uma "linguagem padrão" que interage entre o SGBD e os seus componentes ou outros gerenciadores. • SQL é uma linguagem de consulta interativa: o usuário tecla comandos num editor interativo que recupera e permite uma consulta fácil e rápida ao banco de dados. • SQL é uma linguagem de programação de banco de dados: programadores incluem comandos SQL em seus programas de aplicação para acessar os dados em um banco. 5 Vantagens da Linguagem SQL • Independência de fabricante; • Portabilidade entre computadores; • Redução dos custos com treinamento; • Inglês estruturado de alto nível; • Múltiplas visões dos dados. 6 SQL e Linguagens de Programação • Os comandos SQL podem ser embutidas em outra linguagem e utilizados para o acesso ao banco de dados • Java, C#, Delphi • Driver de conexão ao SGBD • JDBC (Java Database Connectivity) • ODBC (Open Database Connectity) 7 Regras Básicas • Regras Básicas para escrever comandos SQL • Os comandos podem ser escritos em mais de uma linha; • Cláusulas diferentes são colocadas usualmente em linhas diferentes; • Podem ser usadas tabulações; • Comandos podem ser escritos em letras maiúsculas ou minúsculas. 8 Regras Básicas • Regras para Nomeação • Deve começar com uma letra • Pode ter de 1 a 30 caracteres • Deve conter somente A–Z, a–z, 0–9, _, $ e # • Não deve duplicar o nome de outro objeto de propriedade do mesmo usuário • Não deve ser uma palavra reservada do SGBD 9 SQL> SELECT loc 2 FROM dept; A instrução SQL é informada Banco de Dados A instrução é enviada para o banco de dados LOC ------------- NEW YORK DALLAS CHICAGO BOSTON Os dados são exibidos Comunicando-se com um SGBD Relacional usando SQL 10 SQL • Linguagem para: • Definição de dados: criação das estruturas • Data Definition Language (DDL) • Manipulação de dados: atualização e consultas • Data Manipulation Language (DML) 11 Outros comandos da linguagem • Controle de acesso • Fornece meios para determinar o controle de acesso de usuários aos dados do banco GRANT REVOKE • Compartilhamento de dados (transações) • Coordena o acesso concorrente de usuários, assegurando que um não interfira no trabalho do outro COMMIT ROLLBACK SAVEPOINT • Integridade de dados • Permite definir restrições de integridade aos dados do banco CONSTRAINT 12 Objeto Descrição Tabela Unidade básica de armazenamento, composta de linhas de uma ou mais colunas View Representa logicamente subconjuntos de dados de uma ou mais tabelas Seqüência Gera valores de chave primária Índice Melhora o desempenho de algumas consultas Sinônimo Atribui nomes alternativos a objetos Objetos do Banco de Dados 13 SQL é mais do que uma linguagem de consulta • DDL (Data Definition Language) Linguagem de Definição dos dados • Os comandos DDL são armazenados no dicionário de dados (ou catálogo). Logo, o dicionário de dados contém os metadados (dados a respeito das estruturas de armazenamento) do banco. 14 SQL é mais do que uma linguagem de consulta • DDL (Data Definition Language) Linguagem de Definição dos dados • Os principais comandos da DDL são: • CREATE TABLE: cria uma nova tabela com seus campos e define as restrições de campo. • CREATE INDEX: cria um novo índice em uma tabela existente. • ALTER TABLE: altera as definições de campos e de restrições. • CREATE DOMAIN: cria um tipo de dado definido pelo usuário. • DROP TABLE: exclui uma tabela existente de um banco de dados. • DROP INDEX: exclui um índice existente de uma tabela. 15 Criação do banco de dados • CREATE DATABASE • Cria um novo banco de dados • Sintaxe pode mudar a depender do SGBD CREATE DATABASE <nome_do_BD> CREATE DATABASE EmpresaABC 16 Criação de tabelas • CREATE TABLE • Para criar a tabela deve conter os nomes das colunas, os tipos dos seus dados e os tamanhos dos dados a serem introduzidos CREATE TABLE <nome_da_tabela> ( <nome_da_col1> <tipo_da_col1> (tamanho_do_dado), <nome_da_col2> <tipo_da_col2> NOT NULL, ... PRIMARY KEY <lista_de_nomes_de_col>, FOREIGN KEY <nomes_de_col> ); 17 Criação de tabelas • Note que toda a descrição da coluna é colocada entre parênteses. • Na criação de tabelas é possível especificar vários tipos de restrições: • Chave Primária: PRIMARY KEY; • Chave Estrangeira: FOREIGN KEY; • Chave Alternativa (ou alternada): UNIQUE; • Restrição de Domínio: CHECK. • Pode-se atribuir nomes às restrições de integridade: • CONSTRAINT NOME_RESTRIÇÃO TIPO RESTRIÇÃO. 18 Criação de tabelas • Exemplo: CREATE TABLE Fornecedor ( Fcod INTEGER NOT NULL, Fnome VARCHAR(20) NOT NULL, Status INTEGER, Cidade VARCHAR(20)); Fornecedor Fcod Fnome Status Cidade 19 Tipos para a definição de colunas SQL Padrão (ANSI) CHAR(tamanho) CHARACTER(tamanho) INT INTEGER SMALLINT NUMERIC(precisão,escala) DECIMAL(precisão,escala) DEC(precisão,escala) FLOAT(precisão) REAL DOUBLE PRECISION SQL2 = Padrão + VARCHAR(tamanho) CHAR VARYING(tamanho) CHARACTER VARYING(tamanho) NCHAR(tamanho) NATIONAL CHAR(tamanho) NATIONAL CHARACTER(tamanho) VARYING(tamanho) BIT(tamanho) BIT VARYING(tamanho) DATETIME TIME(precisão) TIMESTAMP(precisão) INTERVAL 20 Restrições e Valores Default • Restrições: • NOT NULL • Restrição aplicadas a colunas cujos valores não podem ser nulos • Valores Default• Adiciona-se a cláusula DEFAULT <valor> logo após a restrição: CREATE TABLE Empregado ( ... Sexo CHAR(1) NOT NULL DEFAULT “F”, ... ); Restrição Definição do valor default 21 Criação de tabelas • Especificação de chaves: • Primária: PRIMARY KEY(<nomeColuna>), • Estrangeira: FOREIGN KEY(<nomeCol>) REFERENCES <NomeTabRefer>, • Alternativa: UNIQUE KEY(CPF) 22 Criação de tabelas • Exemplo com chave primária: CREATE TABLE Departamento ( Dcod INTEGER NOT NULL, Dnome VARCHAR(20) NOT NULL, Cidade VARCHAR(20), PRIMARY KEY(Dcod)); Dcod Dnome Cidade Departamento 23 Criação de tabelas • Exemplo com chave primária composta CREATE TABLE Empregado ( Ecod INTEGER NOT NULL, Enome VARCHAR(40) NOT NULL, CPF VARCHAR(15) NOT NULL, Salario DECIMAL(7,2), Cod_Dept INTEGER NOT NULL, PRIMARY KEY(Ecod,ENome)); Ecod Enome CPF Salario Cod_Dept Empregado 24 Criação de tabelas • Exemplo com chave estrangeira CREATE TABLE Empregado ( ..., CONSTRAINT TrabalhaEm FOREIGN KEY(Cod_Dept) REFERENCES Departamento(Dcod), ... ); Ecod Enome CPF Salario Cod_Dept Empregado 25 Criação de tabelas • Exemplo com chave alternativa CREATE TABLE Empregado ( ..., UNIQUE KEY(CPF)); Ecod Enome CPF Salario Cod_Dept Empregado 26 Criação de tabelas • Assim... CREATE TABLE Empregado ( Ecod INTEGER NOT NULL, Enome VARCHAR(40) NOT NULL, CPF VARCHAR(15) NOT NULL, Salario DECIMAL(7,2), Cod_Dept INTEGER NOT NULL, PRIMARY KEY(Ecod,ENome); CONSTRAINT TrabalhaEm FOREIGN KEY(Cod_Dept) REFERENCES Departamento(Dcod), UNIQUE KEY(CPF)); Ecod Enome CPF Salario Cod_Dept Empregado 27 Criação de um índice • Para criar um índice em uma tabela, o comando SQL é: CREATE INDEX nome_do_índice ON nome_da_tabela(nome_da_coluna); • O comando CREATE INDEX constrói o índice nome_do_índice na tabela especificada. Os índices são utilizados, principalmente, para melhorar o desempenho do banco de dados (embora a utilização não apropriada possa resultar em uma degradação desse desempenho). 28 Exclusão de tabelas • DROP TABLE • Elimina completamente a tabela (vazia ou não) DROP TABLE <nome_da_tabela>; • Ex.: DROP TABLE Empregado; • Não há como recuperar a tabela removida 29 • A SQL permite-nos realizar diversas alterações em uma tabela, como: • incluir novas colunas em uma tabela; • excluir colunas existentes em uma tabela; • adicionar a definição de uma restrição em uma tabela; • excluir a definição de uma restrição existente em uma tabela; • modificar uma coluna. Alteração de tabelas 30 Alteração de tabelas • A sintaxe para INCLUIR uma coluna é: ALTER TABLE nome_da_tabela ADD nome_da_coluna tipo_do_dado • Exemplo: ALTER TABLE Empregado ADD Telefone VARCHAR(30) ADD sexo CHAR(1) DEFAULT ‘F’; 31 Alteração de tabelas • A sintaxe para ALTERAR A LARGURA de uma coluna já existente é: ALTER TABLE nome_da_tabela MODIFY nome_da_coluna tipo_do_dado nova_largura; • Exemplo: ALTER TABLE Telefone MODIFY (TIPO VARCHAR2(5)); 32 Alteração de tabelas • Excluir restrições de chave primária ALTER TABLE Empregado DROP PRIMARY KEY; • Exclusão de uma chave estrangeira • Pode ser feita somente se ela recebeu um nome quando foi definida (através de CONSTRAINT): ALTER TABLE Empregado DROP FOREIGN KEY TrabalhaEm; 33 Alteração de tabelas • Adicionar chave estrangeira: ALTER TABLE Empregado CONSTRAINT Supervisao ADD FOREIGN KEY(Codesupervisor) REFERENCES Empregado(codemp); 34 Exclusão de Índices • DROP INDEX • Para elimina um índice DROP INDEX nome_do_indice DROP INDEX nome_do_indice ON nome_da_tabela; • Ex.: DROP INDEX Empregado; • Não há como recuperar a tabela removida 35 SQL é mais do que uma linguagem de consulta • DML (Data Manipulation Language) Linguagem de Manipulação dos dados • Após a carga dos dados nas tabelas criadas pelos comandos DDL, os comandos de manipulação de dados tornam possível sua manipulação, incluindo inserções, atualizações, exclusões e consultas (com a utilização do comando SELECT da SQL). • A DML visa à manipulação de dados (incluir, alterar, excluir e consultar) por meio do usuário. • Principais comandos: • SELECT: seleção de registros; • INSERT: inserção de registros; • UPDATE: atualização de registros; • DELETE: deleção de registros 36 Inserção • INSERT • Geralmente é usado para inserir linhas individuais de dados num BD já existente Sintaxe: Exemplo 37 INSERT INTO departamento VALUES (1, ‘VENDA’, 1); Liste os valores na ordem default das colunas na tabela Coloque valores de caracter e de data entre apóstrofos departamento (id integer(7) PRIMARY KEY, nome varchar(30) NOT NULL, regiao integer (7) REFERENCES regiao(id)); Inserção 38 Atualização • UPDATE • É usado para alterar valores em linhas já existentes Sintaxe: • A cláusula SET do comando UPDATE indica as colunas a serem alteradas e quais os novos valores. • O comando UPDATE atua em todas as linhas que satisfazem a condição especificada pela cláusula WHERE. A cláusula WHERE é opcional, mas, se for omitida, todas as linhas serão atualizadas. 39 Atualização • UPDATE • Você pode atualizar várias colunas em cada linha com um único comando UPDATE listando as várias colunas após a cláusula SET. • A cláusula WHERE no comando UPDATE pode conter uma subconsulta. Exemplo: 40 Exclusão • DELETE • É usado para remover linhas de uma tabela • Você não pode excluir parcialmente uma linha, portanto não precisa especificar os nomes das colunas no comando DELETE. 41 Exclusão • DELETE • A cláusula WHERE determina que linhas serão eliminadas. Ela pode ser complexa e incluir várias condições, conectores e/ou subconsultas. • Se você deseja excluir todas as linhas de uma tabela, omita a cláusula WHERE, como abaixo listado: • O comando acima eliminará todas as linhas, deixando apenas as especificações das colunas e o nome da tabela. 42 Recuperação Usando SELECT • A estrutura básica de uma consulta em SQL consiste em três cláusulas: SELECT, FROM e WHERE • Assim, uma consulta típica em SQL tem a forma: 43 Estrutura • O resultado de uma consulta SQL é SEMPRE uma tabela • Estrutura de uma Consulta Simples: • OBS: 44 Expressões Tabulares (Cláusulas) • Expressões tabulares são cláusulas que são usadas para produzir tabelas. As expressões tabulares suportadas pela SQL e seus propósitos são: 45 Exemplos Seleciona todos os dados de todas as colunas da tabela de Departamento SELECT * FROM Departamento; Seleciona todos os dados da coluna nome na tabela de Departamento SELECT nome FROM Departamento;46 Exercício • Crie as seguintes tabelas em seu BD, definindo as condições descritas abaixo Fornecedor (Fcod#, Fnome, Status, Cidade) Peca (Pcod#, Pnome, Cor, Peso, Cidade) Projeto (PRcod#, Icod#, PRnome, Cidade) Fornecimento (Fcod#, Pcod#, PRcod#, Quantidade) Instituição (Icod#, nome) • Nomes para restrições de chaves primária, estrangeira e alternativa • Valor default para o atributo Status, de Fornecedor • Todos os atributos de Peca não podem ser nulos 47
Compartilhar