apostila tlbd2 mysql 2010

78
 qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfg hjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfg hjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfg hjklzxcvbnmrtyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvbnmqwert yuiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklz xcvbnmqwertyuiopasdfghjklzxcvbnm   E Es s c c o o l l a a  T Té éc c n ni i c c a a d de e  P P r r a a i i a a Gr r a a n nd de e  TECNOLOGIAS E LINGUAGENS PARA BANCO DE DADOS II MySQL 2010 Simone Maria Viana Romano Email: [email protected] 

Upload: alex-alves

Post on 07-Jul-2015

341 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 1/78

 

qwertyuiopasdfghjklzxcvbnmqwerty

uiopasdfghjklzxcvbnmqwertyuiopasd

fghjklzxcvbnmqwertyuiopasdfghjklzx

cvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyui

opasdfghjklzxcvbnmqwertyuiopasdfg

hjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmq

wertyuiopasdfghjklzxcvbnmqwertyui

opasdfghjklzxcvbnmqwertyuiopasdfg

hjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmq

wertyuiopasdfghjklzxcvbnmqwertyui

opasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbn

mqwertyuiopasdfghjklzxcvbnmqwert 

yuiopasdfghjklzxcvbnmqwertyuiopas

dfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm

 

 

EEssccoollaa TTééccnniiccaa ddee PPrraaiiaa GGrraannddee TECNOLOGIAS E LINGUAGENS PARA

BANCO DE DADOS II

‐ MySQL ‐

2010 Simone Maria Viana Romano Email: [email protected] 

Page 2: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 2/78

 

T L B D I I E T E C D E P R A I A G R A N D E

2

 

Conteúdo INTRODUÇÃO ............................................................. ................................................................. ....................... 6 INSTALAÇÃO DO MYSQL................................................................................................................................7 ACESSANDO O MYSQL...................................................................................................................................17 MYSQL COMMAND LINE CLIENT ....................................................... ....................................................... 17 MYSQL QUERY BROWSER ............................................................. ............................................................ . 17 

PRINCIPAIS COMANDOS DO SERVIDOR ........................................................ .......................................... 18 EXIBINDO OS BANCOS DE DADOS: .......................................................... ................................................. 18 SHOW DATABASES;......................................................................................................................................18  REUTILIZANDO A SENHA DO ROOT..........................................................................................................19  UTILIZANDO UM BANCO DE DADOS:.......................................................................................................19  EXIBIR A ESTRUTURA OU ESQUEMA DO BANCO DE DADOS: ............................................... ............. 19 

BANCO DE DADOS...........................................................................................................................................21 CRIANDO UM BANCO DE DADOS ................................................ ....................................................... ....... 21 APAGANDO UM BANCO DE DADOS:.........................................................................................................21  EXERCICIOS ....................................................... .............................................................. .............................. 21 

ADICIONANDO USUÁRIOS............................................................................................................................22 INSERIR NA TABELA HOST: ........................................................... ........................................................... .. 22 INSERIR UM USUÁRIO:.................................................................................................................................22  EXIBIR O CONTEUDO DA TABELA USER: ........................................................ ........................................ 22 INSERIR NA TABELA DB:.............................................................................................................................23  COLUNAS DA TABELA USER......................................................................................................................23  

TIPOS DE DADOS (DATATYPES)..................................................................................................................24 NUMÉRICOS ......................................................... ............................................................. ............................. 24 

ORDINAIS: TIPOS INTEIROS........................................................ ........................................................... ... 24  NÃO ORDINAIS: PONTOS FLUTUANTES. ............................................................ .................................... 24  AUTO_INCREMENT .......................................................... ............................................................... ........... 25 

DATA E HORA.................................................................................................................................................25  CADEIA............................................................................................................................................................26  

TIPOS DE TABELAS.........................................................................................................................................27 TST (TABELAS SEGURAS COM TRANSAÇÃO): ....................................................................................27   MYISAM ................................................... ........................................................... ......................................... 28 

CRIANDO TABELAS ......................................................... ................................................................... ............ 30 CRIANDO TABELA COM BASE EM OUTRA TABELA:.............................................................................30  EXIBINDO AS CHAVES DE UMA TABELA: ..................................................... .......................................... 30 EXIBINDO A ESTRUTURA DE UMA TABELA ......................................................... .................................. 30 

ALTERANDO TABELAS..................................................................................................................................31 ALTERANDO TIPO DE COLUNAS .......................................................... ..................................................... 31 ADICIONANDO COLUNAS...........................................................................................................................31  ADICIONANDO CHAVE PRIMÁRIA............................................................................................................31  ADICIONANDO CHAVE ESTRANGEIRA....................................................................................................31  DELETANDO CHAVES PRIMÁRIAS............................................................................................................31  ALTERANDO A TABELA PARA COMPLEMENTAR AS INSTRUÇÕES .................................................. 32 

RENOMEANDO TABELAS..............................................................................................................................32 APAGANDO TABELAS ......................................................... ............................................................... ............ 32 TRUNCANDO TABELAS ........................................................... ........................................................... ........... 32 

Page 3: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 3/78

 

T L B D I I E T E C D E P R A I A G R A N D E

3

RESTRIÇÕES (CONSTRAINT’S)....................................................................................................................33 CHAVE PRIMÁRIA (PRIMARY KEY) ........................................................ .................................................. 33 ENUM...............................................................................................................................................................33  EXERCÍCIOS ....................................................... .............................................................. .............................. 33 TAREFA

 01 - TABELAS.................................................................................................................................34

 MANIPULANDO DADOS .......................................................... ............................................................ ........... 35 INSERINDO DADOS.......................................................................................................................................35  ATUALIZANDO DADOS................................................................................................................................35  DELETANDO DADOS ...................................................... ........................................................... ................... 35 CONFIRMAR A TRANSAÇÃO ....................................................... ........................................................... .... 36 CANCELAR A TRANSAÇÃO.........................................................................................................................36  TRANSFERENCIA DE DADOS COM LOAD DATA INFILE.......................................................................36  EXERCÍCIOS ....................................................... .............................................................. .............................. 36 TAREFA  02 - MANIPULAÇÃO DE DADOS.................................................................................................37  

ATIVIDADE PRATICA DE LABORATÓRIO ...................................................... ......................................... 38 RECUPERANDO DADOS.................................................................................................................................39 EXIBINDO TODOS OS REGISTROS DE UMA TABELA.............................................................................39  OPERADORES ARITMÉTICOS .............................................................. ....................................................... 39 OPERADORES RELACIONAIS ........................................................ ............................................................ . 39 OPERADORES LÓGICOS...............................................................................................................................39  RESTRINGINDO EXIBIÇÃO DOS DADOS - WHERE ........................................................ ......................... 39 

a) Exibindo o nome dos cursos que inicia com a letra C: .................................................................. ........... 39 b) Exibindo somente os dois primeiros registros de uma tabela:............... ................................................... 39 c) Exibindo somente os cursos maiores que 3:.................................................. ............................................ 39 d) Exibindo somente os cursos entre 1 e 3: .................................................................. ................................. 39 e) Exibindo somente os cursos que não fazem parte do intervalo 1 e 3:.............................. ......................... 39  f) Exibindo somente os alunos com matriculas 100, 300 e 500:.................................................................... 40 g) Exibindo todos os alunos com exceção das matriculas 100, 300 e 500:................................................ ... 40 h) Exibindo todos os alunos que não possuem endereço cadastrado:........................................................... 40 i) Exibindo todos os alunos que possuem endereço cadastrado: .................................................................. 40  j) Exibindo todos os alunos que moram na avenida E cursam o curso com código 2: ................................. 40 l) Exibindo todos os alunos que moram na avenida OU cursam o curso com código 2: .............................. 40 m) Exibindo uma lista exclusiva dos códigos de cursos que possuem aluno: ............................................... 40 n) Exibindo o nome dos alunos que possuem uma letra “a” na segunda posição do seu nome:.................. 40 o) Exibindo o nome dos alunos em ordem alfabética:............................................................ ....................... 41  p) Exibindo o nome dos alunos em ordem alfabética decrescente: ............................................................... 41 

TAREFA  03 - RECUPERAÇÃO DE DADOS ......................................................... ........................................ 42 FUNÇÕES DE GRUPO......................................................................................................................................44 

a) Exibindo a somatória do valor de todos os cursos: .............................................................. .................... 44 b) Exibindo a somatória do valor de todos os cursos: .............................................................. .................... 44

 c) Exibindo a quantidade de alunos: ........................................................ ..................................................... 44 d) Exibindo a quantidade de alunos:.............................................................. ............................................... 44 e) Exibindo a quantidade de cursos que possuem alunos: ........................................................... ................. 44  f) Exibindo o maior número de matrícula: .................................................................... ................................ 44 g) Exibindo o menor número de matrícula: .................................................................... .............................. 44 h) Exibindo a média aritmética do valor dos cursos:........................................... ......................................... 44 i) Exibindo o desvio padrão do valor do curso: ....................................................... .................................... 44   j) Exibindo a quantidade de alunos por curso: ........................................................ .................................... 45 l) Exibindo a soma de valor dos cursos agrupados por código, mas exibir somente quando a soma sejamaior ou igual a 350.00: ......................................................... ........................................................... ........... 45 

TAREFA  04 – FUNÇÕES DE GRUPO............................................................................................................46  FUNÇÕES DE LINHA ....................................................... ........................................................... ..................... 47 CARACTERE........................................................... ................................................................... ..................... 47 

a) Exibindo o nome dos alunos com todas as letras maiúsculas:............................................. ..................... 47  b) Exibindo o nome dos alunos com todas as letras minúsculas:........................................... ....................... 47  

Page 4: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 4/78

 

T L B D I I E T E C D E P R A I A G R A N D E

4

c) Exibindo o nome dos alunos invertidos:......................................................................................... ........... 47  d) Exibindo o nome dos alunos invertidos: ................................................................. .................................. 47  e) Exibindo um literal com todas as letras maiúsculas:............... ............................................................... .. 47   f) Exibir a posição da primeira letra “a” no nome do aluno a partir da primeira posição: ........................ 47  g) Exibir o nome do aluno substituindo a letra “a” pela letra “i”  : ......................................................... 48 h) Exibir o literal excluindo os espaços a esquerda:.................................................................................. ... 48 i) Exibir o literal excluindo os espaços a direita: ............................................................... .......................... 48  j) Exibir o literal excluindo os espaços a direita e a esquerda: .............................................................. ...... 48 k) Exibir o literal excluindo os caracteres da posição final:................................ ......................................... 48 l) Exibir o literal excluindo os caracteres da posição inícial: .................................................................... .. 48 m) Exibir o nome dos alunos a partir da 6ª posição: .................................................................... ................ 48 n) Exibir o nome dos alunos concatenado com o endereco: ............................................................ ............. 48 o) Exibir a quantidade de caracteres do nome do aluno: ............................................................ ................. 48  p) Exibir nome do aluno com 50 caracteres. Preencher a direita com o literal OK:.................................... 48 q) Exibir nome do aluno com 50 caracteres. Preencher a esquerda com o literal OK:................................ 49 r) Exibir o nome do aluno com 5 caracteres iniciando pela esquerda:......................................................... 49 s) Exibir o nome do aluno com 5 caracteres iniciando pela direita: ............................................................ 49 t) Exibir o nome do aluno com 2 vezes:...................................................... ................................................... 49 u) Exibir o nome do aluno em ordem inversa: ..................................................................... ......................... 49 v) Exibir o texto da segunda posição de uma lista de argumentos: .............................................................. 49  x) Exibir a posição de uma lista de argumentos: ..................................................................... ..................... 49  z) Exibir a posição da primeira letra a no nome do aluno:...................................................... ..................... 49 

NUMÉRICAS ......................................................... ............................................................. ............................. 49 a) Exibindo o resto da divisão:............................................................ ........................................................ .. 49 b) Exibindo o valor absoluto de 2:............................................................... ................................................. 49 c) Exibindo o seno de 0.987: ........................................................ ................................................................ . 49 d) Exibindo o coseno de 4: ........................................................ .................................................................. .. 50 e) Exibindo a tangente do arco 3: ........................................................ ......................................................... 50  f) Exibindo o código ASCII do caractere A:...................... .......................................................................... .. 50 g) Exibindo o numero 3 convertido da base 10 para a base numérica 2:..................................................... 50 h) Exibindo o maior argumento de uma lista:................... .......................................................................... .. 50 i) Exibindo o menor argumento de uma lista: ..................................................................... .......................... 50  j) Exibindo o valor arredondado para o decimal 1:.............................................. ........................................ 50 k) Exibindo o valor truncado para o decimal 1: ........................................................ ................................... 50 

