m y sql prof. andré rabelo. m y sql mysql é um sgdb multiusuário que utiliza a linguagem de banco...

40
MYSQL Prof. André Rabelo

Upload: rosangela-azeredo-da-cunha

Post on 07-Apr-2016

227 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQLProf. André Rabelo

Page 2: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL MySQL é um SGDB multiusuário que utiliza a

linguagem de banco de dados SQL.

É uma implementação cliente-servidor.

Entre suas vantagens podemos destacar: VELOCIDADE ROBUSTEZ USABILIDADE

Page 3: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL - CARACTERÍSTICAS Manipula número ilimitado de usuários

simultâneos; Alta velocidade de execução; Possui APP’s C, C++, JAVA, PERL, PHP entre outros. Portabilidade Disponibiliza vários tipos de dados Suporte completo a operadores SQL e suas funções Sistemas de privilégios simples Suporte a ODBC Disponibiliza registros de tamanhos fixos e variados Manipula COMPROVADAMENTE grandes bancos de

dados(50.000.000 de registros)

Page 4: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL - ESTRUTURA O conceito da estrutura que mantém os blocos

de informações é conhecido como TABELA.

Estes registros por sua vez são constituídos de objetos menores conhecidos como tipo de dados.

Os tipos de dados juntos podem ser chamados de registro

BANCO DE DADOS> TABELAS> REGISTRO> TIPODE DADOS

Page 5: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL - ESTRUTURA Tipos de dados MySQL:

CHAR(M) – strings de tamanho fixo (1 a 255) VARCHAR(M) – strings de tamanho flexível(1 a

255) INT(M) – inteiro entre -2147483648 e

2147483647 FLOAT[(M,D)] – números decimais com D casas DATE – armazenamento de datas no

formato”YYYY-MM-DD” TEXT/BLOB – strings entre 255 e 65535

Page 6: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL - ESTRUTURA Tipos de dados MySQL – ATRIBUTOS:

PRIMARY KEY(chave primária) – Usado para diferenciar os registros de uma tabela. Impedindo chaves repetidas;

Auto_increment – incrementa automaticamente um registro quando este é inserido(auto-numeração)

NOT NULL – bloqueia valores nulos

Page 7: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL - ESTRUTURA Privilégios

Pela atribuição de um conjunto de privilégios um usuário em um determinado host tem permissão para executar comandos sobre a base de dados.

O sistema de privilégios MySQL se baseia em três funções principais:

Host User DB

Page 8: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – O AMBIENTE Realizar instalação do SGBD MySQL.

Page 9: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – O AMBIENTE Acesso:

mysql –u root –p

Mostrando bases disponíveisshow databases;

Criando base de dadoscreate database projeto;

Selecionando base de dadosuse projeto;

Page 10: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – O AMBIENTE Criando Tabela:

create table Aluno ( ID int not null auto_increment primary key, Nome varchar(40), Email varchar(30), DataNasc date, Matricula char(9) );

Mostrar tabelas do banco selecionadoshow table;

Mostrar estrutura de uma tabeladesc table;

Page 11: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – O AMBIENTE Inserindo campo em tabela:

alter table aluno add endereco varchar(100) after nome

Apagando campo em tabela:alter table aluno drop email;

Apagando tabela:drop table aluno;

Apagando banco de dados:drop database projeto;

Page 12: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – CONSULTAS SQL Inserindo registros:

insert into alunos(null, ‘André’, ‘Rua Bambui’,’510’,’1977-06-21’,’1234567’);

Selecionando Registros:

select * from aluno;

Apagando Registro:

delete from aluno where id =2;

Page 13: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – CONSULTAS SQL Atualizando Registros

update aluno set nome = ‘André Rabelo’ where id = 1

Page 14: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – BASE DE TESTES Utilizaremos para nossos exercícios a base

de testes Adventure Works. Disponível no link:

http://sourceforge.net/projects/awmysql/files/AWBackup.zip/download

Page 15: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

INFORMAÇÕES SOBRE A BASE DE TESTES A AdventureWorks é uma base de dados de

