leandro lago da silva banco de dados i técnico integrado em informática 2010 mysql e esquemas...

66
Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

Upload: stefany-norma-sampaio-corte-real

Post on 07-Apr-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

Leandro Lago da SilvaBanco de Dados I

Técnico Integrado em Informática

2010

MySQL e Esquemas

Usando MySQL Query

BrowserMySQL Console

Page 2: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

2

• PARTE I

Page 3: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

3

• TIPOS DE DADOS

Page 4: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

4

Principais tipos• INT (M) UNSIGNED ZEROFILL• FLOAT (M,D) UNSIGNED ZEROFILL • DOUBLE (M,D) UNSIGNED ZEROFILL • DECIMAL (M ,D) UNSIGNED ZEROFILL • BLOB (M)• CHAR (M)• VARCHAR (M)• TEXT (M)• DATE• DATETIME• TIME• YEAR (2|4)• ENUM• SET

Page 5: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

5

Principais tipos Numéricos• INT (M) UNSIGNED ZEROFILL = INTEGER

– Signed: -2.147.483.648 a 2.147.483.647– Unsigned: 0 a 4.294.967.295.

• FLOAT (M,D) UNSIGNED ZEROFILL – Single-precision: 7 casas decimais

• -3.402.823.466E+38• 3.402.823.466E+38

• DOUBLE (M,D) UNSIGNED ZEROFILL – Double-precision: 15 casas decimais

• -1.7976931348623157E+308• 1.7976931348623157E+308

• DECIMAL (M ,D) UNSIGNED ZEROFILL – Double armazenado em caracteres.– Geralmente usado para valores monetários.

Page 6: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

6

Principais tipos Textuais• BLOB (M)

– String usado para armazenamento de dados binários.– 65535 caracteres.– Case-sensitive: “texto” != “Texto”

• CHAR (M)– 255 caracteres– Preenche espaços vazios com caracter espaço.– Ex: CHAR(10) Inserir “John” “John “

• VARCHAR (M)– 255 caracteres– Não preenche espaços vazios. (+ novo)

• TEXT (M)– String usado para armazenamento de dados textuais.– Non Case-Sensitive: “texto” == “Texto”

Page 7: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

7

Principais tipos de Data/Hora• DATE

– AAAA-MM-DD Exemplo: ‘2009-08-01’– 1000-01-01 até 9999-12-31

• DATETIME– AAAA-MM-DD HH:MM:SS– Exemplo: ‘2009-08-01 08:25:56’– 1000-01-01 00:00:00 até 9999-12-31 23:59:59

• TIME– HH:MM:SS Exemplo: ’08:25:56’– -838:59:59 até 838:59:59

• YEAR (2|4)– AAAA ou AA– 1901 até 2155

Page 8: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

8

Principais Tipos: Listas• ENUM

– Define lista de valores.– Na inserção, campo deve assumir um dos valores.

• TABLE Pessoa ( nome VARCHAR(45) PRIMARY KEY, sexo ENUM (‘M’, ‘F’) );

• INSERT INTO Pessoa VALUES (‘Jane Dark’, ‘F’);

• SET– Define lista de valores.– Na inserção, campo pode assumir zero ou mais valores.

• TABLE Filme ( nome VARCHAR(45) PRIMARY KEY, genero SET (‘ação’, ‘terror’, ‘comédia’, ‘drama’, ‘romance’) );

• INSERT INTO Pessoa VALUES (‘Resident Evil’, ‘ação, terror’);

Page 9: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

9

Características dos tipos• Algumas convenções no uso dos tipos– M• Indica o tamanho do campo

– Número de dígitos/letras

• Exemplo: INT (M), VARCHAR (M)

– D• Aplicada aos tipos de ponto flutuante• Indica o número de digitos após o ponto decimal.

Exemplo: FLOAT (M, D)

Page 10: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

10

Características dos tipos• Algumas convenções no uso dos tipos– ZEROFILL• Preenche o campo com zeros.• Exemplo