DATA E HORA.................................................................................................................................................50  a) Exibindo a data adicionando o intervalo de um ano: .......................................................... ..................... 50 b) Exibindo a data atual:........ ................................................................ ....................................................... 51 c) Exibindo a hora atual: .............................................................. ............................................................. ... 51 d) Exibindo a data e a hora atual: ................................................................ ................................................ 51 e) Exibindo o nome do dia da data informada (no caso a data atual): ......................................................... 51  f) Exibindo a data com a subtração de 3 dias:................................................................... ........................... 51 g) Exibindo o índice do dia da semana da data informada:.......................................................................... 51 h) Exibindo o mês por extenso da data atual: ........................................................ ....................................... 51 h.1) Exibindo a data no formato dia, mês e ano: ............................................................... ........................... 51 i) Exibindo da data somente o ano:........................................................... .................................................... 52  j) Exibindo a hora de um horário:................................................ ............................................................... .. 52 k) Exibindo os minutos de um horário: ........................................................... .............................................. 52 l) Exibindo os segundos de um horário:..................... ........................................................................ ........... 52 m) Exibindo o dia da data corrente:..................................................................................... ......................... 52 n) Exibindo o mês da data corrente: ............................................................ ................................................. 52 o) Exibindo o ano da data corrente:................................................................................... ........................... 52  p) Exibindo o índice do dia da semana da data informada:.......................................................................... 52 q) Exibindo a data atual com adição de três meses: .................................................................. ................... 52 r) Exibindo a data atual com subtração de meses: ...................................................... ................................. 52 

CONVERSÃO...................................................................................................................................................53  a) Exibindo o resto da divisão:............................................................ ........................................................ .. 53 

OUTRAS FUNÇÕES........................................................................................................................................53  a) Exibindo o nome do usuário da conexão local: ....................................................... ................................. 53 b) Exibindo o nome do banco de dados em uso: .................................................................... ....................... 53 c) Exibindo a senha psicografada:........................................................... ..................................................... 53 

Page 5: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 5/78

 

T L B D I I E T E C D E P R A I A G R A N D E

5

d) Exibindo o nome do curso unido com o nome do aluno: ................................................................ .......... 53 e) Exibindo o tempo que o servidor utiliza para executar uma instrução:.................................................... 53 

CONDICIONAL..................................................... ........................................................... ............................... 53 a) Exibindo o nome do curso e quando o curso for 1 exibir com aumento de 10%, quando for 2 comaumento de 15%, caso contrário permanece o mesmo valor:................................................................... .... 53 b) Exibindo o nome do curso e quando o curso for 1 exibir com aumento de 20%, caso contrário permanece o mesmo valor:..................... ................................................................ ....................................... 53 

TAREFA  05 – FUNCOES DE LINHA.............................................................................................................53  JUNÇÃO DE TABELAS (JOINS).....................................................................................................................55 

a) Exibindo o nome do curso e o nome do aluno: ............................................................ ............................. 55 b) Exibindo o nome do curso e o nome do aluno de quem possui a letra z no nome: ................................... 55 c) Exibindo o nome do curso e o nome do aluno em um produto cartesiano:............................................... 55 c) Exibindo o nome do curso e o nome do aluno com INNER JOIN:.............................. .............................. 55 d) Exibindo o nome do curso e o nome do aluno, mesmo que haja cursos sem alunos (LEFT JOIN):......... 55  j) Exibindo o nome do curso e o nome do aluno, mesmo que haja alunos sem cursos (RIGHT JOIN): ....... 55  j) Exibindo o nome do curso e o nome do aluno (NATURAL JOIN):............................................................ 56  

TAREFA  06 – JUNÇÃO DE TABELA............................................................................................................56  SUBCONSULTAS...............................................................................................................................................57  UMA LINHA ......................................................... ........................................................... ................................ 57 MÚLTIPLAS LINHAS..................................................... ........................................................... ..................... 58 

SELECT COM IN ........................................................... .......................................................... ..................... 58 SELECT COM ANY........ ................................................................ ............................................................. .. 58 SELECT COM ALL ................................................................ ........................................................... ............ 58 

SUBCONSULTA NA CLÁUSULA FROM .......................................................... ........................................... 58 TAREFA 07 – SUBCONSULTAS....................................................................................................................59  

INDICES ........................................................ ........................................................... ........................................... 60 a) Criando um índice chamado idx_curso para a coluna nmcurso da tabela CURSO:................................ 60 b) Excluindo um índice chamado idx_curso para a coluna nmcurso da tabela CURSO:............................. 60 

VIEWS..................................................................................................................................................................60  TAREFA 08 – VIEWS ....................................................... ........................................................... .................... 61 

CONCESSÃO E REVOGAÇÃO PRIVILEGIOS DE USUÁRIO..................................................................62 PRIVILÉGIOS DE USUARIO..........................................................................................................................62  CRIANDO UMA CONTA DE USUARÍO........................................................................................................62  CONCESSÃO DE PRIVILÉGIOS....................................................................................................................62  REVOGANDO DE PRIVILÉGIOS................................................... ........................................................... .... 63 

MYSQL WORKBENCH....................................................................................................................................63 ADICIONANDO UM DIAGRAMA.................................................................................................................68  ADICIONANDO TABELAS............................................................................................................................68

 PROPRIEDADES DA TABELA E DA COLUNA.............................................................. ............................. 69 FERRAMENTAS..............................................................................................................................................69  GERANDO SCRIPT.........................................................................................................................................70  

ANEXO A – MODELO LÓGICO DE DADOS................................................................................................73 MODELO DE RECURSOS HUMANOS..........................................................................................................73  MODELO DE ESCOLA ......................................................... ........................................................... ............... 73 

ANEXO B – DICIONÁRIO DE DADOS ....................................................... ................................................... 74 ANEXO C – SCRIPTS UTILIZADOS..............................................................................................................75 REFERENCIA BIBLIOGRAFICA...................................................................................................................78 

Page 6: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 6/78

 

T L B D I I E T E C D E P R A I A G R A N D E

6

 

INTRODUÇÃO

Segundo LIMA (2003), desde a publicação das regras de Codd, em 1970,

vários sistemas de gerenciamento de bases de dados (SGBDs) têm sido lançadosno mercado – todos com confiabilidade, robustez, rapidez, portabilidade,segurança, escalabilidade, etc.

O MySQL é um gerenciador construído em múltiplas camadas:APRESENTAÇÃO, LÓGICA e FÍSICA.

O MySQL utiliza o padrão SQL ANSI1-92.Conforme o padrão SQL-92 a transações possuem propriedade ACID

(Atomicidade, Consistência, Isolamento e Durabilidade):•  ATOMICIDADE: as atualizações de uma transação são tratadas côo uma

só unidade atômica. Ou seja, se houver duas inserções e uma deleçãoserá tratada integralmente;

•  CONSISTÊNCIA: uma transação deve preservar a integridade da basede dados, inclusive os índices;

•  ISOLAMENTO: uma transação deve desconhecer as atualizações feitaspor outras transações concorrentes;

•  DURABILIDADE: as atualizações efetuadas por uma transação devempersistir até mesmo em caso de falhas de sistema.

Utiliza a linguagem SQL (Structured Query Language2) que se divide em:•  DDL (Data Definition Language – Linguagem de Definição de Dados);•  DML (Data Manipulation Language – Linguagem de Manipulação de

Dados);•  DCL (Data Control Language – Linguagem de Controle de Dados).

Todo bom sistema de banco de dados deve apresentar um projeto, que visaà organização das informações e utilização de técnicas para que o futuro sistemaobtenha boa performance e também facilite infinitamente as manutenções quevenham a acontecer.  Desenvolvido em 1996 pela consultoria TcX (Suécia);

  Baseado em um DBMS chamado MSql;  Open Source;  Servidor multithread;  Compatível com o ANSI SQL 92;  Multi-plataforma;  Última versão oficial: 5.0 ou 5.1  SGBD que gerencia várias bases de dado.  Adquirido recentemente pela

1 American National Standards Institute (Instituto Nacional de Padrões Americano)

2 Linguagem de Consulta Estruturada 

Page 7: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 7/78

 

T L B D I I E T E C D E P R A I A G R A N D E

7

INSTALAÇÃO DO MYSQL

Entrar no site do MySQL – www.mysql.com, cadastrar-se e fazer download

a última versão adequada ao seu sistema operacional.Atualmente estamos na versão 5.1.44 e o exemplo abaixo segue ainstalação para o Microsoft Windows:

Ao executar o arquivo, surge à tela abaixo, vamos escolher a versãoCOMPLETE e pressione em NEXT:

Na tela a seguir é informado o diretório onde será instalado o software,clique em INSTALL:

Page 8: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 8/78

 

T L B D I I E T E C D E P R A I A G R A N D E

8

 

A tela a seguir exibe o status da instalação:

A tela a seguir exibe informações do Enterprise, clique em NEXT:

Page 9: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 9/78

 

T L B D I I E T E C D E P R A I A G R A N D E

9

 

Continua as informações do Enterprise, pressione NEXT:

Na tela abaixo, pressionamos o botão FINISH:

Page 10: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 10/78

 

T L B D I I E T E C D E P R A I A G R A N D E

10

 

Agora vamos configurar o servidor de banco de dados MySql e pressioneNEXT:

Vamos escolher a configuração padrão (Standard Configuration) e pressioneNEXT:

Page 11: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 11/78

 

T L B D I I E T E C D E P R A I A G R A N D E

11

 

A tela a seguir, refere-se à configuração da instância e pressione NEXT:

Ainda na configuração da instância, escolha Developer Machine, pressioneNEXT:

Page 12: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 12/78

 

T L B D I I E T E C D E P R A I A G R A N D E

12

 

Escolha o banco de dados utilizado, escolha MULTIFUNCTIONAL DATABASEe pressione NEXT:

Ainda na configuração da instância, pressione NEXT:

Page 13: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 13/78

 

T L B D I I E T E C D E P R A I A G R A N D E

13

 

Escolha a quantidade de conexões concorrentes no servidor em Decision Supporte pressione NEXT:

Nesta tela é a configuração da porta. Por padrão o servidor MySQL utiliza aporta 3306. Pressione NEXT:

Page 14: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 14/78

 

T L B D I I E T E C D E P R A I A G R A N D E

14

 

Aqui vamos selecionar o conjunto de caracteres default:

Vamos escolher o nome e a senha do administrador, no caso: ROOT e

pressione NEXT:

Page 15: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 15/78

 

T L B D I I E T E C D E P R A I A G R A N D E

15

 

Nesta tela estamos prontos para EXECUTAR a configuração. Pressione EXECUTE:

Na tela a seguir, pressione FINISH:

Page 16: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 16/78

 

T L B D I I E T E C D E P R A I A G R A N D E

16

 

Para instalar o MySQL Query Browser e o MySQL Administrator, faça odownload do site do MySQL do arquivo:

Clique com o botão direito do mouse sobre o arquivo e escolha a opçãoINSTALAR.

O MySQL é Case-Sensitive,portanto, faz distinção entreas letras maiúsculas eminúsculas na senha de umusuário.

Page 17: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 17/78

 

T L B D I I E T E C D E P R A I A G R A N D E

17

ACESSANDO O MYSQL

MYSQL COMMAND LINE CLIENT

Para acessar o MySQL, utilizamos o MYSQL COMMAND LINE CLIENT:

Surge a tela a seguir:

MYSQL QUERY BROWSER

Para acessar o MySQL, utilizamos o MYSQL QUERY BROWSER:

Page 18: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 18/78

 

T L B D I I E T E C D E P R A I A G R A N D E

18

Digite a senha do usuário e pressione OK:

PRINCIPAIS COMANDOS DO SERVIDOROs comandos em MySQL são executados com ponto-e-vírgula (;) e não

fazem distinção entre letras maiúsculas e minúsculas (não é CASE-SENSITIVE).

EXIBINDO OS BANCOS DE DADOS:

SHOW DATABASES;

Page 19: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 19/78

 

T L B D I I E T E C D E P R A I A G R A N D E

19

Ou digite e pressione o botão:

Obs. O banco de dados padrão é o mysql. Ele armazena as informações dode privilégio de todos os usuários, banco de dados e hosts. Excluir ou alteraruma tabela causará problemas dentro do MySQL.

REUTILIZANDO A SENHA DO ROOT

Sintaxe: SET PASSWORD FOR ROOT@LOCALHOST=PASSWORD(‘SENHA’);

UTILIZANDO UM BANCO DE DADOS:

Sintaxe: USE <nome_base_dados>;Exemplo: USE mysql;

EXIBIR A ESTRUTURA OU ESQUEMA DO BANCO DE DADOS:

Sintaxe: SHOW TABLES FROM <banco_dados>;Exemplo: SHOW TABLES FROM mysql;

Page 20: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 20/78

 

T L B D I I E T E C D E P R A I A G R A N D E

20

 

O MySQL no LABORATÓRIOpossui a senha mysql123 

Page 21: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 21/78

 

T L B D I I E T E C D E P R A I A G R A N D E

21

BANCO DE DADOS

CRIANDO UM BANCO DE DADOS

