Professional Documents
Culture Documents
Introduo
Modelo relacional encontra-se padronizado pela indstria de informtica. Ele chamado de padro SQL (Structured Query Language) SQL usa uma combinao de construtores em lgebra relacional e clculo relacional Embora o prprio nome se refira a SQL como uma linguagem de consulta, ela possui outros recursos
Introduo
O padro SQL define precisamente uma interface SQL para a definio de tabelas, para as operaes sobre as mesmas (seleo, projeo, juno e outras) e para a definio de regras de integridade de bancos de dados A interface SQL implementada em todos os sistemas de bancos de dados relacionais existentes A existncia de padres facilita a interoperabilidade
Introduo
Um SGBD necessita possuir duas linguagens
DDL (Data Definition Language) - Usada para definir os esquemas, atributos, vises, regras de integridade, ndices, etc. DML (Data Manipulation Language) - Usada para se ter acesso aos dados armazenados no BD
Histrico
A verso original de SQL foi desenvolvida pela IBM
Originalmente chamada de SEQUEL Parte do projeto System R
Tornou-se a linguagem padro para SGBDs relacionais Existem diversos padres para SQL
ANSI-SQL (SQL-86) IBM SQL (SQL-89) ANSI/ISO SQL (SQL 92) SQL-3 (SQL 99)
Partes do SQL
SQL dividido em diversas partes
Linguagem de definio de dados (DDL) proporciona comandos para a definio, excluso e modificao de esquemas de relaes e criao de ndices Linguagem interativa de manipulao de dados (DML) linguagem de consulta baseada na lgebra e no clculo relacional de tuplas, incluindo insero, excluso e modificao de tuplas
Partes do SQL
Incorporao DML (Embedded DML) projetada para aplicao em linguagens de programao de uso geral, como Cobol, Pascal, Fortran e C Definio de vises Autorizao definio de direitos de acesso a relaes e vises Integridade especificao de regras de integridade que os dados que sero armazenados devero satisfazer Controle de transaes comandos para especificao de iniciao e finalizao de transaes
Domnios
Tipos de Domnios em SQL-92 Tipo Descrio Char(n) ou character String de tamanho fixo n Varchar(n) ou String de tamanho varivel com Character varying tamanho mximo n int ou integer Nmero inteiro Smallint Inteiro pequeno Numeric(p,d) Nmero ponto fixo com preciso definida pelo usurio. Com p indicando o nmero de dgitos e d indicando dos p dgitos os que esto direita do ponto decimal real, Ponto flutuante e ponto flutuante double precision de preciso dupla Float(n) Ponto flutuante com preciso definida pelo usurio Date Data: aaaa/mm/dd Time Hora: hh:mm:ss
Onde:
atributo: nome do atributo que est sendo definido tipo_dado: domnio do atributo NOT NULL: expressa que o atributo no pode receber valores nulos UNIQUE: indica que o atributo tem valor nico na tabela. Qualquer tentativa de se introduzir uma linha na tabela contendo um valor igual ao do atributo ser rejeitada. DEFAULT valor: indica um valor a ser atribudo ao atributo caso no seja determinado um valor na insero
Integridade referencial
FOREIGN KEY (atributos) REFERENCES tabela_base(atributos)
Integridade de domnio
CHECK (condio)
obrigatrio que:
quantidade seja maior que zero nome da pea no seja nulo
Exemplo:
ALTER TABLE Peca ADD espessura INT
Sintaxe
DROP TABLE <nomeTabela>
Exemplo
DROP TABLE Peca
O default ordem ascendente, se quisermos uma ordem descendente adicionamos a palavra chave DESC depois do nome do atributo
Banco de Dados I
SQL DML
Frederico D. Bortoloti freddb@ltc.ufes.br
SQL - DML
Os exemplos da aula sero elaborados para o esquema de dados a seguir:
Empregado(matricula, nome, endereco, salario, supervisor, depto) Departamento(coddep, nome, gerente, dataini) Projeto(codproj, nome, local, depart) Alocacao(matric,codigop, horas) Dependente(coddepend, matricula, nome, sexo)
SQL - DML
As operaes de manipulao sem cursor so
SELECT INSERT UPDATE DELETE
SQL - DML
O comando SELECT: forma bsica
SELECT <lista atributos> FROM <lista tabelas> WHERE <condio>
Q26. Para cada projeto que possui mais de 2 empregados trabalhando, obter o cdigo do projeto, nome do projeto e nmero de empregados que trabalha neste projeto
Insero de Dados
O comando Insert
Usado para adicionar uma tupla a uma relao Sintaxe: INSERT INTO tabela [ (lista colunas)] fonte Onde fonte pode ser uma especificao de pesquisa (Select) ou uma clusula VALUES da forma
VALUES (lista de valores atmicos)
Obs.: Se o comando INSERT incluir a clusula VALUES ento uma nica tupla inserida na relao Ex. INSERT INTO Empregado (matricula, nome) VALUES (9491,Ana)
Insero de Dados
Obs.: A insero ser rejeitada se tentarmos omitir um atributo que no permite valores nulos (NOT NULL) Ex.: INSERT INTO Empregado (nome, salario) VALUES(Flvia, 960) Podemos inserir vrias tuplas numa relao atravs de uma query
Insero de Dados
CREATE TABLE DEPTO_INFO (nome character(15), numemp integer, totsal real); INSERT INTO DEPTO_INFO(nome, numemp, totsal) SELECT d.nome, COUNT(*), SUM(salario) FROM Departamento d, Empregado e WHERE d.coddep = e.depto GROUP BY d.nome
Remoo de Dados
O comando DELETE
Remove tuplas de uma relao Sintaxe DELETE FROM tabela [WHERE condio] Obs.: Se omitirmos a clusula WHERE, ento o DELETE deve ser aplicado a todas as tuplas da relao. Porm, a relao permanece no BD como uma relao vazia
Modificao de Dados
O comando UPDATE
Modifica o valor de atributos de uma ou mais tuplas. Sintaxe UPDATE tabela SET lista_atributos com atribuies de valores [WHERE condio] Obs.: omitir a clusula WHERE implica que o UPDATE deve ser aplicado a todas as tuplas da relao
Modificao de Dados
O comando UPDATE
Ex. Modifique o nome do Departamento de Computao para Departamento de Informtica UPDATE Departamento SET nome = Informtica WHERE nome = Computao
Modificao de Dados
O comando UPDATE
Ex. D um aumento de 10% a todos os empregados do departamento de Pesquisa UPDATE Empregado SET salario = salario * 1.1 WHERE depto in (SELECT coddep FROM Departamento WHERE nome =Pequisa)