testes liberada gratuitamente pela MICROSOFT e migrada para o MySQL

No link abaixo podemos encontrar especificações sobre todas as tabelas do AW.

http://technet.microsoft.com/pt-br/library/ms124438(SQL.100).aspx

Page 16: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

IMPORTANDO A AW PARA O SEU COMPUTADOR Para executarmos arquivos com dados SQL

no MySQL utilizamos o comando source:

source [caminho]

Page 17: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Deve-se ressaltar que a linguagem SQL é

utilizada tanto por profissionais responsáveis pelos dados, onde é ressaltada principalmente pela figura do DBA, quanto por desenvolvedores.

Estes últimos estão preocupados em “transformar dados em informações”.

Portanto, para os desenvolvedores costuma-se dizer que conhecer o SELECT já basta, devido a importância deste comando.

Page 18: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Utilizaremos a base de testes AW para executar comandos

básicos através de exemplos.

Exemplo 01 – Selecione todos campos(ou colunas) da tabela CONTACT(contém uma lista de nomes e informações relativas a todos clientes, funcionários e fornecedores).

SELECT * FROM CONTACT

O exemplo acima utiliza o coringa “*” para selecionar todos campos de maneira como foram criados.A instrução SELECT, seleciona um grupo de registros de uma ou mais tabelas.A instrução FROM nos indica a necessidade de pesquisarmos tais dados na tabela CONTACT.

Page 19: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Cláusula WHERE:

O WHERE corresponde ao operador “restrição” da álgebra relacional. Contém a condição que os registros devem obedecer a fim de serem listados.

Pode comparar valores em colunas, literais, expressões aritméticas ou funções.

Podemos utilizar os seguintes operadores lógicos:Operador Significado= Igual a > Maior que< Menor que>= Maior OU igual a<= Menor OU igual a

Page 20: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Utilização de Select com cláusula where:

SELECT * FROM CONTACT WHERE contactid = 234

SELECT * FROM CONTACT WHERE FIRSTNAME = ‘Gustavo’//em textos o conjunto de caracteres devem

estar //em apóstrofos OU aspas na cláusula where.

Page 21: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Exemplo 02 – Selecione todos funcionários que

recebem mais de $ 50.00 a hora. Apresente o código do funcionário e o seu salário mensal(salHora * 8 * 30):

RESPOSTA: Neste problema precisamos de uma expressão, que é a combinação de um ou mais valores, operadores ou funções que resultarão em um valor. Esta expressão poderá conter nomes de colunas, valores numéricos, constantes e operadores aritméticos.

//a tabela EMPLOYEEPAYHISTORY contém //informações sobre pagamentos de funcionários.

SELECT EmployeeID, Rate * 8 * 30 FROM EMPLOYEEPAYHISTORY WHERE Rate > 50

Page 22: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Exemplo 03 – Apresente a instrução anterior porém no

lugar dos nomes “feios” employeeID, rate*8*30, apresente os títulos CÓD FUNCIONÁRIO e SAL MENSAL.

Resposta: Neste exemplo deveremos denominar colunas por apelidos. Os nomes mostrados, são os nomes dados as colunas das tabelas. Utilizamos os apelidos para apresentarmos nomes mais sugestivos a usuários, não acostumados ao nosso “informatiquês”.

SELECT employeeID "CÓDIGO FUNC",rate*8*30 "SAL MENSAL"

FROM EMPLOYEEPAYHISTORY WHERE rate > 50

Page 23: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Exemplo 04 – Exiba todos os salários

existentes na empresa porém omita eventuais duplicidades.

RESPOSTA: A cláusula DISTINCT elimina duplicidades, significando que somente relações distintas serão apresentadas como resultado de uma pesquisa.

SELECT DISTINCT RATE FROM EMPLOYEEPAYHISTORY

Page 24: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT EXEMPLO 05 – Liste os nomes e email’s de cada contato

(TABELA CONTACTS), porém classificadso em ordem crescente. Faça o mesmo em ordem decrescente.

RESPOSTA: Para ordenarmos a ordem de apresentação dos registros utilizamos a cláusula ORDER BY. A cláusula DESC coloca os registros em ordem decrescente:

SELECT FIRSTNAME,EMAILADDRESS FROM CONTACT ORDER BY FIRSTNAME

SELECT FIRSTNAME,EMAILADDRESS FROM CONTACT ORDER BY FIRSTNAME DESC

Page 25: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT EXEMPLO 06 – Selecione todos contatos que

tem o sobrenome “Adams” Resposta:

SELECT * FROM CONTACT WHERE LASTNAME = "Adams“

O exemplo exigiu uma restrição pelo sobrenome “Adams” e assim foi necessário utilizarmos a cláusula where.

Podemos utilizar outros operadores nesta cláusula, exemplos abaixo:

Page 26: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECTOperador SignificadoBETWEEN .... AND .... Entre dois valores(inclusive)In(...) Lista de valoresLIKE Com um padrão de caracteresIS NULL É um valor nulo

Page 27: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Exemplos://funcionarios com salário/hora entre 20 e 50SELECT EMPLOYEEID,RATE FROM EMPLOYEEPAYHISTORY WHERE RATE BETWEEN 20 AND 50//funcionários que tenham salário/hora iguais a //25,24,13.45,9.5SELECT EMPLOYEEID,RATE

FROM EMPLOYEEPAYHISTORY WHERE RATE IN (25,24,13.45,9.5)

Page 28: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT//contatos com nomes que iniciam com a letra

“F”SELECT * FROM CONTACT

WHERE FIRSTNAME LIKE “F%”//O símbolo % pode ser usado para construir //pesquisas (% = qualquer sequencia de

nenhum ou //vários caracteres.//contatos que não foram cadastrados

apresentaçõesSELECT * FROM CONTACT

WHERE TITLE IS NULL

Page 29: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Operadores Negativos

Operadore Descrição<> DiferenteNOT NOME_COLUNA = Diferente da colunaNOT NOME_COLUNA > Não maior que NOT BETWEEN Não está entre os valoresNOT IN Não existe em uma lista de valores

dadaNOT LIKE Diferente do padrão de caracteres

dadoIS NOT NULL Não é um valor nulo

Page 30: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Exemplo 07 – Selecione os empregados que

o salário/hora sejam menores de 20 e maiores que 50.

RESPOSTA – Necessitamos aqui de operadores negativos:

SELECT EMPLOYEEID,RATE FROM EMPLOYEEPAYHISTORY WHERE RATE NOT BETWEEN

20 AND 50

Page 31: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Exemplo 08 – Selecione todos os funcionários

com salário/hora NÃO estejam entre 20 e 50 E que recebam quinzenalmente(coluna PayFrequency quando = 1 salário mensal quando = 2 salário quinzenal)

RESPOSTA: necessitaremos de consultas com condições múltiplas. Operadores AND(E) e OR(OU).

SELECT EMPLOYEEID,RATE FROM EMPLOYEEPAYHISTORY WHERE RATE NOT BETWEEN 20 AND 50

AND PAYFREQUENCY = 2

Page 32: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Funções de CaracteresFunção ResultadoLower Força caracteres maiusculos a aparecerem

minusculosUpper Força caractere minúsculos a aparecerem

maiúsculosConcat(x,y) Concatena a string X com a string YSubstring(str,x,y)

Extrai uma substring de str, começada em X e terminada em Y

Page 33: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT//Nome de todos os contatos com letra//minúscula

SELECT LOWER(FIRSTNAME) FROM CONTACT

//as 3 primeiras letras dos nomes de todos os //contatos

SELECT SUBSTRING(FIRSTNAME,1,3) FROM CONTACT

//exiba todos os nomes dos contatos no seguinte formato: “Mr. Gustavo”SELECT CONCAT(TITLE," ",FIRSTNAME) FROM CONTACT

Page 34: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Funções Agregadas(ou de agrupamento)Função RetornoAvg(n) Média do valor n, ignorando nulosCount(expr) Vezes que o número da expr avalia para algo

não nuloMax(expr) Maior valor da exprMin(expr) Menor valor da exprSum(n) Soma os valores de n, ignorando nulos