Sintaxe: CREATE DATABASE <banco_de_dados>;Exemplo: CREATE DATABASE tlbd;

Obs.: o banco de dado não faz distinção entre letras maiúsculas eminúsculas quando se trata de comandos de SQL.

APAGANDO UM BANCO DE DADOS:

Sintaxe: DROP DATABASE <banco_de_dados>;Exemplo: DROP DATABASE tlbd;

EXERCICIOS

1.  Criar uma base de dados chamada AULA;2.  Acessar esta base de dados;3.  Criar as tabelas e inserções dos scripts: CURSO.SQL e EMP.SQL.

Page 22: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 22/78

 

T L B D I I E T E C D E P R A I A G R A N D E

22

ADICIONANDO USUÁRIOS

O banco de dados armazena todas as permissões para todos os bancosde dados do MySQL que consiste das seguintes tabelas:

• USER: armazena todos os nomes, senhas, hosts e privilégios de todosos usuários;

• DB: contém todos os usuários, banco de dados e nomes do host;• HOST: contém todos os nomes do host, bancos de dados e privilégios

que eles têm no MySQL.Com o banco mysql ativo (USE mysql;)

INSERIR NA TABELA HOST:INSERT INTO host VALUES

('localhost','tlbd','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

INSERIR UM USUÁRIO:INSERT INTO user VALUES('localhost','usuario',PASSWORD('usuario123'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',' ',' ',' ',' ',0,0,0,0);

EXIBIR O CONTEUDO DA TABELA USER:SELECT * FROM user;

Page 23: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 23/78

 

T L B D I I E T E C D E P R A I A G R A N D E

23

 Obs.: A função PASSWORD é uma função que pode ser chamada de

dentro do MySQL. Ela usa a string como argumento, criptografa e armazenano banco de dados.

INSERIR NA TABELA DB:INSERT INTO dbVALUES ('localhost','tlbd','usuario','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

COLUNAS DA TABELA USER

Colunas de escopo:

•  HOST: local onde o usuário está se conectando;•  USER: nome de usuário;•  PASSWORD: senha do usuário codificada.

Colunas de privilégios: contém o valor Y (Yes):

SELECT_PRIV INSERT_PRIV UPDATE_PRIV DELETE_PRIVINDEX_PRIV ALTER_PRIV CREATE_PRIV DROP_PRIVGRANT_PRIV RELOAD_PRIV REFERENCES_PRIVPROCESS_PRIV FILE_PRIV SHUTDOWN_PRIV

SHOW_DB_PRIV SUPER_PRIV EXECUTE_PRIVLOCK_TABLES_PRIV CREATE_TMP_TABLE_PRIVREPL_SLAVE_PRIV REPL_CLIENT_PRIV

Page 24: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 24/78

 

T L B D I I E T E C D E P R A I A G R A N D E

24

TIPOS DE DADOS (DATATYPES)

Vamos estudar os tipos de dados suportados pelo MySQL, que são

agrupados um certo número de tipos de campos e podem se agrupados em trêscategorias: NUMERICOS, DATA E HORA e STRING (CADEIAS) DE CARACTERES.Vamos conhecer os tipos numéricos: pontos flutuantes, ordenais e não

ordenais) e de data dentro do MySQL. Temos os tipos:

NUMÉRICOS

ORDINAIS: TIPOS INTEIROS

Temos seis tipos e alguns são sinônimos.Se especificarmos que for um tipo assinalado (usa sinal).

Devemos entender as diferenças entre os tipos de campos para armazenarde forma correta a informação. Por exemplo, não armazenar o nome do alunoem um campo do tipo INTEGER.

Abaixo temos uma tabela contendo os intervalos de tamanho suportadopelos tipos ordinais:

TIPO DE DADO INTERVALOCOM SINAL

INTERVALOSEM SINAL

TINYINT -128 A 127 0 a 255BIT BOOL Tinyint(1)

SMALLINT -32768 a 32767 0 a 65535MEDIUMINT -8388608 a 8388607 0 a 167777215INT INTEGER -2147483648 a 2147483647 0 a 4294967295

BIGINT -9223372036854775808 a9223372036854775807

0 a 18446744073709551615

No MySQL utiliza o padrão ANSI-92, podemos opcionalmente podemosespecificar entre parênteses o tamanho desejado e exibe somente o tamanho dodisplay (preenchimento) a esquerda, caso seja menor ao que foi especificado nacoluna. Exemplo TINTINT(3), ou seja, 3 caracteres no display e armazenamos onúmero 25, o MySql vai completar com o caractere 0 ou seja, mais um à

esquerda para chegar aos 3 caracteres. É exibido então 025.NÃO ORDINAIS: PONTOS FLUTUANTES.

•  FLOAT: não pode ser sem sinal. A precisão do campo deve ser menor ouigual a 25 (precisão simples); Até a versão 3 somente temos precisão de duascasas decimais.

•  DOUBLE: podemos especificar o tamanho do display e da precisão.Geralmente colocamos na definição DOUBLE (M,D), onde M é o tamanho daprecisão e D é o tamanho do display. É um número de precisão dupla comnotação científica. Os valores não são negativos. O primeiro valor é a largurae o segundo são as casas decimais. Outros tipos de DOUBLE sinônimos são:DOUBLE PRECISION e REAL. 

Page 25: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 25/78

 

T L B D I I E T E C D E P R A I A G R A N D E

25

•  DECIMAL (DEC): possui o sinônimo REAL, mas são armazenados de maneiradiferente. São armazenados como STRING. Se por exemplo, se quiser valoresexatos armazenados no banco de dados é necessário trabalhar com NUMERICou com DECIMAL. Um número de ponto flutuante não-empacotado são os

tipos DOUBLE e DECIMAL, eles se comportam como um CHAR. A parte inteira,ponto, os decimais e o valor negativo, se tiver, são armazenados comoSTRING. Se não especificarmos um tamanho para precisão é assumido pordefault o número zero e são especificar um tamanho para o display (parteinteira) é assumido como 10. O DEC, NUMERIC e FIXED são sinônimos deDECIMAL e vice-versa.

Abaixo temos uma tabela contendo os intervalos de tamanho suportadopelos tipos não-ordinais:

TIPO DE DADO INTERVALO

FLOAT (M) -3.402823466E+38 a 3.402823466E+38DOUBLE(M,D) -2.2250738585072014E-308 a 2.2250738585072014E-308DECIMAL(M,D) Igual ao DOUBLE, porém, como CHARNUMERIC(M,D) Igual ao DECIMAL

Em dados monetários é necessário declarar como NUMERIC ou DECIMAL,pois será armazenado como STRING e trabalha como CHAR e mesmo que nãoseja utilizado, ele será alocado na memória.

AUTO_INCREMENTAltera o valor de uma coluna adicionando o número 1 (um) ao valor

máximo atual.OBSERVAÇÃO:•  Para melhor performance, podemos inserir um valor NULL (nulo) ou um

valor numérico do tipo INTEIRO (INT). Caso este número já exista,retornará um erro.

DATA E HORA

Algumas pessoas armazenam a data como string devido a maneira que oMySQL armazena os dados, no formato: ANO/MÊS/DIA. Isto é um problemaquando precisamos por exemplo, fazer cálculos, comparação entre datas, temosmuita dificuldade.

Exibe os valores no formato Ano, mês e dia e tanto pode ser armazenadocomo string ou número.

O MYSQL não valida data, somente, se entre meses de 0 a 12 e de dia de 0a 31. Quem desenvolveu o MySQL justifica que a verificação da data éresponsabilidade da aplicação, dando como exemplo, quem não sabe a data denascimento correta. Exemplo: 0/0/05 ele aceita. Não armazena as datas comostring, pois se necessário alterar ou fazer calculo entre datas não será possível.

Tipos:•  DATE:

•  DATETIME: possui o horário juntamente com a data; 

Page 26: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 26/78

 

T L B D I I E T E C D E P R A I A G R A N D E

26

•  TIME: armazena hora e pode receber números ou strings e fazer a conversãoexplicitamente; 

•  YEAR: ele pede um display 2 (70 a 69) ou 4 dígitos (1970 a 2069). 

  TIMESTAMP: armazena data e hora, mas podemos informar o tamanho dodisplay. Com relação ao PHP, ele é interpretado como INTEIRO (a partir daversão 4.1 do PHP é interpretado como STRING) e sempre é armazenado com4 bytes. O formato é somente para exibição. 

Abaixo temos uma tabela contendo os intervalos de tamanho suportado:

TIPO DE DADO FAIXA SUPORTADA

DATE 1000-01-01 a 9999-12-31

DATETIME 1000-01-01 00:00:00 a 9999-12-31 23:59:59TIME -838:59:59 a 838:59:59

YEAR(2|4) 1901 A 2155 | 1970 A:00 A 2069TIMESTAMP(M) 1970-01-01 00:00 a 2037TIMESTAMP(14) YYYYMMDDHHMMSSTIMESTAMP(12) YYMMDDHHMMSSTIMESTAMP(8) YYYYMMDDTIMESTAMP(6) YYMMDD

CADEIA

Armazena strings. No caso do Delphi temos o CHAR e uma cadeia de strings(VARCHAR). O CHAR armazena todo o espaço alocado. Por exemplo, CHAR(50),mesmo que não seja utilizado os 50 caracteres, e usou 7, o restante continuaalocado. Tipos:•  CHAR(n): tamanho fixo;

•  VARCHAR(n) – diferente do FIREBIRD que pode ir até 1000 aqui só vai até255 e mais um byte que é o tamanho deste campo. O tamanho é alocadodinamicamente. Tamanho variável;

•  TINYTEXT, TINYBLOB;

•  BLOB, TEXT; são binários, porém o Blob é case sensitive; •  MEDIUMBLOB, MEDIUMTEXT: semelhante ao Blob e Text;

•  LONGBLOB, LONGTEXT: semelhante ao Blob e Text;

•  ENUM: tipo de dado do MySQL que permite colocar um número limitado deopções, por exemplo, estado civil com as seguintes opções: casado, solteiro,viúvo, etc. E podemos escolher uma entre as opções enumeradas;

•  SET: conjunto, onde podemos limitar as opções e podemos escolher mais deuma das opções disponíveis.

Page 27: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 27/78

 

T L B D I I E T E C D E P R A I A G R A N D E

27

TIPOS DE TABELAS

Vamos ver os tipos de tabelas que o MySQL suporta.

No MySQL podemos escolher um ou mais tipos de tabelas. Vamos conheceras principais características das duas mais utilizadas e dentro de cada tipo astabelas que poderão ser criadas.

Dividido em dois grupos: TABELAS SEGURAS e TABELAS NÃO SEGURAS.A diferença entre os grupos se dá em relação a tolerância a falhas, pois fica

mais fácil recuperar em caso de erro de hardware(pane na trilha da HD ouserviço deu erro).

No mesmo banco de dados podemos ter tabelas dos dois tipos: seguras enão seguras.

TST (TABELAS SEGURAS COM TRANSAÇÃO):

A recuperação pode ser automática ou através de um backupmais os logs de transações que é criado nestes tipos de tabelas.Podemos voltar os dados no ponto onde ocorreu a falha e recuperaros seus dados.

CARACTERÍ STI CAS 

•  Possui maior tolerância a falha de hardware e software;• 

Podemos dar COMMIT ou dar o ROLLBACK (ignorar asalterações) em um bloco de transações (log);•  Muito bom quando há uma quantidade grande de usuários

(controle de concorrência);•  Operações DML (INSERT, UPDATE e DELETE) logam em

nível de registro e não de tabela;•  Perde-se performance pois em tudo que é feito no banco de

dados é registrado para recuperação posterior, se necessário(log).

I NN ODB  

Armazenamento Seguro.Bloqueio em nível de registro (operações DML), portanto os registros

anteriores e posteriores não ficam alocados e a tabela não fica alocada.Select sem bloqueio, podemos fazer uma consulta aos registros.Foi o primeiro tipo de tabela com suporte a Foreign Key no MySQL. A partir

da versão 4.1 é o tipo de tabela padrão do MySQL.Excelente em grandes volumes de dados, há estatísticas que há um banco

de dados com 1 TeraByte, 800 inserções e atualizações por segundo.É um SGBD dentro do MySQL, pois o armazenamento dentro é

extremamente seguro, pois gera um arquivo de log para cada transação feita nobanco de dados, podemos especificar a recuperação de um ponto específicodentro do banco de dados. Há diversos benefícios.

Page 28: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 28/78

 

T L B D I I E T E C D E P R A I A G R A N D E

28

É criado um arquivo .frm (estrutura da tabela) para cada tabela, mas osdados não ficam em arquivos físicos isolados. Pois os dados ficam dentro do DataFiles (é criado um data e dois logs.

Estrutura: arquivos .frm, lbdata1, lb_logfile0 e lb_logfile1.

DBD.

NTST (TABELAS NÃO SEGURAS COM TRANSAÇÃO):

Não há possibilidade de recuperação pois não gera log e isto,diferencia na performance.

CARACTERÍ STI CAS 

•  Não gera log, portanto, muito mais rápida; •  Utiliza menos espaço em disco; •  Utiliza menos memória para a atualização. Porém qualquer

atualização que é feita no banco de dados não pode serrevertida, ela vai direto para o disco. Em caso de falhatambém não é possível recuperar os dados. 

MYI SAM  

É a mais utilizada em tabelas não seguras é usada em 98% dos casos.CARACTERÍSTICAS•  Composta por três arquivos (.frm3 (contém a definição da tabela), .myi  

(MyIndex – armazena os índices desta tabela), .myd (MyData,armazena os dados desta tabela); Se tivermos 10 tabelas do tipoMyIsam termos 30 arquivos (10 para cada tipo de arquivo);

•  Os tipos de dados BLOB e TEXT podem ser indexados;•  Não suporta relacionamentos (não podemos criar uma chave

estrangeira);•  Cada registro da tabela pode ser criado como Fixo, Dinâmico ou

Compactado. É determinado no momento da criação da tabela istodeterminado e é automático. No momento que os campos da tabelassão criados e se os campos não BLOB, TEXT ou VARCHAR,automaticamente é uma tabela fixa e extremamente mais rápida, pois

quando o MySQL tiver que procurar um registro ele já sabe o tamanhoexato que precisa percorrer, pois são todos campos fixos. Só por terum campo do tipo VARCHAR ela passa a ser dinâmica. Ela pode sercompactada por um utilitário do MySQL.

•  Mais fácil de ser corrompida, tanto que no arquivo .myi o arquivo deíndice, o primeiro registro é um flag informando se a tabela foi ou nãofechada de forma correta. Caso não tenha sido fechada por formacorreta, por default toda vez que o banco é acessado é reparadoautomaticamente. Exemplo: Criar uma tabela do tipo MySAM com doiscampos:

3 Toda tabela criada no MySQL possui este tipo de arquivo em qualquer tipo de tabela

Page 29: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 29/78

 

T L B D I I E T E C D E P R A I A G R A N D E

29

 

Em resumo a estrutura do MyIsam é composta de arquivos .frm, .myd e.myi.

MERGE  

É o segundo tipo de tabela que também não aceita tolerância a falhas.É como um conjunto de tabelas (coleção de tabelas idênticas ao tipoMyIsam) e utiliza os arquivos com extensão .mrg é como uma lista com todos osíndices que devem ser lidos como uma tabela só. Por exemplo, quando otamanho máximo de um arquivo é 2 Gb, temos uma tabela do tipo MyIsam queestá passando deste tamanho, para resolver isto, podemos criar várias tabelascom a mesma estrutura (tabela1, tabela2, tabela3 e tabela4 com ID e NOMEtodas com dados), então, criamos uma tabela MERGE para que as quatro tabelassejam lidas como sendo uma só. Agiliza o processo de pesquisa, pois em umatabela há menos registros. Desvantagem: as quatro tabelas do nosso exemploprecisam ser idênticas em tudo: quantidade de tipos, de dados, etc. (por isto é

pouco usado).HEAP  

Também chamada de MEMORY. São tabelas armazenadas em memória, nãopossuem arquivo físico – com exceção do .frm. Não suporta Blob/Text e AutoIncremento. Extremamente rápida, pois utiliza hash4 para salvar os seus dados.

Extremamente perigosa, pois como está em memória, se parar o serviço, osdados que estavam nesta tabela são perdidos. Usadas como tabela temporária,com origem em arquivos físicos. Em síntese, o tipo mais utilizado é o MyIsam.

Exemplo:

4 O conceito teórico diz que "hash é a transformação de uma grande quantidade de informaçõesem uma pequena quantidade de informações".

Page 30: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 30/78

 

T L B D I I E T E C D E P R A I A G R A N D E

30

CRIANDO TABELAS

Sintaxe: CREATE TABLE <nome_tabela>

(coluna tipo_dado(tamanho),...)Exemplo:CREATE TABLE curso(cdcurso INT NOT NULL PRIMARY KEY AUTO_INCREMENT,nmcurso VARCHAR(50),dtinicio DATETIME);

CRIANDO TABELA COM BASE EM OUTRA TABELA:

Sintaxe: CREATE TABLE <nome_novo_tabela> CONSULTA;

Exemplo: CREATE TABLE teste SELECT * FROM curso;

EXIBINDO AS CHAVES DE UMA TABELA:

Exemplo: SHOW KEYS FROM curso;

EXIBINDO A ESTRUTURA DE UMA TABELA

Sintaxe: SHOW COLUMNS FROM <nome_tabela>;Exemplo: SHOW COLUMNS FROM curso;

Obs.: DESCRIBE <nome_tabela>;

Page 31: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 31/78

 

T L B D I I E T E C D E P R A I A G R A N D E

31

 

ALTERANDO TABELAS

ALTERANDO TIPO DE COLUNAS

Exemplo: ALTER TABLE cursoCHANGE nmcurso nome_curso VARCHAR(100);

ADICIONANDO COLUNAS

Exemplo: ALTER TABLE cursoADD vlcurso NUMERIC(10,2);

ADICIONANDO CHAVE PRIMÁRIA

Exemplo: ALTER TABLE cursoADD PRIMARY KEY (cdcurso);

Observação: A coluna para ter a restrição de chave primária é necessário ter arestrição de NOT NULL (não nulo).

ADICIONANDO CHAVE ESTRANGEIRAExemplo: ALTER TABLE disciplina

ADD FOREIGN KEY (cdcurso) REFERENCES curso (cdcurso);

DELETANDO CHAVES PRIMÁRIAS

Exemplo: ALTER TABLE cursoDROP PRIMARY KEY;

Page 32: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 32/78

 

T L B D I I E T E C D E P R A I A G R A N D E

32

ALTERANDO A TABELA PARA COMPLEMENTAR AS INSTRUÇÕES

Exemplo: ALTER TABLE disciplinaADD FOREIGN KEY (cdcurso) REFERENCES curso (cdcurso)

ON DELETE RESTRICT;

Obs.: Ao criarmos o modelo no DBDesigner e gerar o SCRIPT a partir domodelo, surgem no final de cada tabela, as seguintes instruções:

•  ON DELETE CASCADE: exclusão do registro propaga-se abrangendotodas as ocorrências nas tabelas filhas;

•  ON DELETE NO ACTION: caso existam referências ao registro emoutras tabelas, a exclusão é cancelada (ROLLBACK);

•  ON DELETE RESTRICT: efetua a exclusão somente se não houverreferências ao registro em outra tabelas.

RENOMEANDO TABELAS

Exemplo: ALTER TABLE curso RENAME cursos;APAGANDO TABELAS

Exemplo: DROP TABLE teste;

TRUNCANDO TABELAS

Exclui todos os registros da tabela, permanecendo somente a estrutura.

Exemplo: TRUNCATE TABLE teste;

 

Podemos utilizar estasrestrições também com ocomando UPDATE.

Page 33: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 33/78

 

T L B D I I E T E C D E P R A I A G R A N D E

33

RESTRIÇÕES (CONSTRAINT’S)

CHAVE PRIMÁRIA (PRIMARY KEY)

a) Criar a tabela PROFESSOR:

CREATE TABLE professor(cdprofessor INT NOT NULL PRIMARY KEY AUTO_INCREMENT,nmprofessor VARCHAR(50) NOT NULL);

Obs.: Toda tabela é obrigatório ter uma chave primária e esta coluna deve ser dotipo não nulo.

ENUM

b)  Criar a tabela DISCIPLINA:

CREATE TABLE disciplinas(cddisciplina INT NOT NULL PRIMARY KEY AUTO_INCREMENT,nmdisciplina VARCHAR(50) NOT NULL,icperiodo ENUM ('MATUTINO','VESPERTINO','NOTURNO')

DEFAULT 'MATUTINO');

EXERCÍCIOS

1.  Criar uma base de dados chamada LIVRARIA;2.  Utilizar esta base de dados;3.  Criar as tabelas de acordo com o modelo de dados abaixo:

Page 34: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 34/78

 

T L B D I I E T E C D E P R A I A G R A N D E

34

TAREFA 01 - TABELAS

1.  Crie a tabela DEPARTAMENTO conforme o exemplo a seguirID NUMERIC (7)

NOME VARCHAR(25)

2.  Preencha a tabela DEPARTAMENTO com os dados a partir da tabela DEPT.Inclua somente colunas que precisar.

3.  Criar tabela EMPREGADO conforme a seguir:ID NUMERIC(7)SOBRENOME VARCHAR(25)NOME VARCHAR(25)DEPTID NUMERIC(7)

4.  Modifique a tabela EMPREGADO para aceitar os sobrenomes longos dosfuncionários. Confirme as modificações.

5.  Confirme se as tabelas DEPARTAMENTO e EMPREGADO foram armazenadasno dicionário de dados. (DICA: USER_TABLES)

6.  Crie a tabela EMPREGADO2 de acordo com a estrutura da tabela EMP. Incluaapenas as colunas EMPNO, ENAME e DEPTNO. Nomeie as colunas como ID,NOME e DEPT_ID na nova tabela, respectivamente.

7.  Elimine a tabela EMPREGADO.

8.  Renomear a tabela EMPREGADO2 para EMPREGADO.

9.  Adicione uma restrição no nível da tabela PRIMARY KEY a tabelaEMPREGADO, usando a coluna ID. A restrição deve ser nomeada quando forcriada. Dica: A restrição é ativada com o comando ALTER TABLE.

10. Crie uma restrição PRIMARY KEY na tabela DEPARTAMENTO usando a colunaID. A restrição deve ser nomeada quando for criada.

11. Adicione uma referência de chave estrangeira na tabela EMPREGADO que irá

assegurar que o funcionário não seja atribuído a um departamento nãoexistente.

12. Modificar tabela EMPREGADO. Adicione a coluna SALARIO do tipo de dadosNUMERIC, precisão 7.

Page 35: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 35/78

 

T L B D I I E T E C D E P R A I A G R A N D E

35

MANIPULANDO DADOS

INSERINDO DADOS

Sintaxe: INSERT INTO nome_tabela (coluna1, coluna2,...,colunan)VALUES (valor1,valor2,..,valorn);

Exemplo:A)  EXPLICITA – informa as colunas que serão inseridos os valores:

INSERT INTO curso (nmcurso)VALUES ('INFORMÁTICA');

B) IMPLICITA – informa os valores para as colunas de acordo com a ordem dacriação das colunas:

INSERT INTO cursoVALUES (3,'CONTABILIDADE','2010-05-10');

C) INSERINDO VALORES NULOS:INSERT INTO cursos (nmcurso, dtinicio)VALUES ('COMERCIO EXTERIOR', NULL);

