A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Técnico Integrado em Informática

Apresentações semelhantes


Apresentação em tema: "Técnico Integrado em Informática"— Transcrição da apresentação:

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

2 PARTE I

3 TIPOS DE DADOS

4 Principais tipos DATE DATETIME TIME YEAR (2|4)
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

5 Principais tipos Numéricos
INT (M) UNSIGNED ZEROFILL = INTEGER Signed: a Unsigned: 0 a FLOAT (M,D) UNSIGNED ZEROFILL Single-precision: 7 casas decimais E+38 E+38 DOUBLE (M,D) UNSIGNED ZEROFILL Double-precision: 15 casas decimais E+308 E+308 DECIMAL (M ,D) UNSIGNED ZEROFILL Double armazenado em caracteres. Geralmente usado para valores monetários.

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) Não preenche espaços vazios. (+ novo) TEXT (M) String usado para armazenamento de dados textuais. Non Case-Sensitive: “texto” == “Texto”

7 Principais tipos de Data/Hora
DATE AAAA-MM-DD  Exemplo: ‘ ’ até DATETIME AAAA-MM-DD HH:MM:SS Exemplo: ‘ :25:56’ :00:00 até :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

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 Na inserção, campo pode assumir zero ou mais valores. TABLE Filme ( genero SET (‘ação’, ‘terror’, ‘comédia’, ‘drama’, ‘romance’) INSERT INTO Pessoa VALUES (‘Resident Evil’, ‘ação, terror’);

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)

10 Características dos tipos
Algumas convenções no uso dos tipos ZEROFILL Preenche o campo com zeros. Exemplo INT(6) ZEROFILL Inserir 8  UNSIGNED Só aceita valores positivos unsigned = sem sinal ZEROFILL assume automaticamente UNSIGNED.

11 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).

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”)

14 MySQL Query Browser

15 MS Query Browser Instalado no pacote “Gui Tools”
Executa: 1 comando SQL (Resultset) N comandos SQL (Script)

16 Definindo esquemas (estrutura)
DDL (Data Definition Language) Definindo esquemas (estrutura)

17 CREATE/DROP DATABASE CREATE DATABASE hospital;
#cria base de dados CREATE 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 dados DROP 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\

18 CREATE TABLE CREATE 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\...

19 CREATE/DROP TABLE RENAME TABLE paciente TO paciente2006;
#renomeia tabela RENAME TABLE paciente TO paciente2006; #cria tabela com cautela CREATE TABLE IF NOT EXISTS hospital; DROP 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.

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 campo tipo int

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

22 FOREIGN KEY (FK) # FKs de tabelas diferente  declaração separada
CREATE TABLE transacao ( # tabela 1:1:1 cliente_cod VARCHAR (20), # PK FK conta_cod VARCHAR (10), # PK FK filial_cod VARCHAR (5), # FK data 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) );

23 FOREIGN KEY (FK) # FKs da mesma tabela  declaração única
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 única FOREIGN KEY (tel_ddd, tel_num) REFERENCES telefone (ddd, num) );

24 TIPOS DE TABELAS Principais tipos de tabelas do MySQL MyISAM InnoDB
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

25 FOREIGN KEY (FK) # FKs da mesma tabela  declaração única
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 única FOREIGN KEY (tel_ddd, tel_num) REFERENCES telefone (ddd, num) ) Type=InnoDB; ou... Engine=InnoDB;

26 ALTER TABLE ALTER TABLE tabela
ADD [ COLUMN ] coluna tipo [ restrição_de_coluna [ ... ] ] ALTER TABLE cliente ADD cliente_cod int unsigned not null, ADD tel_ddd int(3) zerofill, ADD tel_num int(9) zerofill ALTER [ COLUMN ] coluna { SET DEFAULT valor | DROP DEFAULT } ALTER TABLE cliente ALTER obs SET default ‘Observações‘ ALTER TABLE cliente ALTER obs DROP default RENAME obs TO observacao

27 Exercício Crie 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.

28 Inserindo dados (povoamento)
DML (Data Manipulation Language) Inserindo dados (povoamento)