Page 35: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Exemplo 9 – Apresente a média, o maior, o

menor e também a somatória dos valores/hora dos salários pagos a funcionários:

RESPOSTA:SELECT AVG(RATE) FROM EMPLOYEEPAYHISTORY;SELECT MAX(RATE) FROM EMPLOYEEPAYHISTORY ;SELECT MIN(RATE) FROM EMPLOYEEPAYHISTORY ;SELECT SUM(RATE) FROM EMPLOYEEPAYHISTORY ;

Page 36: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT AGRUPAMENTOS

As funções de grupo operam sobre grupos de registros (linhas). Retornam resultados baseados em grupos em vez de resultados por registro individual.

Utilizamos a cláusula GROUP BY é usada para dividir a consulta em grupos.

Exemplo 10 – Apresente a média dos salários pagos quinzenalmente e mensalmente:

SELECT PAYFREQUENCY,AVG(RATE) FROM EMPLOYEEPAYHISTORYGROUP BY PAYFREQUENCY

ATENÇÃO: QUALQUER COLUNA OU EXPRESSÃO QUE NÃO SEJA UMA FUNÇÃO AGREGADA DEVERÁ CONSTAR NA CLÁUSULA GROUP BY.

NÃO PODEMOS ASSIM TENTAR IMPOR UMA “RESTRIÇÃO” DO TIPO AGREGADA A CLÁUSULA WHERE.

Page 37: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Cláusula HAVING:

Pode ser utilizada para especificar quais grupos serão exibidos, portanto restringindo-os.

Exemplo 11 - Apresente o número de contatos que querem receber promoções da empresa via email(campo EmailPromotion = 0 não deseja, EmailPromotion =1 deseja). Não exiba valores nulos ou diferentes de 0 ou 1.

SELECT EMAILPROMOTION, COUNT(CONTACTID) FROM CONTACTGROUP BY EMAILPROMOTIONHAVING EMAILPROMOTION IN(0,1)

Page 38: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Seqüência do comando SELECT:

SELECT COLUNA(S) FROM TABELA(S) WHERE CONDIÇÃO(ÕES) DO(S) REGISTRO(S) GROUP BY CONDIÇÃO(ÕES) DO(S) REGISTRO(S) HAVING CONDIÇÃO(ÕES) DO(S) REGISTRO(S) ORDER BY COLUNA(S)

A seguinte avaliação será feita: WERE – para estabelecer linhas individuais(não

pode conter funções de grupo; GROUP BY – para fixar grupos; HAVING – para selecionar grupos de exibição.

Page 39: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Junções por igualdade

O relacionamento existente entre tabelas devem possuir colunas interligadas com valores iguais. A junção é realizada em sua maioria entre chaves primárias e estrangeiras.

Exemplo 12 – Listar todos os nomes e datas de nascimento todos os empregados(tabelas employee e contact)

RESPOSTA – Observamos que o nome do empregado se encontra na tabela CONTATO(FIRSTNAME) e a data de nascimento se encontra na tabela EMPLOYEE(BirthDate), vemos também que o relacionamento entre as duas se dá pelo campo CONTACT ID. Então:

SELECT FIRSTNAME,BIRTHDATE FROM EMPLOYEE,CONTACT

WHERE EMPLOYEE.ContactID = CONTACT.ContactID

Page 40: M Y SQL Prof. André Rabelo. M Y SQL MySQL é um SGDB multiusuário que utiliza a linguagem de banco de dados SQL. É uma implementação cliente-servidor

MYSQL – COMANDO SELECT Exemplo 13 – Liste todos os nomes dos

funcionários e seus salários. RESPOSTA: Repare que o campo FirstName está

na tabela Contact enquanto o campo Rate se encontra na tabela EmployeePayHistory. O relacionamento entre estas tabelas existe somente por intermédio da tabela Employee. Portanto:SELECT FIRSTNAME,RATE FROM EMPLOYEE E,CONTACT C, EMPLOYEEPAYHISTORY EHWHERE E.CONTACTID = C.CONTACTID AND E.EMPLOYEEID = EH.EMPLOYEEID