ATUALIZANDO DADOS

Sintaxe: UPDATE tabela SET coluna = valor [WHERE condição];

Exemplos:A)  Atualizar o valor dos cursos:

UPDATE cursosSET vlcurso = 350.50;

B)  Atualizar o valor dos cursos que começam com a letra C:UPDATE cursos

SET vlcurso = vlcurso * 1.30WHERE nmcurso LIKE 'C%';

DELETANDO DADOSSintaxe: DELETE FROM tabela

[WHERE condição];

 

A data é colocada noformato ANO-MÊS-DIA

Page 36: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 36/78

 

T L B D I I E T E C D E P R A I A G R A N D E

36

 Exemplos:

A)  Apagar todos os professores com códigos menores que 3:

DELETE FROM professorWHERE cdprofessor < 3

B)  Apagar todos os professores com códigos menores que 3:

DELETE FROM professorWHERE cdprofessor < 3

CONFIRMAR A TRANSAÇÃO

Somente para comandos INSERT, UPDATE ou DELETE.

Sintaxe: COMMIT;

CANCELAR A TRANSAÇÃO

Somente para comandos INSERT, UPDATE ou DELETE.Sintaxe: ROLLBACK;

TRANSFERENCIA DE DADOS COM LOAD DATA INFILE

Segundo Welling (2004), o comando LOAD DATA INFILE, permite inserir grandesquantidades de dado de um arquivo texto em uma única tabela sem necessidade

de escrever instruções INSERT.

Sintaxe: LOAD DATA LOCAL INFILE ‘caminho:\\nome_arquivo.txt’ INTO TABLE nome_tabela;

Exemplo Prático:A)  Criar o arquivo de dado na unidade C chamado DADO.TXT

1  CPD2  DEP. PESSOAL3  FATURAMENTO4  CONTABILIDADE

B)  Criar a tabela DEPARTAMENTO no banco de dados TLBD com base nascolunas id e nome da tabela DEPT:

C) Apagar os dado da tabela DEPARTAMENTO;D) Carregar os dados do arquivo DADOS.TXT para a tabela DEPARTAMENTO:

LOAD DATA LOCAL INFILE ‘C:\DADOS.TXT’ INTO TABLE departamentos;

EXERCÍCIOS1.  Inserir 2 registros em cada uma das tabelas CLIENTE e LIVRO;2.  Criar uma tabela chamada AMIGO com a coluna NOME VARCHAR(50);

3.  Criar um arquivo chamado AMIGUINHOS.TXT com as informações dosnomes dos seus amigos de sala.

4.  Carregar no arquivo AMIGUINHOS na tabela AMIGO.

Page 37: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 37/78

 

T L B D I I E T E C D E P R A I A G R A N D E

37

TAREFA 02 - MANIPULAÇÃO DE DADOS

1.  Crie a tabela abaixo conforme o comando:CREATE TABLE CLIENTE

(ID NUMERIC(4) CONSTRAINT CLIENTE_ID_NN NOT NULL,SOBRENOME VARCHAR(25),NOME VARCHAR(25),USERID VARCHAR(8),SALARIO NUMERIC(9,2));

2.  Descreva a estrutura da tabela CLIENTE.

3.  Adicione a primeira linha de dados à tabela CLIENTE a partir dos dados doexemplo a seguir. Não liste as colunas na cláusula INSERT.

ID SOBRENOME NOME USERID SALARIO1 Savala Elizabeth esavala 7952 Serrado Marcelo mserrado 8603 Torre Fernanda ftorre 11004 Guedes Rita rguedes 7505 Torres Fernando Ftorres 1550

4.  Preencha a tabela CLIENTE com uma segunda linha de dados de exemplo dalista anterior. Desta vez, liste as colunas explicitamente na cláusula INSERT.

5.  Inserir todos os outros registros, da maneira que achar melhor (crie um

script)

6.  Confirme a adição à tabela.

7.  Delete os dados tabela CLIENTE.

8.  Altere o sobrenome do funcionário 3 para Montenegro.

9.  Altere o salário para 1000 de todos os funcionários que ganhem menos de900.

10.Verifique as alterações na tabela.

11.Delete FERNANDO TORRES da tabela CLIENTE.

12.Confirme as alterações na tabela.

13.Esvazie a tabela inteira.

14.Confirme se a tabela está vazia.

Page 38: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 38/78

 

T L B D I I E T E C D E P R A I A G R A N D E

38

ATIVIDADE PRATICA DE LABORATÓRIO

Com base no dicionário de dados abaixo faça o que se pede:

CLIENTE (id, nome, endereço)PRODUTO(id, valor)ORDEM_COMPRA(id, data, id_cliente)ITEM_ORDEM_COMPRA(id,item

 

 _id, quantidade)

a) Criar o modelo lógico de dados no DBDesigner;b) Criar uma base de dados chamada LABORATORIOc) Criar um usuário com seu nome e com suas iniciais;d) Criar a tabelas que atendam este modelo criado;e) Inserir dois registros em cada tabela.

Page 39: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 39/78

 

T L B D I I E T E C D E P R A I A G R A N D E

39

RECUPERANDO DADOS

EXIBINDO TODOS OS REGISTROS DE UMA TABELA

Sintaxe: SELECT * FROM <tabela>;

Exemplo: SELECT * FROM curso;

OPERADORES ARITMÉTICOS

ARITMÉTICOS: +, -, * e /

Exemplo:SELECT vlcurso, vlcurso*2, vlcurso+100,vlcurso-5, vlcurso/2

FROM cursos;

OPERADORES RELACIONAIS

RELACIONAIS: <, >, <=, >=, <>, != (diferente) e =

OPERADORES LÓGICOS

LÓGICOS: AND (e), OR (ou) e NOT (negação).

RESTRINGINDO EXIBIÇÃO DOS DADOS - WHEREa) Exibindo o nome dos cursos que inicia com a letra C:

SELECT nmcurso FROM cursosWHERE nmcurso LIKE 'C%';

b) Exibindo somente os dois primeiros registros de uma tabela:

SELECT * FROM cursos LIMIT 2;

c) Exibindo somente os cursos maiores que 3:

SELECT * FROM cursos WHERE cdcurso > 3

d) Exibindo somente os cursos entre 1 e 3:

SELECT * FROM cursosWHERE cdcurso BETWEEN 1 AND 3;

e) Exibindo somente os cursos que não fazem parte do intervalo 1 e 3:

SELECT * FROM cursosWHERE cdcurso NOT BETWEEN 1 AND 3;

Page 40: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 40/78

 

T L B D I I E T E C D E P R A I A G R A N D E

40

f) Exibindo somente os alunos com matriculas 100, 300 e 500:

SELECT * FROM alunoWHERE cdmatricula IN (100,300,500);

g) Exibindo todos os alunos com exceção das matriculas 100, 300 e 500:

SELECT * FROM alunoWHERE cdmatricula NOT IN (100,300,500);

h) Exibindo todos os alunos que não possuem endereço cadastrado:

SELECT * FROM alunoWHERE nmendereco IS NULL;

i) Exibindo todos os alunos que possuem endereço cadastrado:

SELECT * FROM alunoWHERE nmendereco IS NOT NULL;

 j) Exibindo todos os alunos que moram na avenida E cursam o curso com código 2:

SELECT nmaluno "Aluno", nmendereco, cdcurso

FROM alunoWHERE nmendereco LIKE 'Av%'AND cdcurso = 2;

l) Exibindo todos os alunos que moram na avenida OU cursam o curso com código 2:

SELECT nmaluno "Aluno", nmendereco, cdcursoFROM alunoWHERE nmendereco LIKE 'Av%'

OR cdcurso = 2;

Obs. Para colocar o apelido nas colunas (alias) basta colocar entre aspasduplas.

m) Exibindo uma lista exclusiva dos códigos de cursos que possuem aluno:

SELECT DISTINCT cdcurso FROM aluno;

n) Exibindo o nome dos alunos que possuem uma letra “a” na segunda posição doseu nome:

SELECT nmalunoFROM alunoWHERE nmaluno LIKE '_a%';

Page 41: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 41/78

 

T L B D I I E T E C D E P R A I A G R A N D E

41

o) Exibindo o nome dos alunos em ordem alfabética:

SELECT nmaluno FROM alunoORDER BY nmaluno;

p) Exibindo o nome dos alunos em ordem alfabética decrescente:

SELECT nmaluno FROM alunoORDER BY nmaluno DESC;

Page 42: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 42/78

 

T L B D I I E T E C D E P R A I A G R A N D E

42

TAREFA 03 - RECUPERAÇÃO DE DADOS

1. Conecte ao MySQL.

2. Mostre a estrutura da tabela DEPT.

3. Selecione todos os dados da tabela DEPT.

4. Crie uma consulta para exibir o nome, o cargo e a data de admissão da tabelaEMP.

5. Cria uma consulta para exibir os cargos exclusivos a partir da tabela EMP.

7. Faça novamente a consulta do item 4 e nomeie os cabeçalhos das colunascomo Nome, Cargo e Admissão respectivamente. Execute a consulta.

8. Exiba o nome e o salário dos empregados com um aumento de 15%.

9. Exibir o nome dos empregados em ordem alfabética.

10.Exibir o nome, o salário e o cargo dos empregados com o salário em ordemdecrescente.

11. Crie uma consulta para exibir o nome e o salário dos funcionários querecebem mais de 2850.

12.Crie uma consulta para exibir o nome do funcionário e o número dodepartamento para o número do funcionário 7566.

13.Exibir o nome e o salário de todos os funcionários cujos salários não estejamna faixa entre 1500 e 2850.

14.Exiba o nome do funcionário, o cargo e a data de admissão dos funcionáriosadmitidos entre 20/02/1951 e 01/05/1981. Ordene a consulta de modocrescente pela data inicial.

15.Exiba o nome do funcionário e o número do departamento de todos os

funcionários entre os departamentos 10 e 30 por ordem alfabética de nome.16.Listar o nome e o salário dos funcionários que recebem mais de 1500 e que

estão nos departamentos 10 ou 30. Nomeia as colunas para Empregado eSalário respectivamente.

17. Exiba o nome e a data de admissão de cada funcionário admitido em 1982.

18. Exiba o nome e o cargo de todos os funcionários que não possuem umgerente.

19.Exiba o nome, o salário e a comissão de todos os funcionários que recebemcomissão. Classifique os dados em ordem decrescente de salários e comissões.

Page 43: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 43/78

 

T L B D I I E T E C D E P R A I A G R A N D E

43

20.Exiba os nomes de todos os funcionários que possuem um A na terceira letrade seus nomes.

21.Exiba todos os funcionários que possuem duas letras L em seus nomes e

estão no departamento 30 ou seu gerente seja nº 7782.

22.Exiba o nome, o cargo e o salário de todos os funcionários cujos cargos sejamCLERK ou ANALYST e que seus salários não sejam iguais a 1000, 3000 e 5000.

23.Exibir o nome, o salário e a comissão de todos os funcionários cuja quantia decomissão seja maior que seus salários com 10% de aumento. Executenovamente a consulta.

Page 44: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 44/78

 

T L B D I I E T E C D E P R A I A G R A N D E

44

FUNÇÕES DE GRUPO

a) Exibindo a somatória do valor de todos os cursos:

SELECT SUM(vlcurso) FROM curso;

b) Exibindo a somatória do valor de todos os cursos:

SELECT SUM(vlcurso) FROM curso;

c) Exibindo a quantidade de alunos:

SELECT COUNT(cdmatricula)

FROM aluno;

d) Exibindo a quantidade de alunos:

SELECT COUNT(*)FROM aluno;

e) Exibindo a quantidade de cursos que possuem alunos:

SELECT COUNT(DISTINCT cdcurso)

FROM aluno;

f) Exibindo o maior número de matrícula:

SELECT MAX(cdmatricula)FROM aluno;

g) Exibindo o menor número de matrícula:

SELECT MIN(cdmatricula)FROM aluno;

h) Exibindo a média aritmética do valor dos cursos:

SELECT AVG(vlcurso)FROM curso;

i) Exibindo o desvio padrão5 do valor do curso:

SELECT STD(vlcurso)

5 DESVIO PADRÃO: é a medida da dispersão. É utilizado para calcular o quanto um valor difere damédia.

Page 45: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 45/78

 

T L B D I I E T E C D E P R A I A G R A N D E

45

FROM curso;

 j) Exibindo a quantidade de alunos por curso:

SELECT COUNT(*), cdcursoFROM alunoGROUP BY cdcurso;

l) Exibindo a soma de valor dos cursos agrupados por código, mas exibir somentequando a soma seja maior ou igual a 350.00:

SELECT SUM(vlcurso), cdcursoFROM curso

GROUP BY cdcursoHAVING SUM(vlcurso) >= 350;

Page 46: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 46/78

 

T L B D I I E T E C D E P R A I A G R A N D E

46

TAREFA 04 – FUNÇÕES DE GRUPO

1.  Exiba os salários maior, médio, menor e a soma de todos os salários de

todos os funcionários. Coloque um label nas colunas Máximo, Mínimo,Soma e Média, respectivamente. Arredonde os resultados para o númerointeiro mais próximo.

2.  Modifique a consulta anterior para exibir o salário maior, médio, menor e asoma de todos os salários para cada tipo de cargo.

3.  Crie uma consulta para exibir o número de pessoas com o mesmo cargo.

4.  Determine o número de gerentes sem listá-los. Coloque um label na colunaNúmero de Gerentes.

5.  Crie uma consulta para exibir a diferença entre os maiores e menoressalários. Coloque um label na coluna DIFERENCA.

6.  Exiba o número do gerente e o salário do funcionário com menorpagamento sob a supervisão desse gerente. Exclua todos cujo gerente nãoseja conhecido. Exclua todos os grupos em que o salário mínimo sejamenor do que 1000. Classifique a saída em ordem decrescente de salário.

7.  Crie uma consulta para exibir o nome do departamento, o nome do local, onúmero de funcionários e o salário médio de todos os funcionários nesse

departamento. Coloque um label nas colunas respectivamente. Arredondeo salário médio para duas casas decimais.

8.  Crie uma consulta que exiba o número total de funcionários e, desse total,o número total de funcionários contratados em 1980, 1981, 1982 e 1983.Coloque os cabeçalhos apropriados nas colunas.

9.  Crie uma consulta matriz para exibir o cargo, o salário desse cargo baseadono número do departamento e o salário total desse cargo para todos osdepartamentos, colocando em cada coluna um cabeçalho apropriado.

Page 47: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 47/78

 

T L B D I I E T E C D E P R A I A G R A N D E

47

 

FUNÇÕES DE LINHA

CARACTEREa) Exibindo o nome dos alunos com todas as letras maiúsculas:

SELECT UCASE(nmaluno)FROM aluno;

b) Exibindo o nome dos alunos com todas as letras minúsculas:

SELECT LCASE(nmaluno)FROM aluno; OU