29 INSERT INTO CREATE 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);

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');

31 SELECT CREATE 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;

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.

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.

34 Exercício Crie 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.

35 PARTE II

36 TABLE CREATE 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;

37 PK e FK PRIMARY KEY(coluna1, coluna2);
FOREIGN KEY (coluna1, coluna2) REFERENCES <tabela>(coluna1,coluna2); ON UPDATE ação ON 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

38 ALTER TABLE ALTER 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

39 ALTER TABLE Adicionando campo telefone
ALTER 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.

40 ALTER TABLE ALTER TABLE paciente DROP 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).

41 ALTER TABLE ALTER 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.

42 ALTER TABLE Modificando atributos dos campos ‘idade’ e ‘cidade’.
ALTER TABLE hospital.paciente MODIFY COLUMN idade INTEGER UNSIGNED, MODIFY COLUMN cidade VARCHAR(45); Modificando atributos dos campos ‘idade’ e ‘cidade’.

43 ALTER TABLE ALTER 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 tabela RENAME TO item_compra; ALTER TABLE compra_produto # muda nome da coluna CHANGE codigo cod int unsigned;

44 PARTE III

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.

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. WHERE data >= ‘ ’; WHERE YEAR(data) >= 2005;

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. WHERE NOT ((hora>=’08:00’ AND hora=<’12:00’) OR (hora>=’13:00’ AND hora=<’18:00’));

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: WHERE UPPER(doenca) = ‘RESFRIADO’ AND UPPER(cidade) = ‘CAMPO MOURÃO’; Pode-se usar os operadores OR, AND e NOT.

49 UPDATE UPDATE tabela SET coluna = valor/expressão WHERE condição;
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;

50 UPDATE UPDATE 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.

51 UPDATE UPDATE paciente SET plano = ‘infantil’
WHERE year(nasc)>= 1998; #( )=1998 Define plano ‘infantil’ para pacientes de até 10 anos WHERE year(now()) – year(nasc) <= 10;

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(‘ );

53 Funções de data/hora 2/2 Ex: '2007-12-15 23:50:26'
DAYOFMONTH(data) Mesmo que DAY(data) DAYOFWEEK(data) Retorna: 1-7 (1=Domingo) DAYOFYEARY(data) Retorna: 1-366 NOW() Retorna data + hora atual: Ex: ' :50:26' OBS:Para testar estas funções use: SELECT YEAR(‘ );

54 UPDATE UPDATE 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.

55 UPDATE Em duas partes: UPDATE locacao SET devendo = TRUE
WHERE diasLocacao > 2; SET debito = (diasLocacao–2) * 3

56 UPDATE CASE Com condicional: UPDATE funcionarios SET salario = CASE
WHEN salario <= 1000 THEN salario * 1.20 ELSE salario * 1.10 END;

57 Exemplo Vários casos: UPDATE funcionarios SET salario = CASE
WHEN salario = 1000 THEN salario * 1.20 WHEN salario = 1500 THEN salario * 1.15 ELSE salario * 1.05 END;

58

59 MySQL  Instalação Instalando MySQL  Execução
Auto-Executando como Windows Service Executando pelo console  Utilização Usando MySQL shell Usando Query Browser

60  Instalação Download Documentação (BR e EN) Site: www.mysql.com
MySQL Server 5 Contêm MySQL Console MySQL GUI Tools (opcional) Documentação (BR e EN)

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

62  Execução (console) C:\Arquivots de Programas\
MySQL\MySQL Server 5.0\bin\mysqld-nt.exe

63  Utilização Usando MySQL Shell Abrir outro console mysql db_name ou
mysql --user=user_name --password=your_password db_name

64  Utilização Usando Query Browser

65  Utilização Usamos o Query Browser para Povoar banco
Criar Base Criar Tabelas Atributos Chaves primárias (Primary Keys - PK) Restrições (constraints) Chaves estrangeiras (Foreign Keys - FK) Povoar banco Realizar consultas

66  MySQL Query Browser


Carregar ppt "Técnico Integrado em Informática"

Apresentações semelhantes


Anúncios Google