Curso EFA de técnico de Informática e Sistemas
-
Upload
cameron-bullock -
Category
Documents
-
view
109 -
download
2
description
Transcript of Curso EFA de técnico de Informática e Sistemas
Ano letivo 2012-2013
Curso EFA de técnico de Informática e Sistemas
Docente: Ana Batista
EDUCAÇÃO E FORMAÇÃO DE ADULTOS
Curso EFA – Sec. Turma C - 2012 / 2013
Exemplos de comandos
Criar e alterar a estrutura de uma BD: Create database – para iniciar a criação de uma base
de dados;
Create table – para criar a estrutura de uma tabela;
Alter table – modificar a estrutura de uma tabela;
Drop table – eliminar uma tabela;
Drop database – eliminar uma BD.
Docente: Ana Batista 2
Exemplos de comandos
Atualizar e consultar uma BD:
Insert – inserir dados numa tabela;
Update – atualizar ou alterar dados;
Delete – apagar dados;
Select – efetuar consultas ou pesquisas a
uma base de dados.
Docente: Ana Batista 3
Exemplos de comandos Controlar o acesso e o funcionamento
seguros de uma BD: grant – permite atribuir ou definir os direitos dos utilizadores
de uma BD;
revoke – retira os direitos atribuídos;
Lock table – bloqueia uma tabela de forma a impedir que
outros utilizadores a alterem;
Unlock table – desbloqueia tabela bloqueada;
Start transation – inicia uma transação/operação controlada
numa BD.
Docente: Ana Batista 4
Comandos para criar e eliminar uma BD
Criação de uma BDCriação de uma BD
Create database Vendas
Objetivo: iniciar a criação de uma bd com o nome Vendas.
Docente: Ana Batista 5
Comandos para criar e eliminar uma BD
Eliminar uma BD em SQLEliminar uma BD em SQL
Drop database Vendas
Objetivo: elimina a bd com o nome Vendas, de forma irrecuperável (a não ser que tenham sido feitas cópias de segurança).
NOTA: Só os utilizadores do sistema que tenham o estatuto de superutilizador ou a quem tenham sido atribuídos todos os direitos sobre a base de dados, é que podem efetuar este tipo de operação.
Docente: Ana Batista 6
Criar uma tabela - sintaxe
Docente: Ana Batista 7
Create table nome_tabela(definição_campo1…Definição campo_n);
Cria uma tabela com um dado nome. Dentro dos
parêntesis é indicada a estrutura dos campos que
se pretende para a tabela.
Assim…
Definição_campo1 corresponde a:
Nome_campo tipo_dados[not null] [default valor][primary key][references…]
Docente: Ana Batista 8
Ou seja…
Para cada campo da tabela indicam-se obrigatoriamente:
Nome do campo Tipo de dados do campo
Para além destes elementos obrigatórios, podem ainda ser indicados outros elementos opcionais.
Docente: Ana Batista 9
NOTA: os parêntesis retos servem
apenas para indicar os elementos
opcionais; se estes elementos forem
indicados, são escritos sem os
parêntesis retos.
Docente: Ana Batista 10
Elementos opcionais
Not null – serve para indicar que o campo não pode conter valores nulos
Default valor – permite indicar um valor por defeito para o campo.
Por exemplo: default 10 (o campo assume este valor se não for indicado outro)
Docente: Ana Batista 11
Elementos opcionais
Primary key – indica que o campo é ou faz parte da chave primária da tabela.
References – inicia a indicação que o campo funciona como chave estrangeira.
Deve ser escrito:
References nome_tabela (nome_campo) , ou seja, a seguir à palavra
References é escrito o nome da tabela e o nome do campo (dentro
parêntesis curvos) a que o campo faz referência como chave
estrangeira.Docente: Ana Batista 12
Principais tipos de dados em SQL
Docente: Ana Batista 13
Tipos de dados Descrição
Char (n)Caracter ou string – de comprimento indicado
até um máximo de 255.
VarChar (n)Semelhante ao anterior, mas neste caso, Var
significa tamanho variável em relação ao
espaço realmente ocupado, consoante o
dado inserido.
text Texto até um máximo de 65535.
smallint Números inteiros de tamanho reduzido
Principais tipos de dados em SQL
Docente: Ana Batista 14
Tipos de dados Descrição
Int ou integerNúmeros inteiros de tamanho médio
bigintNúmeros inteiros de tamanho grande
Numeric (m,d) ou decimal (M,d)
Valor numérico que é guardado como uma
string formada por digitos decimais, em que
m representa o n.º digitos e d as casas
decimais
Float (m,d) Valor numérico que é guardado com o formato floating point (virgula flutuante)
Principais tipos de dados em SQL
Docente: Ana Batista 15
Tipos de dados Descrição
DoubleSemelhante ao anterior
DateNo mysql o formato padrão é “yyyy-mm-dd”
– ano, mês, dia
time Formato da hora: “hh:mm:ss”
Exemplo de um Modelo físico de uma base de dados
Docente: Ana Batista 16
Exemplificação da criação de tabelas
Create table Clientes(CodCli Int auto_increment primary key,Cliente Varchar(20), morada varchar (30));
Docente: Ana Batista 17
CodCli Cliente Morada
Explicação
A tabela Clientes é composta por 3 campos:
CodCli - int Cliente - varchar Morada – varchar
Docente: Ana Batista 18
Campo Codcli
Código do cliente é definido como int, isto é
número inteiro, além disso é auto_increment,
ou seja, o sistema incrementa o n.º do código
sempre que é inserido um novo registo nesta
tabela.
É indicado como primary key, pois é a chave
primária da tabela clientes.
Docente: Ana Batista 19
Campo Cliente
Definido como varchar(20), o campo cliente
aceita até um máximo de 20 carateres.
Docente: Ana Batista 20
Campo Morada
Definido como varchar(30), o campo morada
aceita até um máximo de 30 carateres.
Docente: Ana Batista 21
Exemplificação da criação de tabelas
Create table Produtos(Codprod Int auto_increment primary key,Produto Varchar(20), preco numeric (10,2));
Docente: Ana Batista 22
CodProd Produto preco
Tabela Produtos
É semelhante à tabela Clientes, o que muda é o campo Preco.
NOTA: não se deve escrever preço, porque os
nomes tabelas, campos em SQL só podem
conter os carateres do alfabeto inglês, onde
não há acentos nem caracteres especiais
como o ç.
Docente: Ana Batista 23
Campo Preco
O campo preço é do tipo
numérico, não inteiro, mas com
casas decimais, aconselhável para
pôr por exemplo, valores
monetários.
Docente: Ana Batista 24
Tabela Encomendas
Create table Encomendas(Nenc Int Auto_increment primary key,CodCli Int references Clientes (CodCli),CodProd Int references Produtos (CodProd),Quant Int);
Docente: Ana Batista 25
Campo NEnc
O campo Nenc (nº da encomenda)
é definido como inteiro,
incrementado, e chave primária
da tabela encomendas.
Docente: Ana Batista 26
Campo Quant
O campo Quant (quantidade) é
definido como inteiro.
Docente: Ana Batista 27
Parte especial da tabela encomendas…
Reside nos campos codCli e CodProd que são
chaves estrangeiras, por se referirem a campos
que são chaves primárias em outras tabelas.
Esses campos vão fazer referência aos mesmos
campos nas tabelas de origem (Clientes e
produtos).
Docente: Ana Batista 28
Eliminar e alterar a estrutura de uma tabela
Para eliminar uma tabela, o comando sql é
drop table nome_tabela
Ex: drop table Encomendas
Docente: Ana Batista 29
Eliminar e alterar a estrutura de uma tabela
Para alterar uma tabela, o comando sql é alter table que contém 3 variantes: add, modify e drop.
Ex: alter table nome_tabela{Add (novo_campo tipo_dados)| modify (nome_campo tipo_dados)| drop (nome_campo)};
Docente: Ana Batista 30
O facto de as 3 opções, add,
modify e drop serem incluídas
dentro de chavetas {} significa que
só uma delas pode ser usada em
cada instrução.
Docente: Ana Batista 31
Docente: Ana Batista 32
Adiciona um novo campo à tabela xxx
Modifica um novo campo na tabela xxx
Elimina um novo campo na tabela xxx
Exemplo 1
Alter table ClientesAdd telefone integer;
Acrescenta na tabela clientes, um novo campo com o nome Telefone e do tipo inteiro.
Docente: Ana Batista 33
Exemplo 2
Alter table ClientesModify telefone char (9);
Modifica na tabela clientes, o campo Telefone passando a ser do tipo char com 9 carateres.
Docente: Ana Batista 34
Exemplo 3
Alter table Clientesdrop telefone;
Modifica a tabela clientes, eliminando o campo telefone.
Docente: Ana Batista 35
Atualizar dados numa tabela
Quando se fala em atualizar uma base de dados, tal compreende 3 tipos de operações: Inserir Apagar alterar
Docente: Ana Batista 36
Inserir dados numa tabela
Insert into nome_tabela(lista de campos){values (valores) | select instrução};
Inserir dados na tabela indicada, especificando esses dados a seguir à palavra values ou obtendo-os através de uma instrução select.
Docente: Ana Batista 37
NOTA
Após a indicação do nome tabela, podemos indicar opcionalmente os nomes dos campos, onde queremos inserir os dados.
Se os campos não forem indicados, supõe-se que vamos inserir dados em todos os campos da tabela.
Docente: Ana Batista 38
Exemplo 1
Insert into Clientes(Cliente, morada) values(“Aníbal”, “Lisboa”),(“Belmiro”, “Braga”),(“Casimiro”, “Coimbra”);
Docente: Ana Batista 39
Tabela clientes
CodCli Cliente Morada
1 Anibal lisboa
2 Belmiro Braga
3 Casimiro Coimbra
Docente: Ana Batista 40
Exemplo 2
Insert into Produtos values(null, “portátil”, 400),(null, “berbequim”, 50),(null, “ms office”, 150);
Docente: Ana Batista 41
Tabela produtos
Docente: Ana Batista 42
CodProd Produto preço
1 Portátil 400
2 Berbequim 50
3 Ms office 150
No exemplo anterior, como não indicámos os campos onde queríamos inserir dados, temos de atribuir valores para todos os campos da tabela.
Null significa que o 1º campo da tabela era auto increment (codprod) e não podemos mexer, por isso a forma é indicar o valor null.
Docente: Ana Batista 43
Exemplo 3
Insert into Encomendas values(null, 1,1,10),(null, 2,1,2),(null, 3,2,5),(null, 1,3,1);
Docente: Ana Batista 44
Tabela encomendas
Docente: Ana Batista 45
NEnc Cod Cli CodProd Quant
1 1 1 10
2 2 1 2
3 3 2 5
4 1 3 1
Na tabela encomendas, o primeiro campo é Nenc é do tipo auto_increment, o que impede de atribuir valores, por isso indicamos o null para todos os dados correspondentes a esse código.
Quanto aos campos CodCli e CodProd como são chaves estrangeiras, pois referem-se a chaves primárias de outras tabelas, isto obriga a que os valores inseridos devam existir nas tabelas iniciais, por forma a respeitar a integridade referencial.
Apagar registos e alterar dados
O comando delete apaga registos (linhas) por inteiro numa tabela.
Delete from nome_tabela[where condição];
Docente: Ana Batista 46
Objetivo
Apagar todos os registos na tabela indicada, podendo apagar toda a tabela (se não for especificada uma condição) ou apenas o(s) registos que correspondam à condição indicada.
Se a cláusula Where condição não for indicada, serão apagados todos os registos (todos os dados) da tabela.
Se Where condição for indicada, serão apagados os registos que respeitem a condição indicada.
Docente: Ana Batista 47
Exemplo 1
Delete from produtos;
Efeito: todos os dados da tabela produtos serão apagados.
Docente: Ana Batista 48
Exemplo 2
Delete from ProdutosWhere produto=“Ms office”;
Efeito: apaga na tabela produtos os registos (linhas) em que o campo produto é igual a ms office.
Docente: Ana Batista 49
Comando update
A alteração, modificação ou
atualização de dados em SQL, faz-
se com o comando update.
Docente: Ana Batista 50
Sintaxe - update
Update nome_tabelaSet campo1=expressão1[, campo2=expressão2], [, …][where condição];
Alterar dados na tabela indicada, no(s) campo(s) indicado(s), podendo essa alteração abranger todos os dados de determinado campo ou apenas o que correspondem a uma condição indicada.
Docente: Ana Batista 51
A expressão set campo1=expressão1 indica a modificação a efetuar.
É possível efetuar a vários campos na mesma instrução, daí os parêntesis retos que se seguem.
Docente: Ana Batista 52
Cláusula where
A cláusula Where condição é opcional – isto implica o seguinte:
Se a cláusula where condição não for usada, as alterações indicadas nas expressões campo1=expressão1 afetarão todos os dados do campo indicado em set.
Docente: Ana Batista 53
Docente: Ana Batista 54
Se a cláusula where condição for usada, as alterações indicadas afetarão apenas os registos que respeitem a condição especificada.
Exemplo 1
Update ProdutosSet Preco =Preco*1.05;
Esta instrução altera a tabela produtos, no campo
preço, para o resultado da expressão preco*1.05, ou
seja, produz um aumento de 5% em todos os preços da
tabela produtos.
Docente: Ana Batista 55
Exemplo 2
Update ProdutosSet preco=250Where produto =“portátil”;
Neste caso, a alteração do preço para 250, incide apenas sobre o produto que tem o nome de portátil, uma vez que foi isso que foi
indicado na cláusula where.
Docente: Ana Batista 56
Comando Select
É o comando que permite efetuar consultas a uma BD relacional com SQL.
A sintaxe do comando select é, nas suas versões mais complexas, muito extensa, com muitas opções e pode revestir-se de alguma complexidade.
Docente: Ana Batista 57
Sintaxe - select
Select lista_camposFrom tabela(s)[where condição][group by lista_campos][having condição][order by lista_campos]
Docente: Ana Batista 58
Efetuar consultas à
tabela(s) indicada,
baseadas em critérios
de filtragem,
agrupamentos e/ou
ordenação.
Exemplos
Select * from produtos;
Vai consultar todos os dados da tabela produtos.
Docente: Ana Batista 59
Select produto, precoFrom produtos;
Vai apresentar os campos produto e preço da tabela produtos.
Docente: Ana Batista 60
Operadores usados na cláusula where
Operadores de comparaçãoOperadores de comparação:
= igualdade< menor que> Maior que<= menor ou igual>= maior ou igual<> Diferente de
Docente: Ana Batista 61
Docente: Ana Batista 62
Outros operadores de comparaçãoOutros operadores de comparação:
Between – compreendido entreIn – dentro deLike – semelhante a Is (not) null – é (não é) valor nulo
Docente: Ana Batista 63
Operadores lógicosOperadores lógicos:
And – eOr – ouNot - não
Exemplos
Select *From produtosWhere preco>=200 and preco<=400;
Select *From produtosWhere preco between 200 and 400;
Docente: Ana Batista 64
Select *From produtos Where preco= 100 or preco=200;
Select *From produtosWhere preco in (100, 200);
Docente: Ana Batista 65
Select *From produtosWhere produto like “P%”;
Vai buscar todos os dados de produtos, cujo nome de produto comece com a letra P.
Docente: Ana Batista 66
Select *From produtosWhere produto like “%office”;
Vai buscar tds os dados de Produtos, cujo produto tenha a palavra office no seu nome.
Docente: Ana Batista 67
Select *From produtosOrder by preco desc;
Vai buscar todos os dados da tabela produtos ordenando o preço por ordem descendente.
Docente: Ana Batista 68
Select *From produtosWhere preco>200Order by produto;
Ordena por ordem alfabética crescente, os produtos cujos preços são maiores que 200.
Docente: Ana Batista 69
Funções de cálculos e agregações
Função Significado
Count Devolve o nº de linhas/registos encontrados
Sum Devolve a soma de todos os valores encontrados no campo indicado
Avg Devolve a média
Max Devolve o maior valor
Min Devolve o menor valor
Docente: Ana Batista 70
Tabela Produtos
CodPro Produto Preco
1 Portátil 400
5 Portátil 200
3 Ms Office 150
4 Impressora 100
6 Impressora 50
2 Berbequim 50
Docente: Ana Batista 71
Função Contar
Select count (*) As TotalFrom Produtos;
Vai contar quantas linhas existem na tabela Produtos e devolve o resultado através do campo total.
Docente: Ana Batista 72
Total
6
Exemplo
Select count (distinct preco)From produtos;
Devolve o número de preços distintos no campo preço, neste caso, o resultado seria 5; o preço 50 só é contado uma vez.
Docente: Ana Batista 73
Funções Sum e Avg - exemplo
Select avg(preco) as MediaFrom produtos;
O resultado será a média do preço dos produtos.
Docente: Ana Batista 74
Select Sum(preco)From produtosWhere produto like “portátil”;
O resultado será a soma dos preços dos produtos correspondentes a portáteis. Resultado: 600
Docente: Ana Batista 75
Funções max e min
Select max(preco)From produtos;
Seleciona o maior valor encontrado.
Docente: Ana Batista 76
Select min(preco)From produtosWhere produto like “impressora”;
O resultado será o menor valor encontrado, tendo em conta os produtos de nome impressora.
Docente: Ana Batista 77
Claúsulas group by e having
A claúsula Group by é usada para
agrupar dados que contenham
características semelhantes.
Normalmente, é usada em conjugação
com as funções de agregação (count,
sum, avg, max e min), para obter
cálculos por grupos.Docente: Ana Batista 78
Exemplo 1
Select produto, count(*)From produtosGroup by produto;
Vamos obter uma listagem com os nomes dos diferentes produtos e com a indicação de quantos registos de cada produto existem.
Docente: Ana Batista 79
Resultado do exemplo anterior:
Produto Count(*)
Berbequim 1
Impressora 2
Ms Office 1
Portátil 2
Docente: Ana Batista 80
Exemplo 2
Select produto, max(preco)From produtosGroup by produto;
Iremos obter o preço mais elevado dentro de cada grupo de produtos com o mesmo nome.
Docente: Ana Batista 81
Quando se utiliza a cláusula group by,
também podemos acrescentar a cláusula
having.
A cláusula having aplica-se aos grupos de
registos, agrupados com group by,
apresentando apenas qs que correspondem
à condição indicada com having.
Docente: Ana Batista 82
Exemplo 3
Select produto, max(preco)From produtosGroup by produtoHaving max(preco) > 100;
Aqui iremos obter o preço mais elevado de cada grupo de produtos com o mesmo nome, mas queremos obter os grupos de produtos que têm um preço máximo superior a 100.
Docente: Ana Batista 83
Resultado do exemplo 3
Produto Max(preco)
Ms Office 150
Portátil 400
Docente: Ana Batista 84
Mais exemplos de comandos…
Select *From clientes, encomendas;
Vai buscar todos os dados, das 2 tabelas.
Docente: Ana Batista 85
Select *From clientes, encomendasWhere clientes.codcli=encomendas.cod.cli;
Esta igualdade na cláusula where vai fazer com que sejam apresentados os dados dos clientes, com os dados das encomendas, mas apenas daqueles em que os valores dos campos codcli coincidem nas 2 tabelas.
Docente: Ana Batista 86
Expressão inner join
O exemplo anterior pode ser substituído pela expressão inner join na cláusula from (deixando ser necessário utilizar a cláusula where).
Select *From clientes inner join encomendas onClientes.codcli=encomendas.codcli;
Docente: Ana Batista 87