SELECT LOWER(nmaluno) ouFROM aluno;

c) Exibindo o nome dos alunos invertidos:

SELECT REVERSE(nmaluno), nmalunoFROM aluno;

d) Exibindo o nome dos alunos invertidos:

SELECT REVERSE(nmaluno), nmalunoFROM aluno;

e) Exibindo um literal com todas as letras maiúsculas:SELECT UCASE("simone"); ou

SELECT UPPER("simone");

f) Exibir a posição da primeira letra “a” no nome do aluno a partir da primeiraposição:

SELECT nmaluno, LOCATE("a", nmaluno, 1)FROM aluno;

Obs.: A função LOCATE possui 3 parâmetros. Onde:•  Primeiro parâmetro é a string que deseja ser localizada (sempre entre

aspas simples);•  Segundo parâmetro é a coluna que deseja;•  Terceiro parâmetro é a partir de qual posição da string deseja buscar a

string a ser localizada.

Page 48: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 48/78

 

T L B D I I E T E C D E P R A I A G R A N D E

48

g) Exibir o nome do aluno substituindo a letra “a” pela letra “i” :

SELECT nmaluno, REPLACE(nmaluno,"a","i")FROM aluno;

Obs.: A função REPLACE possui 3 parâmetros. Onde:•  Primeiro parâmetro é coluna que será localizada a string;•  Segundo parâmetro é a string que deseja ser localizada;•  Terceiro parâmetro é a string que será alterada.

h) Exibir o literal excluindo os espaços a esquerda:

SELECT LTRIM(“ Genoveva”);

i) Exibir o literal excluindo os espaços a direita:

SELECT RTRIM(“Genoveva ”);

 j) Exibir o literal excluindo os espaços a direita e a esquerda:

SELECT TRIM(“ Genoveva ”);

k) Exibir o literal excluindo os caracteres da posição final:

SELECT TRIM(TRAILING '1234' FROM "1234Genoveva1234")

l) Exibir o literal excluindo os caracteres da posição inícial:

SELECT TRIM(LEADING '1234' FROM "1234Genoveva1234")

m) Exibir o nome dos alunos a partir da 6ª posição:

SELECT SUBSTRING(nmaluno,6)FROM aluno;

n) Exibir o nome dos alunos concatenado com o endereco:SELECT CONCAT(nmaluno,nmendereco)FROM aluno;

o) Exibir a quantidade de caracteres do nome do aluno:

SELECT LENGTH(nmaluno)FROM aluno;

p) Exibir nome do aluno com 50 caracteres. Preencher a direita com o literal OK:

SELECT RPAD(nmaluno, 50, “OK”)FROM aluno;

Page 49: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 49/78

 

T L B D I I E T E C D E P R A I A G R A N D E

49

q) Exibir nome do aluno com 50 caracteres. Preencher a esquerda com o literal OK:

SELECT LPAD(nmaluno, 50, “OK”)FROM aluno;

r) Exibir o nome do aluno com 5 caracteres iniciando pela esquerda:

SELECT LEFT(nmaluno, 5)FROM aluno;

s) Exibir o nome do aluno com 5 caracteres iniciando pela direita:

SELECT RIGHT(nmaluno, 5)FROM aluno;

t) Exibir o nome do aluno com 2 vezes:

SELECT REPEAT(nmaluno, 2)FROM aluno;

u) Exibir o nome do aluno em ordem inversa:

SELECT REVERSE(nmaluno)FROM aluno;

v) Exibir o texto da segunda posição de uma lista de argumentos:

SELECT ELT(2,"Estrutura de Dados","TLBD2","SO")

x) Exibir a posição de uma lista de argumentos:

SELECT FIELD("TLBD2","Estrutura de Dados","TLBD2","SO");

z) Exibir a posição da primeira letra a no nome do aluno:

SELECT INSTR(nmaluno,"a"),nmalunoFROM aluno;

NUMÉRICASa) Exibindo o resto da divisão:

SELECT MOD(vlcurso,4.5) FROM curso;

b) Exibindo o valor absoluto de 2:SELECT ABS(-2);

c) Exibindo o seno6 de 0.987:

SELECT ASIN(0.987);

6 Retornará NULL se o valor não estiver entre -1 e 1.

Page 50: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 50/78

 

T L B D I I E T E C D E P R A I A G R A N D E

50

d) Exibindo o coseno de 47:SELECT COS(4);

e) Exibindo a tangente do arco 3:

SELECT ATAN(3);

f) Exibindo o código ASCII do caractere A:SELECT ASCII("A")

g) Exibindo o numero 3 convertido da base 10 para a base numérica 2:SELECT CONV(3, 10, 2);

Obs.: Podemos converter nas bases numéricas: 2, 8, 10 e 16.

h) Exibindo o maior argumento de uma lista:

SELECT GREATEST(3, 10, 2, 456);

i) Exibindo o menor argumento de uma lista:SELECT LEAST(3, 10, 2, 456);

 j) Exibindo o valor arredondado para o decimal 1:SELECT ROUND(4.86, 1);

k) Exibindo o valor truncado para o decimal 1:SELECT TRUNCATE(4.86, 1);

DATA E HORA

a) Exibindo a data adicionando o intervalo de um ano:SELECT ADDDATE("2009-01-01", INTERVAL 1 YEAR); ou

SELECT DATE_ADD("2009-01-01 23:30:11",INTERVAL "1:1" MINUTE_SECOND);

Onde:•  SECOND - Segundos;•  MINUTE - Minutos;•  HOUR - Hora;•  DAY - Dia;•  MONTH - Meses;•  YEAR - Anos;•  MINUTE_SECOND - Minutos:Segundos;•  DAY-HOUR - Dias Horas;•  YEAR-MONTH - Anos e Meses;•  HOUR_SECOND - Horas:Minutos:Segundos;•  DAY_MINUTE - Dias Horas:Minutos•  DAY_SECOND - Dias Horas:Minutos:Segundos.

Obs. Podemos subtrair utilizando a função SUBDATE, com argumentos iguais a

função ADDDATE.

7 Este número encontra-se em radianos.

Page 51: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 51/78

 

T L B D I I E T E C D E P R A I A G R A N D E

51

b) Exibindo a data atual:SELECT CURDATE(); ou SELECT CURRENT_DATE();

c) Exibindo a hora atual:

SELECT CURTIME(); ou SELECT CURRENT_TIME();

d) Exibindo a data e a hora atual:SELECT CURRENT_TIMESTAMP (); ou

SELECT NOW (); ou SELECT SYDATE(); 

e) Exibindo o nome do dia da data informada (no caso a data atual):SELECT DAYNAME(CURRENT_DATE());

f) Exibindo a data com a subtração de 3 dias:

SELECT DATE_SUB(CURRENT_DATE(), INTERVAL 3 DAY);g) Exibindo o índice do dia da semana da data informada:

SELECT DAYOFWEEK(CURRENT_DATE());

Onde:•  1 DOMINGO;•  2 SEGUNDA-FEIRA;•  3 TERÇA-FEIRA;•  4 QUARTA-FEIRA;•  5 QUINTA-FEIRA;• 

6 SEXTA-FEIRA;•  7 SÁBADO.

h) Exibindo o mês por extenso da data atual:SELECT DATE_FORMAT(CURRENT_DATE(), '%M');

Onde:•  %M Nome complete do mês;•  %m Mês numérico;•  %b Nome do mês abreviado;•  %W Nome completo do dia da semana;• 

%D Dia do mês;•  %Y Ano com quatro dígitos;•  %y Ano com dois dígitos;•  %j Dia do ano – numérico;•  %a Nome abreviado do dia da semana;•  %d Dia do mês – dígito;•  %r Hora no formato 12 horas;•  %T Hora no formato 24 horas;•  %H Hora 00-23;•  %h Hora 01-12;•  %”i” Minutos 00-59;•  %S Segundos.

h.1) Exibindo a data no formato dia, mês e ano:

SELECT DATE_FORMAT(CURRENT_DATE(), '%D %M %Y');

Page 52: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 52/78

 

T L B D I I E T E C D E P R A I A G R A N D E

52

 i) Exibindo da data somente o ano:

SELECT EXTRACT(YEAR FROM "2010-05-09");

Onde: SECOND, MINUTE, HOUR, DEAY, MONTH, YEAR, MINUTE_SECOND,HOUR_MINUTE, DAY_HOUR, YEAR_MONTH, HOUR_SECOND,DAY_MINUTE e DAY_SECOND.

 j) Exibindo a hora de um horário:

SELECT HOUR(CURRENT_TIME());

k) Exibindo os minutos de um horário:

SELECT MINUTE(CURRENT_TIME());l) Exibindo os segundos de um horário:

SELECT SECOND(CURRENT_TIME());

m) Exibindo o dia da data corrente:

SELECT DAY(CURRENT_DATE());

n) Exibindo o mês da data corrente:

SELECT MONTH(CURRENT_DATE());

o) Exibindo o ano da data corrente:

SELECT YEAR(CURRENT_DATE());

p) Exibindo o índice do dia da semana da data informada:SELECT WEEKDAY (CURRENT_DATE());

Onde:• 

0 SEGUNDA-FEIRA;•  1 TERÇA-FEIRA;•  2 QUARTA-FEIRA;•  3 QUINTA-FEIRA;•  4 SEXTA-FEIRA;•  6 SÁBADO;•  7 DOMINGO.

q) Exibindo a data atual com adição de três meses:SELECT PERIOD_ADD('200307',3);

r) Exibindo a data atual com subtração de meses:SELECT PERIOD_DIFF('200307', '200303');

Page 53: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 53/78

 

T L B D I I E T E C D E P R A I A G R A N D E

53

CONVERSÃO

a) Exibindo o resto da divisão:SELECT MOD(vlcurso,4.5) FROM curso;

OUTRAS FUNÇÕES

a) Exibindo o nome do usuário da conexão local:

SELECT USER();

b) Exibindo o nome do banco de dados em uso:

SELECT DATABASE();

c) Exibindo a senha psicografada:

SELECT PASSWORD('SIMONE');

d) Exibindo o nome do curso unido com o nome do aluno:

SELECT nmcurso FROM cursoUNIONSELECT nmaluno FROM aluno;

e) Exibindo o tempo que o servidor utiliza para executar uma instrução:

SELECT BENCHMARK(10000, 'SELECT nmcurso FROM curso;');

Onde: BENCHMARK(qtde_vezes, ‘instrução’);

CONDICIONAL

a) Exibindo o nome do curso e quando o curso for 1 exibir com aumento de 10%,quando for 2 com aumento de 15%, caso contrário permanece o mesmo valor:

SELECT nmcurso, vlcurso,

CASE cdcurso WHEN 1 THEN vlcurso * 1.10WHEN 2 THEN vlcurso * 1.15

ELSE vlcurso END FROM curso;

Obs. Utilizamos o CASE quando há mais de uma comparação a ser feita.

b) Exibindo o nome do curso e quando o curso for 1 exibir com aumento de 20%,caso contrário permanece o mesmo valor:

SELECT nmcurso, vlcurso, IF(cdcurso=1, vlcurso*1.20, vlcurso)FROM curso;

TAREFA 05 – FUNCOES DE LINHA

1. Crie uma consulta para exibir a data atual. Coloque um label na coluna Date.

Page 54: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 54/78

 

T L B D I I E T E C D E P R A I A G R A N D E

54

 2.  Exiba o número do funcionário, o nome, o salário e o aumento salarial de

15% expresso como número inteiro. Coloque um label na coluna NovoSalário.

3.  Altere o exercício 2, adicionando uma coluna que subtrairá o salário antigo donovo salário. Coloque um label na coluna Diferença. Execute novamente aconsulta.

4.  Exiba o nome do funcionário, a data de admissão que é a primeira após seismeses de serviço. Formate as datas que aparecem um formato semelhante a “Domingo, 9 Maio 2010”.

5.  Para cada funcionário exiba o nome do mesmo e calcule o número de mesesentre hoje e a sua data de admissão. Coloque um label na coluna MESES

TRABALHADOS. Ordene os resultados por número de meses empregado.Arredonde para cima o número de meses para o número inteiro maispróximo.

6.  Crie uma consulta que produza as seguintes informações para cadafuncionário: <nome do funcionário recebe <salário> mensalmente masdeseja <salário multiplicado por 3>. Coloque um label na coluna.

7.  Crie uma consulta que exiba o nome e o salário de todos os funcionários.Formate o salário para ter 15 caracteres e apresentar o cifrão à esquerda.Coloque um label na coluna Salário.

8.  Crie uma consulta que exibirá o nome do funcionário com a primeira letramaiúscula e todas as outras minúsculas, bem como o tamanho de seusnomes, para todos os funcionários cujo nome começa com J, A ou M. Forneçaa cada coluna um label apropriado.