– INT(6) ZEROFILL– Inserir 8 000008

– UNSIGNED• Só aceita valores positivos

– unsigned = sem sinal• ZEROFILL assume automaticamente UNSIGNED.

Page 11: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

11

• MYSQL CONSOLE

Page 12: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

12

Para testar os códigos SQL• Instalar MySQL• Abrir console do Windows: “cmd.exe”

• Entrar no console do mysql:– mysql --user=usuario --password=senha– mysql -u usuario -p senha (abreviado)– mysql -u usurario (senha é pedida depois)

• Utilizar os SQL para – Criar e visualizar a estrutura de bases de dados– Criar e visualizar a estrutura de bases de tabelas– Inserir, remover e alterar dados nas tabelas.– Realizar consultas nas tabelas (relatórios).

Page 13: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

13

Comandos console mysql• show databases;

mostra bases de dados existentes• use <nome da base>;

seleciona a base de dados a ser usada• show tables;

mostra as tabelas contidas na base de dados selecionada• describe <nome da tabela>;

mostra a estrutura da tabela dada• source <caminho do arquivo de scripts>;

executa os scripts contidos no arquivo (pode ser “txt”)

Page 14: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

14

• MySQL Query Browser

Page 15: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

15

MS Query Browser• Instalado no pacote “Gui Tools”• Executa: 1 comando SQL (Resultset)

N comandos SQL (Script)

Page 16: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

16

DDL (Data Definition Language)

Definindo esquemas (estrutura)

Page 17: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

17

CREATE/DROP DATABASE#cria base de dadosCREATE DATABASE hospital;CREATE DATABASE `hospital`;CREATE DATABASE IF NOT EXISTS hospital;

#seleciona base de dados (chamado após CREATE DATABASE)USE hospital;

#remove base de dadosDROP DATABASE hospital;DROP DATABASE `hospital`;DROP DATABASE IF EXISTS hospital;

• No MySQL, cada Base de Dados é uma pasta:C:\Arquivos de Programas\MySQL\MySQL Server\data\hospital\

Page 18: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

18