9.  Exiba o nome, a data de admissão e o dia da semana que o funcionáriocomeçou a trabalhar. Coloque um label na coluna SEMANA. Ordene osresultados por dia da semana, iniciando por segunda-feira.

10.Crie uma consulta que exibirá o nome do funcionário e o valor da comissão.

Se o funcionário não receber comissão, coloque “Não há comissão”. Coloqueum label na coluna COMM.

11.Crie uma consulta que exiba o grau para todos os funcionários com base novalor da coluna JOB conforme a tabela mostrada abaixo:

JOB GRADEPRESIDENT AMANAGER BANALYST C

SALESMAN DCLERK E

Page 55: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 55/78

 

T L B D I I E T E C D E P R A I A G R A N D E

55

JUNÇÃO DE TABELAS (JOINS)

Junção é o termo utilizado para descrever o ato em que duas ou mais

tabelas são unidas para recuperar informações. O MySQL utiliza o padrão ANSI-928.

a) Exibindo o nome do curso e o nome do aluno:

SELECT nmcurso, nmalunoFROM curso as c JOIN aluno as a

ON c.cdcurso = a.cdcurso;

b) Exibindo o nome do curso e o nome do aluno de quem possui a letra z no nome:

SELECT nmcurso, nmaluno

FROM curso as c JOIN aluno as aON c.cdcurso = a.cdcurso

WHERE nmaluno LIKE'%z%';

c) Exibindo o nome do curso e o nome do aluno em um produto cartesiano:

SELECT nmcurso, nmalunoFROM curso as c CROSS JOIN aluno as a;

c) Exibindo o nome do curso e o nome do aluno com INNER JOIN 9:

SELECT c.nmcurso, a.nmalunoFROM curso as c INNER JOIN aluno as aON c.cdcurso = a.cdcurso;

d) Exibindo o nome do curso e o nome do aluno, mesmo que haja cursos sem alunos(LEFT JOIN)10:

SELECT c.nmcurso, a.nmalunoFROM curso as c LEFT JOIN aluno as a

ON c.cdcurso = a.cdcurso;

 j) Exibindo o nome do curso e o nome do aluno, mesmo que haja alunos sem cursos(RIGHT JOIN)11:

8 Em 1992, o American National Standards Institute devolveu um conjunto de padrões para SQL,como por exemplo, as junções.

9 INNER JOIN – tipo de junção mais comum, onde os registros sem equivalência são descartados.

10 LEFT JOIN – na junção, exibe todas as linhas da tabela à esquerda que não possuem

correspondência na tabela à direita.11 RIGHT JOIN – na junção, exibe todas as linhas da tabela à direita que não possuemcorrespondência na tabela à esquerda.

Page 56: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 56/78

 

T L B D I I E T E C D E P R A I A G R A N D E

56

SELECT c.nmcurso, a.nmalunoFROM curso as c RIGHT JOIN aluno as a

ON c.cdcurso = a.cdcurso;

 j) Exibindo o nome do curso e o nome do aluno (NATURAL JOIN):SELECT c.nmcurso, a.nmaluno

FROM curso as c NATURAL JOIN aluno as a;

TAREFA 06 – JUNÇÃO DE TABELA

1.  Crie uma consulta para exibir o nome do funcionário, sua mátricula e o nomedo departamento que ele está alocado.

2.  Crie uma lista única de todos os cargos existentes no departamento 30.

Inclua a localização do departamento 30 na saída.3.  Crie uma consulta para exibir o nome do funcionário, o nome do

departamento e a localização de todos os funcionários que recebem umacomissão.

4.  Exiba o nome do funcionário e o nome do departamento para todos osfuncionários que possuem um A em seus nomes.

5.  Crie uma consulta para exibir o nome, o cargo, o número e o nome dodepartamento para todos os funcionários que trabalham em DALLAS.

6.  Exiba o nome e o número do funcionário junto com o nome e o número dogerente. Coloque um label nas colunas.

7.  Modifique a consulta anterior para exibir todos os funcionários incluindo KING,que não possuem um, gerente. Execute este arquivo.

8.  Crie uma consulta que exibirá o nome dos funcionários, o número dodepartamento e todos os funcionários que trabalham no mesmodepartamento de um determinado funcionário. Forneça a cada coluna umlabel apropriado.

9.  Mostre a estrutura da tabela SALGRADE. Crie uma consulta que exiba onome, o cargo, o nome do departamento, o salário e a classificação de todosos funcionários.

10.Crie uma consulta para exibir o nome e a data de admissão de qualquerfuncionário admitido após o funcionário BLAKE.

11. Exiba todos os nomes de funcionários e as datas de admissão junto comonome e a data de admissão do gerente para todos os funcionários admitidosantes de seus gerentes. Coloque um label nas colunas respectivamente.

Page 57: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 57/78

 

T L B D I I E T E C D E P R A I A G R A N D E

57

SUBCONSULTAS

Consiste em uma consulta utilizada dentro de um comando SQL. Há várias

situações em que as sub-consultas são necessárias, como por exemplo:Mostrar os funcionários que recebam mais que a média dos salários;Atualizar em 10% o salário do funcionário que mais recebe etc.Uma sub-consulta pode ser utilizada dentro de um comando SELECT,

UPDATE, CREATE TABLE, DELETE ou INSERT. Uma sub-consulta não possui umacláusula ORDER BY. Há os seguintes tipos de sub-consultas:

• UMA LINHA  retorna apenas um valor;• MÚLTIPLAS LINHAS  pode retornar um ou mais valores, mas em uma

coluna.• MÚLTIP LAS COLUNAS  retornam um ou mais valores em mais de uma

coluna.• 

CORRELATAS 

utilizam campos da consulta externa.Podemos ainda utilizar os operadores:

OPERADOR OBSERVAÇÃO=, <>, >, <, >=, <= Usado em subconsulta de uma linha.

IN Teste se um valor pertence a um conjunto devalores.

NOT IN Teste se um valor não pertence a um conjunto devalores.

ANY Verifica se um determinado argumento casa comqualquer membro de um conjunto.

ALL Verifica se um determinado argumento casa comtodos os membros de um conjunto.EXISTS Usado em subconsulta correlatas, vê se um dado

valor existe em um conjunto, levando em contavalores nulos. Este fato não é considerado pelooperador in.

NOT EXISTS Nega o anterior.

UMA LINHA

SELECT ename, salFROM empWHERE sal = (SELECT MAX(sal) FROM emp);

CREATE TABLE emp_deptASSELECT e.ename Nome, d.dname Depto, e.sal Salario

FROM emp e, dept dWHERE d.deptno = e.deptno

AND sal > (SELECT AVG(sal) FROM emp);

INSERT INTO emp_dept (nome, salario)SELECT ename, salFROM empWHERE sal < (SELECT AVG(sal) FROM emp);

Page 58: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 58/78

 

T L B D I I E T E C D E P R A I A G R A N D E

58

MÚLTIPLAS LINHAS

SELECT COM IN

a) Localize os funcionários que recebem o mesmo salário que o salário mínimodos departamentos:SELECT ename, sal, deptnoFROM empWHERE sal IN (SELECT MIN(sal)

FROM empGROUP BY deptno);

SELECT COM ANY

b) Exibir os funcionários cujo salário é menor que o de qualquer escriturário eque não são escriturários:SELECT empno, ename, jobFROM empWHERE sal < ANY (SELECT sal

FROM empWHERE job = 'CLERK')

AND job <> 'CLERK';

Obs.: < ANY: significa menos do que o máximo. > ANY: significa mais do que omínimo.

SELECT COM ALL

c) Exibir os funcionários cujo salário é maior que os salários médios de todos osdepartamentos.

SELECT empno, ename, jobFROM empWHERE sal > ALL (SELECT AVG(sal)

FROM empGROUP BY deptno);

Obs.: > ALL: significa mais do que o máximo. < ALL: significa menos do que o

mínimo.

SUBCONSULTA NA CLÁUSULA FROM

d) Exibir o nome, salário dos funcionários, número de departamento e saláriomédio de todos os funcionários que recebem mais que o salário médio nos seusdepartamentos:

SELECT e.ename, e.sal, e.deptno, ROUND(b.salavg,2)FROM emp e, (SELECT deptno, avg(sal) salavg

FROM emp

GROUP BY deptno) bWHERE e.deptno = b.deptno

AND e.sal > b.salavg;

Page 59: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 59/78

 

T L B D I I E T E C D E P R A I A G R A N D E

59

TAREFA 07 – SUBCONSULTAS

1.  Crie uma consulta para exibir o nome e a data de admissão de todos osfuncionários no mesmo departamento que BLAKE. Exclua BLAKE.

2.  Cria uma consulta para exibir o número e o nome de todos os funcionáriosque recebam mais que o salário médio. Classifique os resultados, por salário,em ordem decrescente.

3.  Crie uma consulta que exiba o número e o nome de todos os funcionários quetrabalhem em um departamento com qualquer funcionário cujo nomecontenha um T.

4.  Exiba o nome do funcionário, o número do departamento e o cargo de todosos funcionários cuja localização do departamento seja DALLAS.

5.  Exiba o nome e o salário dos funcionários que se reportem a KING.

6.  Exiba o número do departamento, o nome e o cargo de todos os funcionáriosdo departamento de VENDAS (Sales).

7. Altere a consulta anterior para exibir o número, o nome e o salário de todosos funcionários que recebam mais que o salário médio e trabalhem em umdepartamento com qualquer funcionário cujo nome contenha um T. Executenovamente a consulta. 

Page 60: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 60/78

 

T L B D I I E T E C D E P R A I A G R A N D E

60

INDICES

Um índice é um arquivo estruturado que facilita o acesso aos dados.

a) Criando um índice chamado idx_curso para a coluna nmcurso da tabela CURSO:

CREATE INDEX curso_idx ON curso(nmcurso);

b) Excluindo um índice chamado idx_curso para a coluna nmcurso da tabela CURSO:

DROP INDEX curso_idx ON curso; ou 

ALTER TABLE curso DROP INDEX curso_idx;

VIEWS

Também conhecido como visão, é uma tabela virtual na qual os dados nãoestão fisicamente armazenados. Ela é apenas uma visão de um grupo de colunasde uma ou mais tabelas do banco de dados.

VANTAGENS:Evitar que usuários não autorizados tenham acesso a todos os dados de

uma tabela. Criamos um a visão com apenas alguns campos;Associar a uma visão, consultas que utilizam critérios de seleção completos,

e, assim, facilitar ao usuário. Sintaxe:CREATE [OR REPLACE] VIEW nome_da_view[alias, …]AS consulta;

Para eliminar uma views – DROP VIEW nome_view;Ver a estrutura de uma view – DESC ou DESCRIBE nome_viewVerificando dados de uma view – SELECT * FROM nome_viewExemplo:CREATE OR REPLACE VIEW aluno_cursoASSELECT a.cdmatricula, a.nmaluno, c.nmcurso

FROM aluno a, curso cWHERE a.cdcurso = c.cdcurso;

Page 61: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 61/78

 

T L B D I I E T E C D E P R A I A G R A N D E

61

 

TAREFA 08 – VIEWS

1. Crie uma visão EMP_VU com base no número, nome dos funcionários enúmero dos departamentos da tabela EMP. Altere o cabeçalho do funcionáriopara EMPREGADO.

2. Exiba o conteúdo da visão EMP_VU

3. Criar um índice para a coluna ENAME da tabela EMP chamado emp1_idx.

4. Usando a visão EMP_VU, informe uma coluna para exibir os nomes de todosos funcionários e números dos departamentos.

5. Crie uma visão chamada DEPT20 que contenha o número e o nome dofuncionário e o número do departamento dos funcionários do departamento20. Coloque um label nas colunas da visão. Não permita que um funcionário

seja atribuído a outro departamento através da visão.6. Exiba a estrutura da visão DEPT20.

7. Consultar os índices da tabela EMP no dicionário de dados.

8.Crie uma visão chamada SALARIO_VU com base no nome, salário dofuncionário, nome do departamento e classe de salário de todos osfuncionários.

Page 62: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 62/78

 

T L B D I I E T E C D E P R A I A G R A N D E

62

 

CONCESSÃO E REVOGAÇÃO PRIVILEGIOS DE USUÁRIO

PRIVILÉGIOS DE USUARIO

CREATE Criar tabelas;CREATE TEMPORARY TABLES Criar tabelas temporárias;DELETE Excluir registros;EXECUTE Executar procedimentos;INDEX Criar índices;INSERT Inserir registros;LOCK TABLES Bloquear tabelas;SELECT Selecionar os registros;SHOW DATABASES Exibir os bancos de dados;UPDATE Atualizar registros;USAGE Privilégio de conexão.

CRIANDO UMA CONTA DE USUARÍO

GRANT CREATE, CREATE TEMPORARY TABLES, DELETE, EXECUTEINDEX, INSERT, SELECT, SHOW DATABASES, UPDATEON *.* TO DISCENTE IDENTIFIED BY ‘AULA’;