CREATE TABLECREATE TABLE paciente ( pac_rg int(10), #inteiro de 10 dígitos nome varchar(45), #string de 45 caracteres idade int(10), cidade varchar(45), doenca varchar(45), PRIMARY KEY (pac_rg) #chave primária (PK));

• No MySQL, cada Tabela é um arquivo:C:\Arquivos de Programas\MySQL\MySQL Server\data\hospital\...

Page 19: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

19

CREATE/DROP TABLE#renomeia tabelaRENAME TABLE paciente TO paciente2006;

#cria tabela com cautelaCREATE TABLE IF NOT EXISTS hospital;

#cria tabela com cautelaDROP TABLE IF EXISTS hospital;

OBS: as tabelas sempre devem ser destruídas na ordem inversa que foram criadas por causa das dependências de chaves estrangeiras.

Page 20: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

20

PRIMARY KEY (PK)CREATE TABLE telefone (

ddd varchar(2), numero varchar(8), tipo int,

PRIMARY KEY (ddd, numero) # PK com N campos);

CREATE TABLE paciente (id int PRIMARY KEY # PK com 1 campoddd varchar(2),

numero varchar(8), tipo int);

Page 21: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

21

CONSTRAINTS (Restrições)

CREATE TABLE paciente ( pac_rg int(10) unsigned NOT NULL auto_increment, nome varchar(45) NOT NULL default ‘n/d’, idade int(3) unsigned default 18 zerofill, cidade varchar(45) NOT NULL default ‘n/d’, doenca varchar(45) NOT NULL default ‘n/d',

PRIMARY KEY (pac_rg,nome));

• Unsigned: não possui sinal (números positivos).• NULL: aceita valor null (padrão para todo campo caso deixe vazio).• NOT NULL: não pode ficar (NULL) na inserção do registro• Default: valor padrão, caso não seja especificado valor.

– Usada quando não queremos que null seja o valor padrão do campo.• AUTO_INCREMENT: incrementa em 1 o valor a cada novo registro.• PRIMARY KEY: indica os campos que são chave primária.• ZEROFILL: preenche com zeros à esquerda

Page 22: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

22

FOREIGN KEY (FK)CREATE TABLE transacao ( # tabela 1:1:1

cliente_cod VARCHAR (20), # PK FKconta_cod VARCHAR (10), # PK FKfilial_cod VARCHAR (5), # FKdata DATE,tipo VARCHAR(2),valor DECIMAL(12,2),

primary key (cliente_cod, conta_cod, data),

# FKs de tabelas diferente declaração separada FOREIGN KEY (cliente_cod)

REFERENCES cliente (cliente_cod), FOREIGN KEY (conta_cod)

REFERENCES conta (conta_cod), FOREIGN KEY (filial_cod)

REFERENCES filial (filial_cod));

Page 23: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

23

FOREIGN KEY (FK)CREATE TABLE cliente_tem_telefone (# tabela N:N

cliente_cod int unsigned not null, tel_ddd int(3) zerofill,

tel_num int(9) zerofill,

primary key (cod),

# FKs da mesma tabela declaração únicaFOREIGN KEY (tel_ddd, tel_num)

REFERENCES telefone (ddd, num));

Page 24: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

24

TIPOS DE TABELAS• Principais tipos de tabelas do MySQL– MyISAM

• Ignora restrições de chaves estrangeiras• Melhor desempenho• Sem transação (operação atômica)

– InnoDB• Verifica restrições de chaves estrangeiras• Pior desempenho• Com transação

Page 25: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

25

FOREIGN KEY (FK)CREATE TABLE cliente_tem_telefone (# tabela N:N

cliente_cod int unsigned not null, tel_ddd int(3) zerofill,

tel_num int(9) zerofill,

primary key (cod),

# FKs da mesma tabela declaração únicaFOREIGN KEY (tel_ddd, tel_num)

REFERENCES telefone (ddd, num))Type=InnoDB;

ou...

Engine=InnoDB;

Page 26: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

26

ALTER TABLEALTER TABLE tabela ADD [ COLUMN ] coluna tipo [ restrição_de_coluna [ ... ] ]

ALTER TABLE clienteADD cliente_cod int unsigned not null, ADD tel_ddd int(3) zerofill,ADD tel_num int(9) zerofill

ALTER TABLE tabelaALTER [ COLUMN ] coluna { SET DEFAULT valor | DROP

DEFAULT }

ALTER TABLE cliente ALTER obs SET default ‘Observações‘ALTER TABLE cliente ALTER obs DROP default

ALTER TABLE clienteRENAME obs TO observacao

Page 27: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

27

ExercícioCrie e destrua todas as tabelas

• Ambulatorio(numero, andar, capacidade)

• Medico(cod, crm, nome, idade, data_nasc, especialidade, amb_numero)

• Paciente(cod, nome, idade, cidade)

• Consulta(med_cod pac_cod, data, hora, diagnostico)

• Funcionario(cod, nome, idade, cidade, salário, amb_numero)

OBS: a ordem de criação e destruição é importante.

Page 28: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

28

DML (Data Manipulation Language)

Inserindo dados (povoamento)

Page 29: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

29

INSERT INTOCREATE TABLE pacientes ( pac_rg int(10) unsigned NOT NULL auto_increment, nome varchar(45) NOT NULL default ‘’, idade int(10) unsigned default ‘0’, cidade varchar(45) default ‘’, doenca varchar(45) NOT NULL default ‘’,

sexo enum(‘M’,’F’), PRIMARY KEY (pac_rg,nome));

INSERT INTO pacientes VALUES (12345,‘John Doe’,25,‘Sarandi’,‘Gripe’);

INSERT INTO pacientes (pac_rg, nome, doenca) VALUES (12345, ‘John Doe’, ‘Gripe);

Page 30: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

30

INSERT INTO• Inserindo várias linhas de uma só vez.

INSERT INTO paciente VALUES ('1', 'Mac', '25', NULL , 'gripe', 'm'), ('2', 'Ana', '24', 'Peromba', 'osmose', ‘f'), ('3', 'Jane', '25', 'Pitomba', 'gripe', ‘f'), ('4', 'Marlos', '20', 'Amebópolis', 'fedor', 'm'), ('5', 'Clark', '27', 'Pequenópolis', 'criptonose', 'm'), ('6', 'Barlos', '34', NULL, 'resfriado', 'm'), ('7', 'Ada', '24', 'Racoon City', 'T-Virus', ‘f'), ('8', 'Clara', '20', 'Campo da Lagoa',‘cotovelose',‘f');

Page 31: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

31

SELECTCREATE TABLE pacientes ( pac_rg int(10) unsigned NOT NULL auto_increment, nome varchar(45) NOT NULL default ‘’, idade int(10) unsigned default ‘0’, cidade varchar(45) default ‘’, doenca varchar(45) NOT NULL default ‘’,

sexo enum(‘M’,’F’), PRIMARY KEY (pac_rg,nome));

SELECT * FROM pacientes;

SELECT pac_rg, nome, idade FROM pacientes;

Page 32: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

32

OBS: Relacionamentos• Participação total

– FK precisa ser NOT NULL

• Se participação parcial– FK pode ser NULL

• Os tipos importam no relacinamento– FK deve ter mesmo tipo e restrições (exceto auto_increment) do campo

correspondente na tabela que cedeu o “impréstimo”.

• A ordem de criação importa:– Só é possível referenciar tabelas anteriores.

• A ordem de destruição importa:– Primeiro destruímos as tabelas com dependência.– Dica: use a ordem inversa da criação das tabelas.

Page 33: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

33

OBS: Erros do MySQL• As mensagens de erro não são claras como em Pascal.

• Erros comuns:– Erro de sintaxe “SINTAX ERROR...”• Algo errado na SQL.

– Erro de criação de tabela “CAN’T CREATE...”• Diferença de tipo entre PK e FK na outra tabela.

– Campo não existe “FIELD DOESN’T EXIST...”• Campo não definido na SQL da tabela.

• Query Browser:– Clique 2 vezes sobre o erro para ir à tabela errada.

Page 34: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

34

ExercícioCrie e destrua todas as tabelas

• Ambulatorio(numero, andar, capacidade)

• Medico(cod, crm, nome, idade, data_nasc, especialidade, amb_numero)

• Paciente(cod, nome, idade, cidade)

• Consulta(med_cod pac_cod, data, hora, diagnostico)

• Funcionario(cod, nome, idade, cidade, salário, amb_numero)

OBS: a ordem de criação e destruição é importante.

Page 35: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

35

• PARTE II

Page 36: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

36

TABLECREATE DATABASE [IF NOT EXISTS] nome;

DROP DATABASE [IF EXISTS] nome;

CREATE TABLE [IF NOT EXISTS] tabela ( coluna características, coluna características…);

DROP TABLE [IF EXISTS] tabela;

RENAME TABLE nome TO novo_nome;

Page 37: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

37

PK e FK• PRIMARY KEY(coluna1, coluna2);

• FOREIGN KEY (coluna1, coluna2) REFERENCES <tabela>(coluna1,coluna2);ON UPDATE açãoON DELETE ação,

• Ação– SET NULL: coloca NULL na FK– SET DEFAULT: coloca o valor DEFAULT na FK– CASCADE: passa a frente a operação– NO ACTION: não altera valor da FK– RESTRICT: não permite exclusão da PK

Page 38: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

38

ALTER TABLEALTER TABLE tabela

ADD coluna restrições [FIRST | AFTER coluna]

MODIFY coluna restrições [FIRST | AFTER coluna]

CHANGE coluna novo_nome restrições [FIRST | AFTER

coluna]

RENAME TO novo_nome_tabela // modifica nome da tabela

DROP coluna

Page 39: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

39

ALTER TABLEALTER TABLE hospital.paciente

ADD COLUMN telefone VARCHAR(10) AFTER doenca;

• Adicionando campo telefone• O campo vai depois do campo doenca.• Caso não tenhamos usado o comando “use hospital;”, será

preciso indicar a qual base de dados a tabela paciente pertence, como demonstrado neste exemplo.

Page 40: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

40

ALTER TABLEALTER TABLE pacienteDROP PRIMARY KEY,ADD PRIMARY KEY(pac_rg, nome);

• Redefine a chave para os campos pac_rg e nome.• A SQL primeiro remove (DROP PRIMARY KEY) as chaves e

depois define as novas (ADD PRIMARY KEY).

Page 41: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

41

ALTER TABLEALTER TABLE paciente

ADD COLUMN cpf VARCHAR(11)AFTER telefone, DROP PRIMARY KEY, ADD PRIMARY KEY(pac_rg, nome, cpf);

• Adicionando campo CPF que passa a ser parte da chave primária da tabela.

• A chave primária é redefinida neste exemplo de SQL.

Page 42: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

42

ALTER TABLEALTER TABLE hospital.pacienteMODIFY COLUMN idade INTEGER UNSIGNED,MODIFY COLUMN cidade VARCHAR(45);

• Modificando atributos dos campos ‘idade’ e ‘cidade’.

Page 43: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

43

ALTER TABLEALTER TABLE cliente

DROP PRIMARY KEY,DROP FOREIGN KEY (cep, rua, num),

ADD PRIMARY KEY (cpf),ADD FOREIGN KEY (end_id)

REFERENCES end(id);

ALTER TABLE compra_produto # muda nome da tabelaRENAME TO item_compra;

ALTER TABLE compra_produto # muda nome da colunaCHANGE codigo cod int unsigned;

Page 44: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

44

• PARTE III

Page 45: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

45

INSERT INTO• Inserindo dados de outras tabelas com SELECT

INSERT INTO paciente(nome, idade, cidade, doenca)SELECT nome, idade, cidade, 'resfriado'

FROM funcionario WHERE idade > 25;

• Inserindo na tabela paciente todos os funcionários com mais de 25 anos.

Page 46: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

46

DELETE FROM• Removendo todos os pacientes.DELETE FROM pacientes;

• Removendo todos os pacientes com resfriado.DELETE FROM pacientes WHERE doenca = ‘resfriado’;

• Removendo todos as consultas após 2005.DELETE FROM pacientes WHERE data >= ‘2005-01-01’;

DELETE FROM pacientes WHERE YEAR(data) >= 2005;

Page 47: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

47

DELETE FROM• Removendo todos as consultas realizadas no intervalo do horário

comercial.

DELETE FROM pacientes WHERE(hora>=’08:00’ AND hora=<’12:00’) OR

(hora>=’13:00’ AND hora=<’18:00’);

• Removendo todos as consultas realizadas fora do intervalo do horário comercial.

DELETE FROM pacientes WHERE NOT ((hora>=’08:00’ AND hora=<’12:00’) OR

(hora>=’13:00’ AND hora=<’18:00’));

Page 48: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

48

DELETE FROM• Removendo todos os pacientes com resfriado de Campo Mourão.DELETE FROM pacientes

WHERE doenca = ‘resfriado’ AND cidade = ‘campo mourao’;

• Nas buscas do MySQL não há distinção entre maiúsculas e minúsculas, assim como ele também desconsidera os acentos.

• Em outros bancos:DELETE FROM pacientes

WHERE UPPER(doenca) = ‘RESFRIADO’ AND UPPER(cidade) = ‘CAMPO MOURÃO’;

• Pode-se usar os operadores OR, AND e NOT.

Page 49: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

49

UPDATEUPDATE tabela SET coluna = valor/expressãoWHERE condição;

UPDATE tabela SET coluna = CASE WHEN condição THEN valor/expressão WHEN condição THEN valor/expressão WHEN condição THEN valor/expressão ELSE valor/expressão END;

Page 50: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

50

UPDATEUPDATE paciente SET idade = idade * 12;

• Idade passa a ser armazenada em meses.

UPDATE funcionario SET salario = salario * 1,5 WHERE funcao = ‘telefonista’;

• Aumentando em 50% o salário das telefonistas.

Page 51: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

51

UPDATE• UPDATE paciente SET plano = ‘infantil’ WHERE year(nasc)>= 1998;

#(2008-10)=1998

• Define plano ‘infantil’ para pacientes de até 10 anos

• UPDATE paciente SET plano = ‘infantil’ WHERE year(now()) – year(nasc) <= 10;

Page 52: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

52

Funções de data/hora 1/2

• YEAR(data) Retorna o ano• MONTH(data) Retorna o mês (1-12)• DAY(data) Retorna o dia (1-31)

• HOUR(hora) Retorna hora (0-23)• MINUTE(hora) Retorna minuto (0-59)• SECOND(hora) Retorna segundos(0-59)

• OBS:Para testar estas funções use:SELECT YEAR(‘2008-05-06);

Page 53: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

53

Funções de data/hora 2/2

• DAYOFMONTH(data) Mesmo que DAY(data)• DAYOFWEEK(data) Retorna: 1-7 (1=Domingo)• DAYOFYEARY(data) Retorna: 1-366

• NOW() Retorna data + hora atual: Ex: '2007-12-15 23:50:26'

• OBS:Para testar estas funções use:SELECT YEAR(‘2008-05-06);

Page 54: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

54

UPDATEUPDATE locacao SET atraso = TRUE, debito = (diasLocacao–2) * 3 #R$3,00 WHERE diasLocacao > 2;

• Calculando valor (aproximado) para os clientes que não devolveram um filme no prazo.

Page 55: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

55

UPDATE• Em duas partes:

UPDATE locacao SET devendo = TRUE WHERE diasLocacao > 2;

UPDATE locacao SET debito = (diasLocacao–2) * 3 WHERE diasLocacao > 2;

Page 56: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

56

UPDATE CASE• Com condicional:

UPDATE funcionariosSET salario = CASEWHEN salario <= 1000

THEN salario * 1.20ELSE salario * 1.10

END;

Page 57: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

57

Exemplo• Vários casos:

UPDATE funcionariosSET salario = CASE

WHEN salario = 1000 THEN salario * 1.20 WHEN salario = 1500 THEN salario * 1.15 ELSE salario * 1.05END;

Page 58: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

58

Page 59: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

59

MySQL Instalação• Instalando MySQL

Execução• Auto-Executando como Windows Service• Executando pelo console

Utilização• Usando MySQL shell• Usando Query Browser

Page 60: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

60

Instalação• Download– Site: www.mysql.com– MySQL Server 5• Contêm MySQL Console

– MySQL GUI Tools (opcional)

• Documentação (BR e EN)

Page 61: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

61

Instalação

• Modo de instalação

– Instalar como Windows Service• Carrega automático quando Windows abre

– Deixar para chamar manualmente• Chamar por console ou Windows Explorer

Page 62: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

62

Execução (console)• C:\Arquivots de Programas\

MySQL\MySQL Server 5.0\bin\mysqld-nt.exe

Page 63: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

63

Utilização• Usando MySQL Shell– Abrir outro consolemysql db_name oumysql --user=user_name --password=your_password db_name

Page 64: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

64

Utilização

• Usando Query Browser

Page 65: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

65

Utilização

• Usamos o Query Browser para– Criar Base– Criar Tabelas• Atributos• Chaves primárias (Primary Keys - PK)• Restrições (constraints)• Chaves estrangeiras (Foreign Keys - FK)

• Povoar banco• Realizar consultas

Page 66: Leandro Lago da Silva Banco de Dados I Técnico Integrado em Informática 2010 MySQL e Esquemas Usando MySQL Query Browser MySQL Console

66

MySQL Query Browser