CONCESSÃO DE PRIVILÉGIOS

Exemplos:A)  Privilégios globais a um usuário: 

GRANT ALL ON *.* TO Genoveva;

B)  Privilégios globais a um banco de dados específico para um usuário: GRANT ALLL ON TLBD.* TO Genoveva;

Page 63: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 63/78

 

T L B D I I E T E C D E P R A I A G R A N D E

63

C) Privilégios a uma única tabela para um usuário: GRANT SELECT ON curso TO Genoveva;

D) Privilégios a uma coluna específica para um usuário: 

GRANT SELECT (empno) ON emp TO Genoveva;

REVOGANDO DE PRIVILÉGIOS

Exemplos:A)  Revogar todos os privilégios de um usuário: 

REVOKE ALL ON EMP.* TO Genoveva;

MYSQL WORKBENCH

Entrar no site do MySQL – www.mysql.com, cadastrar-se e baixar a última

Page 64: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 64/78

 

T L B D I I E T E C D E P R A I A G R A N D E

64

 

Page 65: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 65/78

 

T L B D I I E T E C D E P R A I A G R A N D E

65

 

Page 66: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 66/78

 

T L B D I I E T E C D E P R A I A G R A N D E

66

 

Page 67: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 67/78

 

T L B D I I E T E C D E P R A I A G R A N D E

67

 

  EER Diagram: diagramas disponíveis para o banco de dados;

  Physical Schemata: objetos disponíveis para criarmos bem comotambém lista os que já criamos de acordo com seu tipo se for uma tabelairá aparecer na parte de “Tables”, as Views na parte de “Views” e assimpor diante.

  SQL Script’s: criar um SQL Script Adicional para o seu banco ou carregarum arquivo externo criado anteriormente;

  Model Notes: é uma área onde você tem uma espécie de bloco de notassobre o banco de dados onde pode ir anotando várias coisas que possam

ser úteis;

  Visualização total do Dashboard: miniatura de todo o projeto, onde

poderá navegar entre todas as páginas que compõem o seu diagrama;

Page 68: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 68/78

 

T L B D I I E T E C D E P R A I A G R A N D E

68

  Catálogo do Banco de dados: Apresenta de forma hierárquica osobjetos que compõem o banco de dados em produção;

  User Types: criar um novo tipo de dado totalmente personalizado de

acordo com cada necessidade.  Informações Gerais sobre o Objeto selecionado: traz informações

sobre o objeto que estiver selecionado naquele momento.

Exemplo

  A escola profissionalizante Socola deseja informatizar o cadastro dos seusalunos (matricula, nome, endereço, telefone e data de nascimento) e oscursos que ela oferece (código, nome, carga horária e valor).

ADICIONANDO UM DIAGRAMA

ADICIONANDO TABELAS

Page 69: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 69/78

 

T L B D I I E T E C D E P R A I A G R A N D E

69

 

PROPRIEDADES DA TABELA E DA COLUNA

FERRAMENTAS

Page 70: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 70/78

 

T L B D I I E T E C D E P R A I A G R A N D E

70

 1.  Ferramenta de Seleção;2.  Movimentação do Modelo;3.  Borracha (CFTRL + Z desfaz algumas operações);

4.  Agrupa Objetos;5.  Bloco de texto para comentários;6.  Insere uma imagem no diagrama; 7.  Criar nova tabela;8.  Criar views;9.  Criar stored procedures;10.Relacionamento 1 : 1 não identificado;11.Relacionamento 1 : N não identificado;12.Relacionamento 1 : 1 identificado;13.Relacionamento 1 : N identificado;14.Relacionamento N : M identificado

15.Relacionamento baseado em colunas pré-existentes.

GERANDO SCRIPT

Page 71: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 71/78

 

T L B D I I E T E C D E P R A I A G R A N D E

71

 

Page 72: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 72/78

 

T L B D I I E T E C D E P R A I A G R A N D E

72

 

Page 73: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 73/78

 

T L B D I I E T E C D E P R A I A G R A N D E

73

 

ANEXO A – MODELO LÓGICO DE DADOS

Os modelos lógicos abaixo foram criados com a ferramenta Oracle Data Modeler.

MODELO DE RECURSOS HUMANOS

MODELO DE ESCOLA

Page 74: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 74/78

 

T L B D I I E T E C D E P R A I A G R A N D E

74

ANEXO B – DICIONÁRIO DE DADOS

A seguir temos as colunas das tabelas e os seus descritivos.

DEPT

NOME DA COLUNA TIPO E TAMANHO DESCRIÇÃO

DEPTNO NUMERIC(2) – PK Número do departamento (PK)DNAME VARCHAR(14) Nome do departamentoLOC VARCHAR(13) Local do departamento

EMP

NOME DA COLUNA TIPO E TAMANHO DESCRIÇÃOEMPNO NUMERIC(4) – PK Matrícula do empregadoENAME VARCHAR(10) Nome do empregadoJOB VARCHAR(9) Cargo do empregadoMGR NUMERIC(4) Matrícula do gerenteHIREDATE DATE Data de admissãoSAL NUMERIC(7,2) SalárioCOMM NUMERIC(7,2) ComissãoDEPTNO NUMERIC(2) – FK Número do departamento

SALGRADE

NOME DA COLUNA TIPO DESCRIÇÃO

GRADE NUMERIC Número da faixa salarialLOSAL NUMERIC Início da faixa salarialHISAL NUMERIC Fim da faixa salarial

Page 75: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 75/78

 

T L B D I I E T E C D E P R A I A G R A N D E

75

ANEXO C – SCRIPTS UTILIZADOSCREATE TABLE DEPT(DEPTNO NUMERIC(2) NOT NULL PRIMARY KEY,

DNAME VARCHAR(14),LOC VARCHAR(13) );

INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');

CREATE TABLE EMP(EMPNO NUMERIC(4) NOT NULL PRIMARY KEY,ENAME VARCHAR(10),

JOB VARCHAR(9),MGR NUMERIC(4),HIREDATE DATE,SAL NUMERIC(7, 2),COMM NUMERIC(7, 2),DEPTNO NUMERIC(2));

ALTER TABLE empADD FOREIGN KEY (deptno) REFERENCES dept (deptno);

INSERT INTO EMP VALUES

(7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20);INSERT INTO EMP VALUES(7499, 'ALLEN', 'SALESMAN', 7698,'1981-02-20', 1600, 300, 30);INSERT INTO EMP VALUES(7521, 'WARD', 'SALESMAN', 7698,'1981-02-22', 1250, 500, 30);INSERT INTO EMP VALUES(7566, 'JONES', 'MANAGER', 7839,'1981-04-02', 2975, NULL, 20);INSERT INTO EMP VALUES(7654, 'MARTIN', 'SALESMAN', 7698,'1981-09-28', 1250, 1400, 30);INSERT INTO EMP VALUES(7698, 'BLAKE', 'MANAGER', 7839,'1981-05-01', 2850, NULL, 30);INSERT INTO EMP VALUES(7782, 'CLARK', 'MANAGER', 7839,'1981-06-09', 2450, NULL, 10);INSERT INTO EMP VALUES(7788, 'SCOTT', 'ANALYST', 7566,'1982-12-09', 3000, NULL, 20);INSERT INTO EMP VALUES(7839, 'KING', 'PRESIDENT', NULL,'1981-11-17', 5000, NULL, 10);INSERT INTO EMP VALUES(7844, 'TURNER', 'SALESMAN', 7698,'1981-09-08', 1500, 0, 30);INSERT INTO EMP VALUES(7876, 'ADAMS', 'CLERK', 7788,'1983-01-12', 1100, NULL, 20);INSERT INTO EMP VALUES(7900, 'JAMES', 'CLERK', 7698,'1981-12-03', 950, NULL, 30);INSERT INTO EMP VALUES(7902, 'FORD', 'ANALYST', 7566,'1981-12-03', 3000, NULL, 20);INSERT INTO EMP VALUES

Page 76: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 76/78

 

T L B D I I E T E C D E P R A I A G R A N D E

76

(7934, 'MILLER', 'CLERK', 7782,'1982-01-12', 1300, NULL, 10);

CREATE TABLE BONUS(ENAME VARCHAR(10),

JOB VARCHAR(9),SAL NUMERIC,COMM NUMERIC);

CREATE TABLE SALGRADE(GRADE NUMERIC,LOSAL NUMERIC,HISAL NUMERIC);

INSERT INTO SALGRADE VALUES (1, 700, 1200);INSERT INTO SALGRADE VALUES (2, 1201, 1400);

INSERT INTO SALGRADE VALUES (3, 1401, 2000);INSERT INTO SALGRADE VALUES (4, 2001, 3000);INSERT INTO SALGRADE VALUES (5, 3001, 9999);

CREATE TABLE curso(cdcurso NUMERIC(2) NOT NULL PRIMARY KEY,nmcurso VARCHAR(100) not null);

CREATE TABLE aluno(cdmatricula NUMERIC(3) NOT NULL PRIMARY KEY,nmaluno VARCHAR(100) not null,

nmendereco VARCHAR(200),cdcurso NUMERIC(2),dtinicio DATE);

ALTER TABLE alunoADD FOREIGN KEY (cdcurso) REFERENCES curso (cdcurso);

CREATE TABLE disciplina(cddisciplina NUMERIC(3) NOT NULL PRIMARY KEY,nmdisciplina VARCHAR(50) not null,cdcurso NUMERIC(2));

ALTER TABLE disciplinaADD FOREIGN KEY (cdcurso) REFERENCES curso (cdcurso);

CREATE TABLE mensalidade(cdmatricula NUMERIC(3) NOT NULL,dtemissao DATE NOT NULL,dtvencimento DATE NOT NULL,dtpagamento DATE,vlemitido NUMERIC(10,2) NOT NULL,vlpago NUMERIC(10,2));

ALTER TABLE mensalidadeADD PRIMARY KEY (cdmatricula, dtemissao);

Page 77: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 77/78

 

T L B D I I E T E C D E P R A I A G R A N D E

77

ALTER TABLE mensalidadeADD FOREIGN KEY (cdmatricula) REFERENCES aluno (cdmatricula);

INSERT INTO curso

VALUES (1, 'CONTABILIDADE');

INSERT INTO cursoVALUES (2, 'INFORMATICA');

INSERT INTO cursoVALUES (3, 'FARMACIA');

INSERT INTO cursoVALUES (4, 'COMERCIO EXTERIOR');

INSERT INTO alunoVALUES (100, 'Reginaldo Faria','Rua Globo, nº 15',1, CURRENT_DATE);INSERT INTO alunoVALUES (200,'Tarcisio Meira',' Av. Projac, nº 789',1, CURRENT_DATE);INSERT INTO alunoVALUES (300, 'Gloria Menezes', 'Rua Rio de Janeiro,nº 753', 2, CURRENT_DATE);INSERT INTO alunoVALUES(400, 'Fernanda Montenegro', 'Av. Belissíma, nº 66', 2, CURRENT_DATE);INSERT INTO alunoVALUES (500, 'Lima Duarte', 'Av. Grecia, nº 78',2, CURRENT_DATE);

INSERT INTO alunoVALUES (600,'Nicete Bruno','Travessa da Pensão, s/n',3, CURRENT_DATE);INSERT INTO alunoVALUES(700, 'Eva Vilma','Alameda Atriz de Novela, nº 100', 3, CURRENT_DATE);INSERT INTO alunoVALUES (800, 'Reginaldo Faria',NULL, 3, CURRENT_DATE);INSERT INTO alunoVALUES (900, 'Denis Carvalho',NULL, 1,CURRENT_DATE);INSERT INTO alunoVALUES (999,'Simone',NULL, NULL,CURRENT_DATE());

INSERT INTO disciplinaVALUES (1, 'Algoritmos',1);INSERT INTO disciplinaVALUES (2,'Sistemas Operacionais',1);INSERT INTO disciplinaVALUES(3,'Banco de Dados',1);INSERT INTO disciplinaVALUES(4, 'Banco de Dados',2);INSERT INTO disciplinaVALUES(5,'Ingles',2);INSERT INTO disciplinaVALUES(6,'Estrutura de Dados,2);

Page 78: Apostila Tlbd2 Mysql 2010

5/9/2018 Apostila Tlbd2 Mysql 2010 - slidepdf.com

http://slidepdf.com/reader/full/apostila-tlbd2-mysql-2010 78/78

 

T L B D I I E T E C D E P R A I A G R A N D E

78

REFERENCIA BIBLIOGRAFICA

MASLAKOWSKI, M. Aprenda em 21 Dias MySQL – Editora CAMPUS – Ano 2001;

LIMA, A. S. MySQL Server – Versões Open Source 4.x – Editora ÉRICA – Ano2003;

WELLING., L e THOMSON, L. – Tutorial MySQL – Editora Ciência Moderna – Ano2004;

http://www.mysql.com – acessado em abril de 2010.