Você está na página 1de 78

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx EscolaTcnicadePraiaGrande cvbnmqwertyuiopasdfghjklzxcvbnmq TECNOLOGIASELINGUAGENSPARA BANCODEDADOSII wertyuiopasdfghjklzxcvbnmqwertyui MySQL opasdfghjklzxcvbnmqwertyuiopasdfg hjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfg hjklzxcvbnmqwertyuiopasdfghjklzxc

vbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfg hjklzxcvbnmrtyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvbnmqwert yuiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklz xcvbnmqwertyuiopasdfghjklzxcvbnm qwertyuiopasdfghjklzxcvbnmqwerty


2010 SimoneMariaVianaRomano Email:simone@fatecg.com.br

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Contedo
INTRODUO ..................................................................................................................................................... 6 INSTALAO 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 USURIOS ............................................................................................................................ 22 INSERIR NA TABELA HOST: ........................................................................................................................ 22 INSERIR UM USURIO:................................................................................................................................. 22 EXIBIR O CONTEUDO DA TABELA USER: ................................................................................................ 22 INSERIR NA TABELA DB: ............................................................................................................................. 23 COLUNAS DA TABELA USER ...................................................................................................................... 23 TIPOS DE DADOS (DATATYPES).................................................................................................................. 24 NUMRICOS ................................................................................................................................................... 24 ORDINAIS: TIPOS INTEIROS...................................................................................................................... 24 NO ORDINAIS: PONTOS FLUTUANTES. ................................................................................................ 24 AUTO_INCREMENT .................................................................................................................................... 25 DATA E HORA................................................................................................................................................. 25 CADEIA............................................................................................................................................................ 26 TIPOS DE TABELAS......................................................................................................................................... 27 TST (TABELAS SEGURAS COM TRANSAO): .................................................................................... 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 PRIMRIA............................................................................................................ 31 ADICIONANDO CHAVE ESTRANGEIRA.................................................................................................... 31 DELETANDO CHAVES PRIMRIAS............................................................................................................ 31 ALTERANDO A TABELA PARA COMPLEMENTAR AS INSTRUES .................................................. 32 RENOMEANDO TABELAS.............................................................................................................................. 32 APAGANDO TABELAS .................................................................................................................................... 32 TRUNCANDO TABELAS ................................................................................................................................. 32 2

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

RESTRIES (CONSTRAINTS).................................................................................................................... 33 CHAVE PRIMRIA (PRIMARY KEY) .......................................................................................................... 33 ENUM ............................................................................................................................................................... 33 EXERCCIOS ................................................................................................................................................... 33 TAREFA 01 - TABELAS ................................................................................................................................. 34 MANIPULANDO DADOS ................................................................................................................................. 35 INSERINDO DADOS ....................................................................................................................................... 35 ATUALIZANDO DADOS................................................................................................................................ 35 DELETANDO DADOS .................................................................................................................................... 35 CONFIRMAR A TRANSAO ...................................................................................................................... 36 CANCELAR A TRANSAO......................................................................................................................... 36 TRANSFERENCIA DE DADOS COM LOAD DATA INFILE ....................................................................... 36 EXERCCIOS ................................................................................................................................................... 36 TAREFA 02 - MANIPULAO DE DADOS ................................................................................................. 37 ATIVIDADE PRATICA DE LABORATRIO ............................................................................................... 38 RECUPERANDO DADOS ................................................................................................................................. 39 EXIBINDO TODOS OS REGISTROS DE UMA TABELA............................................................................. 39 OPERADORES ARITMTICOS ..................................................................................................................... 39 OPERADORES RELACIONAIS ..................................................................................................................... 39 OPERADORES LGICOS............................................................................................................................... 39 RESTRINGINDO EXIBIO 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 no 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 exceo das matriculas 100, 300 e 500:................................................... 40 h) Exibindo todos os alunos que no possuem endereo cadastrado:........................................................... 40 i) Exibindo todos os alunos que possuem endereo cadastrado: .................................................................. 40 j) Exibindo todos os alunos que moram na avenida E cursam o curso com cdigo 2: ................................. 40 l) Exibindo todos os alunos que moram na avenida OU cursam o curso com cdigo 2: .............................. 40 m) Exibindo uma lista exclusiva dos cdigos de cursos que possuem aluno: ............................................... 40 n) Exibindo o nome dos alunos que possuem uma letra a na segunda posio do seu nome:.................. 40 o) Exibindo o nome dos alunos em ordem alfabtica:................................................................................... 41 p) Exibindo o nome dos alunos em ordem alfabtica decrescente:............................................................... 41 TAREFA 03 - RECUPERAO DE DADOS ................................................................................................. 42 FUNES DE GRUPO ...................................................................................................................................... 44 a) Exibindo a somatria do valor de todos os cursos: .................................................................................. 44 b) Exibindo a somatria 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 nmero de matrcula: .................................................................................................... 44 g) Exibindo o menor nmero de matrcula: .................................................................................................. 44 h) Exibindo a mdia aritmtica do valor dos cursos:.................................................................................... 44 i) Exibindo o desvio padro do valor do curso: ........................................................................................... 44 j) Exibindo a quantidade de alunos por curso: ............................................................................................ 45 l) Exibindo a soma de valor dos cursos agrupados por cdigo, mas exibir somente quando a soma seja maior ou igual a 350.00: ............................................................................................................................... 45 TAREFA 04 FUNES DE GRUPO............................................................................................................ 46 FUNES DE LINHA ....................................................................................................................................... 47 CARACTERE ................................................................................................................................................... 47 a) Exibindo o nome dos alunos com todas as letras maisculas:.................................................................. 47 b) Exibindo o nome dos alunos com todas as letras minsculas:.................................................................. 47 3

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

c) Exibindo o nome dos alunos invertidos:.................................................................................................... 47 d) Exibindo o nome dos alunos invertidos: ................................................................................................... 47 e) Exibindo um literal com todas as letras maisculas: ................................................................................ 47 f) Exibir a posio da primeira letra a no nome do aluno a partir da primeira posio: ........................ 47 g) Exibir o nome do aluno substituindo a letra a pela letra i : ......................................................... 48 h) Exibir o literal excluindo os espaos a esquerda:..................................................................................... 48 i) Exibir o literal excluindo os espaos a direita: ......................................................................................... 48 j) Exibir o literal excluindo os espaos a direita e a esquerda: .................................................................... 48 k) Exibir o literal excluindo os caracteres da posio final:......................................................................... 48 l) Exibir o literal excluindo os caracteres da posio incial: ...................................................................... 48 m) Exibir o nome dos alunos a partir da 6 posio: .................................................................................... 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 posio de uma lista de argumentos: .............................................................. 49 x) Exibir a posio de uma lista de argumentos: .......................................................................................... 49 z) Exibir a posio da primeira letra a no nome do aluno:........................................................................... 49 NUMRICAS ................................................................................................................................................... 49 a) Exibindo o resto da diviso:...................................................................................................................... 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 cdigo ASCII do caractere A:.................................................................................................. 50 g) Exibindo o numero 3 convertido da base 10 para a base numrica 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 subtrao de 3 dias: .............................................................................................. 51 g) Exibindo o ndice do dia da semana da data informada:.......................................................................... 51 h) Exibindo o ms por extenso da data atual: ............................................................................................... 51 h.1) Exibindo a data no formato dia, ms e ano: .......................................................................................... 51 i) Exibindo da data somente o ano:............................................................................................................... 52 j) Exibindo a hora de um horrio:................................................................................................................. 52 k) Exibindo os minutos de um horrio: ......................................................................................................... 52 l) Exibindo os segundos de um horrio:........................................................................................................ 52 m) Exibindo o dia da data corrente:.............................................................................................................. 52 n) Exibindo o ms 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 adio de trs meses: ..................................................................................... 52 r) Exibindo a data atual com subtrao de meses: ....................................................................................... 52 CONVERSO................................................................................................................................................... 53 a) Exibindo o resto da diviso:...................................................................................................................... 53 OUTRAS FUNES ........................................................................................................................................ 53 a) Exibindo o nome do usurio da conexo local: ........................................................................................ 53 b) Exibindo o nome do banco de dados em uso: ........................................................................................... 53 c) Exibindo a senha psicografada: ................................................................................................................ 53 4

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

d) Exibindo o nome do curso unido com o nome do aluno: .......................................................................... 53 e) Exibindo o tempo que o servidor utiliza para executar uma instruo:.................................................... 53 CONDICIONAL ............................................................................................................................................... 53 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 contrrio permanece o mesmo valor:....................................................................... 53 b) Exibindo o nome do curso e quando o curso for 1 exibir com aumento de 20%, caso contrrio permanece o mesmo valor:............................................................................................................................ 53 TAREFA 05 FUNCOES DE LINHA............................................................................................................. 53 JUNO 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 JUNO DE TABELA ............................................................................................................ 56 SUBCONSULTAS............................................................................................................................................... 57 UMA LINHA .................................................................................................................................................... 57 MLTIPLAS LINHAS ..................................................................................................................................... 58 SELECT COM IN .......................................................................................................................................... 58 SELECT COM ANY....................................................................................................................................... 58 SELECT COM ALL ....................................................................................................................................... 58 SUBCONSULTA NA CLUSULA 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 CONCESSO E REVOGAO PRIVILEGIOS DE USURIO.................................................................. 62 PRIVILGIOS DE USUARIO.......................................................................................................................... 62 CRIANDO UMA CONTA DE USUARO........................................................................................................ 62 CONCESSO DE PRIVILGIOS.................................................................................................................... 62 REVOGANDO DE PRIVILGIOS .................................................................................................................. 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 LGICO DE DADOS................................................................................................ 73 MODELO DE RECURSOS HUMANOS.......................................................................................................... 73 MODELO DE ESCOLA ................................................................................................................................... 73 ANEXO B DICIONRIO DE DADOS .......................................................................................................... 74 ANEXO C SCRIPTS UTILIZADOS .............................................................................................................. 75 REFERENCIA BIBLIOGRAFICA................................................................................................................... 78

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

INTRODUO
Segundo LIMA (2003), desde a publicao das regras de Codd, em 1970, vrios sistemas de gerenciamento de bases de dados (SGBDs) tm sido lanados no mercado todos com confiabilidade, robustez, rapidez, portabilidade, segurana, escalabilidade, etc. O MySQL um gerenciador construdo em mltiplas camadas: APRESENTAO, LGICA e FSICA. O MySQL utiliza o padro SQL ANSI1-92. Conforme o padro SQL-92 a transaes possuem propriedade ACID (Atomicidade, Consistncia, Isolamento e Durabilidade): ATOMICIDADE: as atualizaes de uma transao so tratadas co uma s unidade atmica. Ou seja, se houver duas inseres e uma deleo ser tratada integralmente; CONSISTNCIA: uma transao deve preservar a integridade da base de dados, inclusive os ndices; ISOLAMENTO: uma transao deve desconhecer as atualizaes feitas por outras transaes concorrentes; DURABILIDADE: as atualizaes efetuadas por uma transao devem persistir 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 Definio de Dados); DML (Data Manipulation Language Linguagem de Manipulao de Dados); DCL (Data Control Language Linguagem de Controle de Dados).

Todo bom sistema de banco de dados deve apresentar um projeto, que visa organizao das informaes e utilizao de tcnicas para que o futuro sistema obtenha boa performance e tambm facilite infinitamente as manutenes que venham a acontecer. Desenvolvido em 1996 pela consultoria TcX (Sucia); Baseado em um DBMS chamado MSql; Open Source; Servidor multithread; Compatvel com o ANSI SQL 92; Multi-plataforma; ltima verso oficial: 5.0 ou 5.1 SGBD que gerencia vrias bases de dado. Adquirido recentemente pela

American National Standards Institute (Instituto Nacional de Padres Americano)

Linguagem de Consulta Estruturada


6

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

INSTALAO DO MYSQL
Entrar no site do MySQL www.mysql.com, cadastrar-se e fazer download a ltima verso adequada ao seu sistema operacional. Atualmente estamos na verso 5.1.44 e o exemplo abaixo segue a instalao para o Microsoft Windows:

Ao executar o arquivo, surge tela abaixo, vamos escolher a verso COMPLETE e pressione em NEXT:

Na tela a seguir informado o diretrio onde ser instalado o software, clique em INSTALL:

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

A tela a seguir exibe o status da instalao:

A tela a seguir exibe informaes do Enterprise, clique em NEXT:

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Continua as informaes do Enterprise, pressione NEXT:

Na tela abaixo, pressionamos o boto FINISH:

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Agora vamos configurar o servidor de banco de dados MySql e pressione NEXT:

Vamos escolher a configurao padro (Standard Configuration) e pressione NEXT:

10

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

A tela a seguir, refere-se configurao da instncia e pressione NEXT:

Ainda na configurao da instncia, escolha Developer Machine, pressione NEXT:

11

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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

Ainda na configurao da instncia, pressione NEXT:

12

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Escolha a quantidade de conexes concorrentes no servidor em Decision Support e pressione NEXT:

Nesta tela a configurao da porta. Por padro o servidor MySQL utiliza a porta 3306. Pressione NEXT:

13

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Aqui vamos selecionar o conjunto de caracteres default:

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

14

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Nesta tela estamos prontos para EXECUTAR a configurao. Pressione EXECUTE:

Na tela a seguir, pressione FINISH:

15

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Para instalar o MySQL Query Browser e o MySQL Administrator, faa o download do site do MySQL do arquivo: Clique com o boto direito do mouse sobre o arquivo e escolha a opo INSTALAR.

O MySQL Case-Sensitive, portanto, faz distino entre as letras maisculas e minsculas na senha de um usurio.

16

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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:

17

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Digite a senha do usurio e pressione OK:

PRINCIPAIS COMANDOS DO SERVIDOR


Os comandos em MySQL so executados com ponto-e-vrgula (;) e no fazem distino entre letras maisculas e minsculas (no CASE-SENSITIVE).

EXIBINDO OS BANCOS DE DADOS: SHOW DATABASES;

18

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Ou digite e pressione o boto:

Obs. O banco de dados padro o mysql. Ele armazena as informaes do de privilgio de todos os usurios, banco de dados e hosts. Excluir ou alterar uma 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;

19

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

O MySQL no LABORATRIO possui a senha mysql123

20

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

BANCO DE DADOS
CRIANDO UM BANCO DE DADOS
Sintaxe: CREATE DATABASE <banco_de_dados>; Exemplo: CREATE DATABASE tlbd;

Obs.: o banco de dado no faz distino entre letras maisculas e minsculas 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 inseres dos scripts: CURSO.SQL e EMP.SQL.

21

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

ADICIONANDO USURIOS
O banco de dados armazena todas as permisses para todos os bancos de dados do MySQL que consiste das seguintes tabelas: USER: armazena todos os nomes, senhas, hosts e privilgios de todos os usurios; DB: contm todos os usurios, banco de dados e nomes do host; HOST: contm todos os nomes do host, bancos de dados e privilgios que eles tm 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 USURIO:
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;

22

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Obs.: A funo PASSWORD uma funo que pode ser chamada de dentro do MySQL. Ela usa a string como argumento, criptografa e armazena no banco de dados.

INSERIR NA TABELA DB:


INSERT INTO db VALUES ('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 usurio est se conectando; USER: nome de usurio; PASSWORD: senha do usurio codificada.

Colunas de privilgios: contm o valor Y (Yes): SELECT_PRIV INSERT_PRIV INDEX_PRIV ALTER_PRIV GRANT_PRIV RELOAD_PRIV PROCESS_PRIV FILE_PRIV SHOW_DB_PRIV SUPER_PRIV LOCK_TABLES_PRIV REPL_SLAVE_PRIV UPDATE_PRIV DELETE_PRIV CREATE_PRIV DROP_PRIV REFERENCES_PRIV SHUTDOWN_PRIV EXECUTE_PRIV CREATE_TMP_TABLE_PRIV REPL_CLIENT_PRIV

23

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

TIPOS DE DADOS (DATATYPES)


Vamos estudar os tipos de dados suportados pelo MySQL, que so agrupados um certo nmero de tipos de campos e podem se agrupados em trs categorias: NUMERICOS, DATA E HORA e STRING (CADEIAS) DE CARACTERES. Vamos conhecer os tipos numricos: pontos flutuantes, ordenais e no ordenais) e de data dentro do MySQL. Temos os tipos:

NUMRICOS
ORDINAIS: TIPOS INTEIROS Temos seis tipos e alguns so sinnimos. Se especificarmos que for um tipo assinalado (usa sinal). Devemos entender as diferenas entre os tipos de campos para armazenar de forma correta a informao. Por exemplo, no armazenar o nome do aluno em um campo do tipo INTEGER. Abaixo temos uma tabela contendo os intervalos de tamanho suportado pelos tipos ordinais: TIPO DE DADO TINYINT BIT BOOL SMALLINT MEDIUMINT INT INTEGER BIGINT INTERVALO COM SINAL -128 A 127 Tinyint(1) -32768 a 32767 -8388608 a 8388607 -2147483648 a 2147483647 -9223372036854775808 a 9223372036854775807 INTERVALO SEM SINAL 0 a 255 0 a 65535 0 a 167777215 0 a 4294967295 0 a 18446744073709551615

No MySQL utiliza o padro ANSI-92, podemos opcionalmente podemos especificar entre parnteses o tamanho desejado e exibe somente o tamanho do display (preenchimento) a esquerda, caso seja menor ao que foi especificado na coluna. Exemplo TINTINT(3), ou seja, 3 caracteres no display e armazenamos o nmero 25, o MySql vai completar com o caractere 0 ou seja, mais um esquerda para chegar aos 3 caracteres. exibido ento 025. NO ORDINAIS: PONTOS FLUTUANTES. FLOAT: no pode ser sem sinal. A preciso do campo deve ser menor ou igual a 25 (preciso simples); At a verso 3 somente temos preciso de duas casas decimais. DOUBLE: podemos especificar o tamanho do display e da preciso. Geralmente colocamos na definio DOUBLE (M,D), onde M o tamanho da preciso e D o tamanho do display. um nmero de preciso dupla com notao cientfica. Os valores no so negativos. O primeiro valor a largura e o segundo so as casas decimais. Outros tipos de DOUBLE sinnimos so: DOUBLE PRECISION e REAL.

24

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

DECIMAL (DEC): possui o sinnimo REAL, mas so armazenados de maneira diferente. So armazenados como STRING. Se por exemplo, se quiser valores exatos armazenados no banco de dados necessrio trabalhar com NUMERIC ou com DECIMAL. Um nmero de ponto flutuante no-empacotado so os tipos DOUBLE e DECIMAL, eles se comportam como um CHAR. A parte inteira, ponto, os decimais e o valor negativo, se tiver, so armazenados como STRING. Se no especificarmos um tamanho para preciso assumido por default o nmero zero e so especificar um tamanho para o display (parte inteira) assumido como 10. O DEC, NUMERIC e FIXED so sinnimos de DECIMAL e vice-versa.

Abaixo temos uma tabela contendo os intervalos de tamanho suportado pelos tipos no-ordinais: TIPO DE DADO FLOAT (M) DOUBLE(M,D) DECIMAL(M,D) NUMERIC(M,D) INTERVALO -3.402823466E+38 a 3.402823466E+38 -2.2250738585072014E-308 a 2.2250738585072014E-308 Igual ao DOUBLE, porm, como CHAR Igual ao DECIMAL

Em dados monetrios necessrio declarar como NUMERIC ou DECIMAL, pois ser armazenado como STRING e trabalha como CHAR e mesmo que no seja utilizado, ele ser alocado na memria. AUTO_INCREMENT Altera o valor de uma coluna adicionando o nmero 1 (um) ao valor mximo atual. OBSERVAO: Para melhor performance, podemos inserir um valor NULL (nulo) ou um valor numrico do tipo INTEIRO (INT). Caso este nmero j exista, retornar um erro.

DATA E HORA
Algumas pessoas armazenam a data como string devido a maneira que o MySQL armazena os dados, no formato: ANO/MS/DIA. Isto um problema quando precisamos por exemplo, fazer clculos, comparao entre datas, temos muita dificuldade. Exibe os valores no formato Ano, ms e dia e tanto pode ser armazenado como string ou nmero. O MYSQL no valida data, somente, se entre meses de 0 a 12 e de dia de 0 a 31. Quem desenvolveu o MySQL justifica que a verificao da data responsabilidade da aplicao, dando como exemplo, quem no sabe a data de nascimento correta. Exemplo: 0/0/05 ele aceita. No armazena as datas como string, pois se necessrio alterar ou fazer calculo entre datas no ser possvel. Tipos: DATE: DATETIME: possui o horrio juntamente com a data;
25

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

TIME: armazena hora e pode receber nmeros ou strings e fazer a converso explicitamente; YEAR: ele pede um display 2 (70 a 69) ou 4 dgitos (1970 a 2069). TIMESTAMP: armazena data e hora, mas podemos informar o tamanho do display. Com relao ao PHP, ele interpretado como INTEIRO (a partir da verso 4.1 do PHP interpretado como STRING) e sempre armazenado com 4 bytes. O formato somente para exibio. Abaixo temos uma tabela contendo os intervalos de tamanho suportado: TIPO DE DADO DATE DATETIME TIME YEAR(2|4) TIMESTAMP(M) TIMESTAMP(14) TIMESTAMP(12) TIMESTAMP(8) TIMESTAMP(6) FAIXA SUPORTADA 1000-01-01 a 9999-12-31 1000-01-01 00:00:00 a 9999-12-31 23:59:59 -838:59:59 a 838:59:59 1901 A 2155 | 1970 A:00 A 2069 1970-01-01 00:00 a 2037 YYYYMMDDHHMMSS YYMMDDHHMMSS YYYYMMDD YYMMDD

CADEIA
Armazena strings. No caso do Delphi temos o CHAR e uma cadeia de strings (VARCHAR). O CHAR armazena todo o espao alocado. Por exemplo, CHAR(50), mesmo que no seja utilizado os 50 caracteres, e usou 7, o restante continua alocado. 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 alocado dinamicamente. Tamanho varivel; TINYTEXT, TINYBLOB; BLOB, TEXT; so binrios, porm 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 nmero limitado de opes, por exemplo, estado civil com as seguintes opes: casado, solteiro, vivo, etc. E podemos escolher uma entre as opes enumeradas; SET: conjunto, onde podemos limitar as opes e podemos escolher mais de uma das opes disponveis.

26

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

TIPOS DE TABELAS
Vamos ver os tipos de tabelas que o MySQL suporta. No MySQL podemos escolher um ou mais tipos de tabelas. Vamos conhecer as principais caractersticas das duas mais utilizadas e dentro de cada tipo as tabelas que podero ser criadas. Dividido em dois grupos: TABELAS SEGURAS e TABELAS NO SEGURAS. A diferena entre os grupos se d em relao a tolerncia a falhas, pois fica mais fcil recuperar em caso de erro de hardware(pane na trilha da HD ou servio deu erro). No mesmo banco de dados podemos ter tabelas dos dois tipos: seguras e no seguras.

TST (TABELAS SEGURAS COM TRANSAO): A recuperao pode ser automtica ou atravs de um backup mais os logs de transaes que criado nestes tipos de tabelas. Podemos voltar os dados no ponto onde ocorreu a falha e recuperar os seus dados. CARACTERSTICAS Possui maior tolerncia a falha de hardware e software; Podemos dar COMMIT ou dar o ROLLBACK (ignorar as alteraes) em um bloco de transaes (log); Muito bom quando h uma quantidade grande de usurios (controle de concorrncia); Operaes DML (INSERT, UPDATE e DELETE) logam em nvel de registro e no de tabela; Perde-se performance pois em tudo que feito no banco de dados registrado para recuperao posterior, se necessrio (log).
INNODB
Armazenamento Seguro. Bloqueio em nvel de registro (operaes DML), portanto os registros anteriores e posteriores no ficam alocados e a tabela no 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 verso 4.1 o tipo de tabela padro do MySQL. Excelente em grandes volumes de dados, h estatsticas que h um banco de dados com 1 TeraByte, 800 inseres e atualizaes por segundo. um SGBD dentro do MySQL, pois o armazenamento dentro extremamente seguro, pois gera um arquivo de log para cada transao feita no banco de dados, podemos especificar a recuperao de um ponto especfico dentro do banco de dados. H diversos benefcios.
27

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

criado um arquivo .frm (estrutura da tabela) para cada tabela, mas os dados no ficam em arquivos fsicos isolados. Pois os dados ficam dentro do Data Files ( criado um data e dois logs. Estrutura: arquivos .frm, lbdata1, lb_logfile0 e lb_logfile1.

DBD.

NTST (TABELAS NO SEGURAS COM TRANSAO): No h possibilidade de recuperao pois no gera log e isto, diferencia na performance. CARACTERSTICAS No gera log, portanto, muito mais rpida; Utiliza menos espao em disco; Utiliza menos memria para a atualizao. Porm qualquer atualizao que feita no banco de dados no pode ser revertida, ela vai direto para o disco. Em caso de falha tambm no possvel recuperar os dados.
MYISAM
a mais utilizada em tabelas no seguras usada em 98% dos casos. CARACTERSTICAS Composta por trs arquivos (.frm3 (contm a definio da tabela), .myi (MyIndex armazena os ndices desta tabela), .myd (MyData, armazena os dados desta tabela); Se tivermos 10 tabelas do tipo MyIsam termos 30 arquivos (10 para cada tipo de arquivo); Os tipos de dados BLOB e TEXT podem ser indexados; No suporta relacionamentos (no podemos criar uma chave estrangeira); Cada registro da tabela pode ser criado como Fixo, Dinmico ou Compactado. determinado no momento da criao da tabela isto determinado e automtico. No momento que os campos da tabelas so criados e se os campos no BLOB, TEXT ou VARCHAR, automaticamente uma tabela fixa e extremamente mais rpida, pois quando o MySQL tiver que procurar um registro ele j sabe o tamanho exato que precisa percorrer, pois so todos campos fixos. S por ter um campo do tipo VARCHAR ela passa a ser dinmica. Ela pode ser compactada por um utilitrio do MySQL. Mais fcil de ser corrompida, tanto que no arquivo .myi o arquivo de ndice, o primeiro registro um flag informando se a tabela foi ou no fechada de forma correta. Caso no tenha sido fechada por forma correta, por default toda vez que o banco acessado reparado automaticamente. Exemplo: Criar uma tabela do tipo MySAM com dois campos:

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

28

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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

MERGE
o segundo tipo de tabela que tambm no aceita tolerncia a falhas. como um conjunto de tabelas (coleo de tabelas idnticas ao tipo MyIsam) e utiliza os arquivos com extenso .mrg como uma lista com todos os ndices que devem ser lidos como uma tabela s. Por exemplo, quando o tamanho mximo de um arquivo 2 Gb, temos uma tabela do tipo MyIsam que est passando deste tamanho, para resolver isto, podemos criar vrias tabelas com a mesma estrutura (tabela1, tabela2, tabela3 e tabela4 com ID e NOME todas com dados), ento, criamos uma tabela MERGE para que as quatro tabelas sejam lidas como sendo uma s. Agiliza o processo de pesquisa, pois em uma tabela h menos registros. Desvantagem: as quatro tabelas do nosso exemplo precisam ser idnticas em tudo: quantidade de tipos, de dados, etc. (por isto pouco usado).

HEAP
Tambm chamada de MEMORY. So tabelas armazenadas em memria, no possuem arquivo fsico com exceo do .frm. No suporta Blob/Text e Auto Incremento. Extremamente rpida, pois utiliza hash4 para salvar os seus dados. Extremamente perigosa, pois como est em memria, se parar o servio, os dados que estavam nesta tabela so perdidos. Usadas como tabela temporria, com origem em arquivos fsicos. Em sntese, o tipo mais utilizado o MyIsam. Exemplo:

O conceito terico diz que "hash a transformao de uma grande quantidade de informaes em uma pequena quantidade de informaes".

29

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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

30

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

ALTERANDO TABELAS
ALTERANDO TIPO DE COLUNAS
Exemplo: ALTER TABLE curso CHANGE nmcurso nome_curso VARCHAR(100);

ADICIONANDO COLUNAS
Exemplo: ALTER TABLE curso ADD vlcurso NUMERIC(10,2);

ADICIONANDO CHAVE PRIMRIA


Exemplo: ALTER TABLE curso ADD PRIMARY KEY (cdcurso);

Observao: A coluna para ter a restrio de chave primria necessrio ter a restrio de NOT NULL (no nulo).

ADICIONANDO CHAVE ESTRANGEIRA


Exemplo: ALTER TABLE disciplina ADD FOREIGN KEY (cdcurso) REFERENCES curso (cdcurso);

DELETANDO CHAVES PRIMRIAS


Exemplo: ALTER TABLE curso DROP PRIMARY KEY;

31

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

ALTERANDO A TABELA PARA COMPLEMENTAR AS INSTRUES


Exemplo: ALTER TABLE disciplina ADD FOREIGN KEY (cdcurso) REFERENCES curso (cdcurso) ON DELETE RESTRICT;

Obs.: Ao criarmos o modelo no DBDesigner e gerar o SCRIPT a partir do modelo, surgem no final de cada tabela, as seguintes instrues: ON DELETE CASCADE: excluso do registro propaga-se abrangendo todas as ocorrncias nas tabelas filhas; ON DELETE NO ACTION: caso existam referncias ao registro em outras tabelas, a excluso cancelada (ROLLBACK); ON DELETE RESTRICT: efetua a excluso somente se no houver referncias ao registro em outra tabelas. Podemos utilizar restries tambm comando UPDATE. estas com o

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;

32

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

RESTRIES (CONSTRAINTS)
CHAVE PRIMRIA (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 obrigatrio ter uma chave primria e esta coluna deve ser do tipo no 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');

EXERCCIOS
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:

33

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

TAREFA 01 - TABELAS
1. Crie a tabela DEPARTAMENTO conforme o exemplo a seguir ID 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 dos funcionrios. Confirme as modificaes. 5. Confirme se as tabelas DEPARTAMENTO e EMPREGADO foram armazenadas no dicionrio de dados. (DICA: USER_TABLES) 6. Crie a tabela EMPREGADO2 de acordo com a estrutura da tabela EMP. Inclua apenas 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 restrio no nvel da tabela PRIMARY KEY a tabela EMPREGADO, usando a coluna ID. A restrio deve ser nomeada quando for criada. Dica: A restrio ativada com o comando ALTER TABLE. 10. Crie uma restrio PRIMARY KEY na tabela DEPARTAMENTO usando a coluna ID. A restrio deve ser nomeada quando for criada. 11. Adicione uma referncia de chave estrangeira na tabela EMPREGADO que ir assegurar que o funcionrio no seja atribudo a um departamento no existente. 12. Modificar tabela EMPREGADO. Adicione a coluna SALARIO do tipo de dados NUMERIC, preciso 7.

34

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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

Exemplo: A) EXPLICITA informa as colunas que sero inseridos os valores: INSERT INTO curso (nmcurso) VALUES ('INFORMTICA'); B) IMPLICITA informa os valores para as colunas de acordo com a ordem da criao das colunas: INSERT INTO curso VALUES (3,'CONTABILIDADE','2010-05-10'); C) INSERINDO VALORES NULOS: INSERT INTO cursos (nmcurso, dtinicio) VALUES ('COMERCIO EXTERIOR', NULL);
A data colocada no formato ANO-MS-DIA

ATUALIZANDO DADOS
Sintaxe: UPDATE tabela SET coluna = valor [WHERE condio];

Exemplos: A) Atualizar o valor dos cursos: UPDATE cursos SET vlcurso = 350.50; B) Atualizar o valor dos cursos que comeam com a letra C: UPDATE cursos SET vlcurso = vlcurso * 1.30 WHERE nmcurso LIKE 'C%';

DELETANDO DADOS
Sintaxe: DELETE FROM tabela [WHERE condio];
35

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Exemplos: A) Apagar todos os professores com cdigos menores que 3: DELETE FROM professor WHERE cdprofessor < 3 B) Apagar todos os professores com cdigos menores que 3: DELETE FROM professor WHERE cdprofessor < 3

CONFIRMAR A TRANSAO
Somente para comandos INSERT, UPDATE ou DELETE. Sintaxe: COMMIT;

CANCELAR A TRANSAO
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 grandes quantidades de dado de um arquivo texto em uma nica tabela sem necessidade de escrever instrues INSERT. Sintaxe: LOAD DATA LOCAL INFILE caminho:\\nome_arquivo.txt INTO TABLE nome_tabela;

Exemplo Prtico: A) Criar o arquivo de dado na unidade C chamado DADO.TXT 1 CPD 2 DEP. PESSOAL 3 FATURAMENTO 4 CONTABILIDADE B) Criar a tabela DEPARTAMENTO no banco de dados TLBD com base nas colunas 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;

EXERCCIOS

1. 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 informaes dos nomes dos seus amigos de sala. 4. Carregar no arquivo AMIGUINHOS na tabela AMIGO.
36

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

TAREFA 02 - MANIPULAO DE DADOS


1. Crie a tabela abaixo conforme o comando: CREATE TABLE CLIENTE (ID NUMERIC(4) CONSTRAINT CLIENTE_ID_NN 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 do exemplo a seguir. No liste as colunas na clusula INSERT. ID 1 2 3 4 5 SOBRENOME Savala Serrado Torre Guedes Torres NOME Elizabeth Marcelo Fernanda Rita Fernando USERID esavala mserrado ftorre rguedes Ftorres SALARIO 795 860 1100 750 1550

NOT NULL,

4. Preencha a tabela CLIENTE com uma segunda linha de dados de exemplo da lista anterior. Desta vez, liste as colunas explicitamente na clusula INSERT. 5. Inserir todos os outros registros, da maneira que achar melhor (crie um script) 6. Confirme a adio tabela. 7. Delete os dados tabela CLIENTE. 8. Altere o sobrenome do funcionrio 3 para Montenegro. 9. Altere o salrio para 1000 de todos os funcionrios que ganhem menos de 900. 10.Verifique as alteraes na tabela. 11.Delete FERNANDO TORRES da tabela CLIENTE. 12.Confirme as alteraes na tabela. 13.Esvazie a tabela inteira. 14.Confirme se a tabela est vazia.

37

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

ATIVIDADE PRATICA DE LABORATRIO


Com base no dicionrio de dados abaixo faa o que se pede: CLIENTE (id, nome, endereo) PRODUTO(id, valor) ORDEM_COMPRA(id, data, id_cliente) ITEM_ORDEM_COMPRA(id,item_id, quantidade) a) Criar o modelo lgico de dados no DBDesigner; b) Criar uma base de dados chamada LABORATORIO c) Criar um usurio com seu nome e com suas iniciais; d) Criar a tabelas que atendam este modelo criado; e) Inserir dois registros em cada tabela.

38

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

RECUPERANDO DADOS
EXIBINDO TODOS OS REGISTROS DE UMA TABELA
Sintaxe: Exemplo: SELECT * FROM <tabela>; SELECT * FROM curso;

OPERADORES ARITMTICOS
ARITMTICOS: +, -, * e / Exemplo: SELECT vlcurso, vlcurso*2, vlcurso+100,vlcurso-5, vlcurso/2 FROM cursos;

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

OPERADORES LGICOS
LGICOS: AND (e), OR (ou) e NOT (negao).

RESTRINGINDO EXIBIO DOS DADOS - WHERE


a) Exibindo o nome dos cursos que inicia com a letra C: SELECT nmcurso FROM cursos WHERE 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 cursos WHERE cdcurso BETWEEN 1 AND 3; e) Exibindo somente os cursos que no fazem parte do intervalo 1 e 3: SELECT * FROM cursos WHERE cdcurso NOT BETWEEN 1 AND 3;
39

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

f) Exibindo somente os alunos com matriculas 100, 300 e 500: SELECT * FROM aluno WHERE cdmatricula IN (100,300,500); g) Exibindo todos os alunos com exceo das matriculas 100, 300 e 500: SELECT * FROM aluno WHERE cdmatricula NOT IN (100,300,500); h) Exibindo todos os alunos que no possuem endereo cadastrado: SELECT * FROM aluno WHERE nmendereco IS NULL; i) Exibindo todos os alunos que possuem endereo cadastrado: SELECT * FROM aluno WHERE nmendereco IS NOT NULL; j) Exibindo todos os alunos que moram na avenida E cursam o curso com cdigo 2: SELECT nmaluno "Aluno", nmendereco, cdcurso FROM aluno WHERE nmendereco LIKE 'Av%' AND cdcurso = 2; l) Exibindo todos os alunos que moram na avenida OU cursam o curso com cdigo 2: SELECT nmaluno "Aluno", nmendereco, cdcurso FROM aluno WHERE nmendereco LIKE 'Av%' OR cdcurso = 2; Obs. Para colocar o apelido nas colunas (alias) basta colocar entre aspas duplas. m) Exibindo uma lista exclusiva dos cdigos de cursos que possuem aluno: SELECT DISTINCT cdcurso FROM aluno; n) Exibindo o nome dos alunos que possuem uma letra a na segunda posio do seu nome: SELECT nmaluno FROM aluno WHERE nmaluno LIKE '_a%';
40

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

o) Exibindo o nome dos alunos em ordem alfabtica: SELECT nmaluno FROM aluno ORDER BY nmaluno; p) Exibindo o nome dos alunos em ordem alfabtica decrescente: SELECT nmaluno FROM aluno ORDER BY nmaluno DESC;

41

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

TAREFA 03 - RECUPERAO 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 admisso da tabela EMP. 5. Cria uma consulta para exibir os cargos exclusivos a partir da tabela EMP. 7. Faa novamente a consulta do item 4 e nomeie os cabealhos das colunas como Nome, Cargo e Admisso respectivamente. Execute a consulta. 8. Exiba o nome e o salrio dos empregados com um aumento de 15%. 9. Exibir o nome dos empregados em ordem alfabtica. 10.Exibir o nome, o salrio e o cargo dos empregados com o salrio em ordem decrescente. 11. Crie uma consulta para exibir o nome e o salrio dos funcionrios que recebem mais de 2850. 12.Crie uma consulta para exibir o nome do funcionrio e o nmero do departamento para o nmero do funcionrio 7566. 13.Exibir o nome e o salrio de todos os funcionrios cujos salrios no estejam na faixa entre 1500 e 2850. 14.Exiba o nome do funcionrio, o cargo e a data de admisso dos funcionrios admitidos entre 20/02/1951 e 01/05/1981. Ordene a consulta de modo crescente pela data inicial. 15.Exiba o nome do funcionrio e o nmero do departamento de todos os funcionrios entre os departamentos 10 e 30 por ordem alfabtica de nome. 16.Listar o nome e o salrio dos funcionrios que recebem mais de 1500 e que esto nos departamentos 10 ou 30. Nomeia as colunas para Empregado e Salrio respectivamente. 17. Exiba o nome e a data de admisso de cada funcionrio admitido em 1982. 18. Exiba o nome e o cargo de todos os funcionrios que no possuem um gerente. 19.Exiba o nome, o salrio e a comisso de todos os funcionrios que recebem comisso. Classifique os dados em ordem decrescente de salrios e comisses.

42

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

20.Exiba os nomes de todos os funcionrios que possuem um A na terceira letra de seus nomes. 21.Exiba todos os funcionrios que possuem duas letras L em seus nomes e esto no departamento 30 ou seu gerente seja n 7782. 22.Exiba o nome, o cargo e o salrio de todos os funcionrios cujos cargos sejam CLERK ou ANALYST e que seus salrios no sejam iguais a 1000, 3000 e 5000. 23.Exibir o nome, o salrio e a comisso de todos os funcionrios cuja quantia de comisso seja maior que seus salrios com 10% de aumento. Execute novamente a consulta.

43

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

FUNES DE GRUPO
a) Exibindo a somatria do valor de todos os cursos: SELECT SUM(vlcurso) FROM curso; b) Exibindo a somatria 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 nmero de matrcula: SELECT MAX(cdmatricula) FROM aluno; g) Exibindo o menor nmero de matrcula: SELECT MIN(cdmatricula) FROM aluno; h) Exibindo a mdia aritmtica do valor dos cursos: SELECT AVG(vlcurso) FROM curso; i) Exibindo o desvio padro5 do valor do curso: SELECT STD(vlcurso)
DESVIO PADRO: a medida da disperso. utilizado para calcular o quanto um valor difere da mdia.
5

44

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

FROM curso; j) Exibindo a quantidade de alunos por curso: SELECT COUNT(*), cdcurso FROM aluno GROUP BY cdcurso; l) Exibindo a soma de valor dos cursos agrupados por cdigo, mas exibir somente quando a soma seja maior ou igual a 350.00: SELECT SUM(vlcurso), cdcurso FROM curso GROUP BY cdcurso HAVING SUM(vlcurso) >= 350;

45

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

TAREFA 04 FUNES DE GRUPO


1. Exiba os salrios maior, mdio, menor e a soma de todos os salrios de todos os funcionrios. Coloque um label nas colunas Mximo, Mnimo, Soma e Mdia, respectivamente. Arredonde os resultados para o nmero inteiro mais prximo. 2. Modifique a consulta anterior para exibir o salrio maior, mdio, menor e a soma de todos os salrios para cada tipo de cargo. 3. Crie uma consulta para exibir o nmero de pessoas com o mesmo cargo. 4. Determine o nmero de gerentes sem list-los. Coloque um label na coluna Nmero de Gerentes. 5. Crie uma consulta para exibir a diferena entre os maiores e menores salrios. Coloque um label na coluna DIFERENCA. 6. Exiba o nmero do gerente e o salrio do funcionrio com menor pagamento sob a superviso desse gerente. Exclua todos cujo gerente no seja conhecido. Exclua todos os grupos em que o salrio mnimo seja menor do que 1000. Classifique a sada em ordem decrescente de salrio. 7. Crie uma consulta para exibir o nome do departamento, o nome do local, o nmero de funcionrios e o salrio mdio de todos os funcionrios nesse departamento. Coloque um label nas colunas respectivamente. Arredonde o salrio mdio para duas casas decimais. 8. Crie uma consulta que exiba o nmero total de funcionrios e, desse total, o nmero total de funcionrios contratados em 1980, 1981, 1982 e 1983. Coloque os cabealhos apropriados nas colunas. 9. Crie uma consulta matriz para exibir o cargo, o salrio desse cargo baseado no nmero do departamento e o salrio total desse cargo para todos os departamentos, colocando em cada coluna um cabealho apropriado.

46

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

FUNES DE LINHA
CARACTERE
a) Exibindo o nome dos alunos com todas as letras maisculas: SELECT UCASE(nmaluno) FROM aluno; b) Exibindo o nome dos alunos com todas as letras minsculas: SELECT LCASE(nmaluno) FROM aluno; SELECT LOWER(nmaluno) FROM aluno; OU ou

c) Exibindo o nome dos alunos invertidos:

SELECT REVERSE(nmaluno), nmaluno FROM aluno;


d) Exibindo o nome dos alunos invertidos:

SELECT REVERSE(nmaluno), nmaluno FROM aluno;


e) Exibindo um literal com todas as letras maisculas:

SELECT UCASE("simone"); ou SELECT UPPER("simone");


f) Exibir a posio da primeira letra a no nome do aluno a partir da primeira posio:

SELECT nmaluno, LOCATE("a", nmaluno, 1) FROM aluno; Obs.: A funo LOCATE possui 3 parmetros. Onde: Primeiro parmetro a string que deseja ser localizada (sempre entre aspas simples); Segundo parmetro a coluna que deseja; Terceiro parmetro a partir de qual posio da string deseja buscar a string a ser localizada.

47

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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

SELECT nmaluno, REPLACE(nmaluno,"a","i") FROM aluno; Obs.: A funo REPLACE possui 3 parmetros. Onde: Primeiro parmetro coluna que ser localizada a string; Segundo parmetro a string que deseja ser localizada; Terceiro parmetro a string que ser alterada.
h) Exibir o literal excluindo os espaos a esquerda:

SELECT LTRIM(

Genoveva);

i) Exibir o literal excluindo os espaos a direita:

SELECT RTRIM(Genoveva );
j) Exibir o literal excluindo os espaos a direita e a esquerda:

SELECT TRIM(

Genoveva );

k) Exibir o literal excluindo os caracteres da posio final:

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


l) Exibir o literal excluindo os caracteres da posio incial:

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


m) Exibir o nome dos alunos a partir da 6 posio:

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;


48

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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 posio de uma lista de argumentos:

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


x) Exibir a posio de uma lista de argumentos:

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


z) Exibir a posio da primeira letra a no nome do aluno:

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

NUMRICAS

a) Exibindo o resto da diviso: 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 no estiver entre -1 e 1.

49

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

d) Exibindo o coseno de 47: SELECT COS(4); e) Exibindo a tangente do arco 3: SELECT ATAN(3); f) Exibindo o cdigo ASCII do caractere A: SELECT ASCII("A") g) Exibindo o numero 3 convertido da base 10 para a base numrica 2: SELECT CONV(3, 10, 2); Obs.: Podemos converter nas bases numricas: 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); 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 funo SUBDATE, com argumentos iguais a funo ADDDATE.
7

ou

Este nmero encontra-se em radianos.

50

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

b) Exibindo a data atual: SELECT CURDATE(); c) Exibindo a hora atual: SELECT CURTIME();

ou ou

SELECT CURRENT_DATE(); SELECT CURRENT_TIME(); ou ou SELECT SYDATE();

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

e) Exibindo o nome do dia da data informada (no caso a data atual): SELECT DAYNAME(CURRENT_DATE()); f) Exibindo a data com a subtrao 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 2 3 4 5 6 7 DOMINGO; SEGUNDA-FEIRA; TERA-FEIRA; QUARTA-FEIRA; QUINTA-FEIRA; SEXTA-FEIRA; SBADO.

h) Exibindo o ms por extenso da data atual: SELECT DATE_FORMAT(CURRENT_DATE(), '%M'); Onde: %M Nome complete do ms; %m Ms numrico; %b Nome do ms abreviado; %W Nome completo do dia da semana; %D Dia do ms; %Y Ano com quatro dgitos; %y Ano com dois dgitos; %j Dia do ano numrico; %a Nome abreviado do dia da semana; %d Dia do ms dgito; %r Hora no formato 12 horas; Hora no formato 24 horas; %T %H Hora 00-23; %h Hora 01-12; %i Minutos 00-59; %S Segundos. h.1) Exibindo a data no formato dia, ms e ano: SELECT DATE_FORMAT(CURRENT_DATE(), '%D %M %Y');
51

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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 horrio: SELECT HOUR(CURRENT_TIME()); k) Exibindo os minutos de um horrio: SELECT MINUTE(CURRENT_TIME()); l) Exibindo os segundos de um horrio: SELECT SECOND(CURRENT_TIME()); m) Exibindo o dia da data corrente: SELECT DAY(CURRENT_DATE()); n) Exibindo o ms 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 1 2 3 4 6 7 SEGUNDA-FEIRA; TERA-FEIRA; QUARTA-FEIRA; QUINTA-FEIRA; SEXTA-FEIRA; SBADO; DOMINGO.

q) Exibindo a data atual com adio de trs meses: SELECT PERIOD_ADD('200307',3); r) Exibindo a data atual com subtrao de meses: SELECT PERIOD_DIFF('200307', '200303');

52

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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

OUTRAS FUNES
a) Exibindo o nome do usurio da conexo 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 curso UNION SELECT nmaluno FROM aluno; e) Exibindo o tempo que o servidor utiliza para executar uma instruo: SELECT BENCHMARK(10000, 'SELECT nmcurso FROM curso;'); Onde: BENCHMARK(qtde_vezes, instruo);

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 contrrio permanece o mesmo valor: SELECT nmcurso, vlcurso, CASE cdcurso WHEN 1 THEN vlcurso * 1.10 WHEN 2 THEN vlcurso * 1.15 ELSE vlcurso END FROM curso; Obs. Utilizamos o CASE quando h mais de uma comparao a ser feita. b) Exibindo o nome do curso e quando o curso for 1 exibir com aumento de 20%, caso contrrio 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.
53

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

2. Exiba o nmero do funcionrio, o nome, o salrio e o aumento salarial de 15% expresso como nmero inteiro. Coloque um label na coluna Novo Salrio. 3. Altere o exerccio 2, adicionando uma coluna que subtrair o salrio antigo do novo salrio. Coloque um label na coluna Diferena. Execute novamente a consulta. 4. Exiba o nome do funcionrio, a data de admisso que a primeira aps seis meses de servio. Formate as datas que aparecem um formato semelhante a Domingo, 9 Maio 2010. 5. Para cada funcionrio exiba o nome do mesmo e calcule o nmero de meses entre hoje e a sua data de admisso. Coloque um label na coluna MESES TRABALHADOS. Ordene os resultados por nmero de meses empregado. Arredonde para cima o nmero de meses para o nmero inteiro mais prximo. 6. Crie uma consulta que produza as seguintes informaes para cada funcionrio: <nome do funcionrio recebe <salrio> mensalmente mas deseja <salrio multiplicado por 3>. Coloque um label na coluna. 7. Crie uma consulta que exiba o nome e o salrio de todos os funcionrios. Formate o salrio para ter 15 caracteres e apresentar o cifro esquerda. Coloque um label na coluna Salrio. 8. Crie uma consulta que exibir o nome do funcionrio com a primeira letra maiscula e todas as outras minsculas, bem como o tamanho de seus nomes, para todos os funcionrios cujo nome comea com J, A ou M. Fornea a cada coluna um label apropriado. 9. Exiba o nome, a data de admisso e o dia da semana que o funcionrio comeou a trabalhar. Coloque um label na coluna SEMANA. Ordene os resultados por dia da semana, iniciando por segunda-feira. 10.Crie uma consulta que exibir o nome do funcionrio e o valor da comisso. Se o funcionrio no receber comisso, coloque No h comisso. Coloque um label na coluna COMM. 11.Crie uma consulta que exiba o grau para todos os funcionrios com base no valor da coluna JOB conforme a tabela mostrada abaixo: JOB GRADE PRESIDENT A MANAGER B ANALYST C SALESMAN D CLERK E

54

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

JUNO DE TABELAS (JOINS)


Juno o termo utilizado para descrever o ato em que duas ou mais tabelas so unidas para recuperar informaes. O MySQL utiliza o padro ANSI928. a) Exibindo o nome do curso e o nome do aluno: SELECT nmcurso, nmaluno FROM 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 a ON 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, nmaluno FROM curso as c CROSS JOIN aluno as a; c) Exibindo o nome do curso e o nome do aluno com INNER JOIN9: SELECT c.nmcurso, a.nmaluno FROM curso as c INNER JOIN aluno as a ON 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.nmaluno FROM 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:

Em 1992, o American National Standards Institute devolveu um conjunto de padres para SQL, como por exemplo, as junes. INNER JOIN tipo de juno mais comum, onde os registros sem equivalncia so descartados.

10

LEFT JOIN na juno, exibe todas as linhas da tabela esquerda que no possuem correspondncia na tabela direita.

RIGHT JOIN na juno, exibe todas as linhas da tabela direita que no possuem correspondncia na tabela esquerda.

11

55

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

SELECT c.nmcurso, a.nmaluno FROM 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 JUNO DE TABELA


1. Crie uma consulta para exibir o nome do funcionrio, sua mtricula e o nome do departamento que ele est alocado. 2. Crie uma lista nica de todos os cargos existentes no departamento 30. Inclua a localizao do departamento 30 na sada. 3. Crie uma consulta para exibir o nome do funcionrio, o nome do departamento e a localizao de todos os funcionrios que recebem uma comisso. 4. Exiba o nome do funcionrio e o nome do departamento para todos os funcionrios que possuem um A em seus nomes. 5. Crie uma consulta para exibir o nome, o cargo, o nmero e o nome do departamento para todos os funcionrios que trabalham em DALLAS. 6. Exiba o nome e o nmero do funcionrio junto com o nome e o nmero do gerente. Coloque um label nas colunas. 7. Modifique a consulta anterior para exibir todos os funcionrios incluindo KING, que no possuem um, gerente. Execute este arquivo. 8. Crie uma consulta que exibir o nome dos funcionrios, o nmero do departamento e todos os funcionrios que trabalham no mesmo departamento de um determinado funcionrio. Fornea a cada coluna um label apropriado. 9. Mostre a estrutura da tabela SALGRADE. Crie uma consulta que exiba o nome, o cargo, o nome do departamento, o salrio e a classificao de todos os funcionrios. 10.Crie uma consulta para exibir o nome e a data de admisso de qualquer funcionrio admitido aps o funcionrio BLAKE. 11. Exiba todos os nomes de funcionrios e as datas de admisso junto como nome e a data de admisso do gerente para todos os funcionrios admitidos antes de seus gerentes. Coloque um label nas colunas respectivamente.

56

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

SUBCONSULTAS
Consiste em uma consulta utilizada dentro de um comando SQL. H vrias situaes em que as sub-consultas so necessrias, como por exemplo: Mostrar os funcionrios que recebam mais que a mdia dos salrios; Atualizar em 10% o salrio do funcionrio que mais recebe etc. Uma sub-consulta pode ser utilizada dentro de um comando SELECT, UPDATE, CREATE TABLE, DELETE ou INSERT. Uma sub-consulta no possui uma clusula ORDER BY. H os seguintes tipos de sub-consultas: UMA LINHA retorna apenas um valor; MLTIPLAS LINHAS pode retornar um ou mais valores, mas em uma coluna. MLTIPLAS COLUNAS retornam um ou mais valores em mais de uma coluna. CORRELATAS utilizam campos da consulta externa. Podemos ainda utilizar os operadores: OPERADOR =, <>, >, <, >=, <= IN NOT IN ANY ALL EXISTS OBSERVAO Usado em subconsulta de uma linha. Teste se um valor pertence a um conjunto de valores. Teste se um valor no pertence a um conjunto de valores. Verifica se um determinado argumento casa com qualquer membro de um conjunto. Verifica se um determinado argumento casa com todos os membros de um conjunto. Usado em subconsulta correlatas, v se um dado valor existe em um conjunto, levando em conta valores nulos. Este fato no considerado pelo operador in. Nega o anterior.

NOT EXISTS

UMA LINHA
SELECT ename, sal FROM emp WHERE sal = (SELECT MAX(sal) FROM emp); CREATE TABLE emp_dept AS SELECT e.ename Nome, d.dname Depto, e.sal Salario FROM emp e, dept d WHERE d.deptno = e.deptno AND sal > (SELECT AVG(sal) FROM emp); INSERT INTO emp_dept (nome, salario) SELECT ename, sal FROM emp WHERE sal < (SELECT AVG(sal) FROM emp);
57

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

MLTIPLAS LINHAS
SELECT COM IN a) Localize os funcionrios que recebem o mesmo salrio que o salrio mnimo dos departamentos: SELECT ename, sal, deptno FROM emp WHERE sal IN (SELECT MIN(sal) FROM emp GROUP BY deptno); SELECT COM ANY b) Exibir os funcionrios cujo salrio menor que o de qualquer escriturrio e que no so escriturrios: SELECT empno, ename, job FROM emp WHERE sal < ANY (SELECT sal FROM emp WHERE job = 'CLERK') AND job <> 'CLERK'; Obs.: < ANY: significa menos do que o mximo. > ANY: significa mais do que o mnimo. SELECT COM ALL c) Exibir os funcionrios cujo salrio maior que os salrios mdios de todos os departamentos. SELECT empno, ename, job FROM emp WHERE sal > ALL (SELECT AVG(sal) FROM emp GROUP BY deptno); Obs.: > ALL: significa mais do que o mximo. < ALL: significa menos do que o mnimo.

SUBCONSULTA NA CLUSULA FROM


d) Exibir o nome, salrio dos funcionrios, nmero de departamento e salrio mdio de todos os funcionrios que recebem mais que o salrio mdio nos seus departamentos: SELECT e.ename, e.sal, e.deptno, ROUND(b.salavg,2) FROM emp e, (SELECT deptno, avg(sal) salavg FROM emp GROUP BY deptno) b WHERE e.deptno = b.deptno AND e.sal > b.salavg;
58

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

TAREFA 07 SUBCONSULTAS
1. Crie uma consulta para exibir o nome e a data de admisso de todos os funcionrios no mesmo departamento que BLAKE. Exclua BLAKE. 2. Cria uma consulta para exibir o nmero e o nome de todos os funcionrios que recebam mais que o salrio mdio. Classifique os resultados, por salrio, em ordem decrescente. 3. Crie uma consulta que exiba o nmero e o nome de todos os funcionrios que trabalhem em um departamento com qualquer funcionrio cujo nome contenha um T. 4. Exiba o nome do funcionrio, o nmero do departamento e o cargo de todos os funcionrios cuja localizao do departamento seja DALLAS. 5. Exiba o nome e o salrio dos funcionrios que se reportem a KING. 6. Exiba o nmero do departamento, o nome e o cargo de todos os funcionrios do departamento de VENDAS (Sales). 7. Altere a consulta anterior para exibir o nmero, o nome e o salrio de todos os funcionrios que recebam mais que o salrio mdio e trabalhem em um departamento com qualquer funcionrio cujo nome contenha um T. Execute novamente a consulta.

59

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

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; ALTER TABLE curso DROP INDEX curso_idx; ou

VIEWS
Tambm conhecido como viso, uma tabela virtual na qual os dados no esto fisicamente armazenados. Ela apenas uma viso de um grupo de colunas de uma ou mais tabelas do banco de dados. VANTAGENS: Evitar que usurios no autorizados tenham acesso a todos os dados de uma tabela. Criamos um a viso com apenas alguns campos; Associar a uma viso, consultas que utilizam critrios de seleo completos, e, assim, facilitar ao usurio. 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_view Verificando dados de uma view SELECT * FROM nome_view Exemplo: CREATE OR REPLACE VIEW aluno_curso AS SELECT a.cdmatricula, a.nmaluno, c.nmcurso FROM aluno a, curso c WHERE a.cdcurso = c.cdcurso;

60

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

TAREFA 08 VIEWS
1. Crie uma viso EMP_VU com base no nmero, nome dos funcionrios e nmero dos departamentos da tabela EMP. Altere o cabealho do funcionrio para EMPREGADO. 2. Exiba o contedo da viso EMP_VU 3. Criar um ndice para a coluna ENAME da tabela EMP chamado emp1_idx. 4. Usando a viso EMP_VU, informe uma coluna para exibir os nomes de todos os funcionrios e nmeros dos departamentos. 5. Crie uma viso chamada DEPT20 que contenha o nmero e o nome do funcionrio e o nmero do departamento dos funcionrios do departamento 20. Coloque um label nas colunas da viso. No permita que um funcionrio seja atribudo a outro departamento atravs da viso. 6. Exiba a estrutura da viso DEPT20. 7. Consultar os ndices da tabela EMP no dicionrio de dados. 8.Crie uma viso chamada SALARIO_VU com base no nome, salrio do funcionrio, nome do departamento e classe de salrio de todos os funcionrios.

61

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

CONCESSO E REVOGAO PRIVILEGIOS DE USURIO


PRIVILGIOS DE USUARIO
CREATE CREATE TEMPORARY TABLES DELETE EXECUTE INDEX INSERT LOCK TABLES SELECT SHOW DATABASES UPDATE USAGE Criar tabelas; Criar tabelas temporrias; Excluir registros; Executar procedimentos; Criar ndices; Inserir registros; Bloquear tabelas; Selecionar os registros; Exibir os bancos de dados; Atualizar registros; Privilgio de conexo.

CRIANDO UMA CONTA DE USUARO


GRANT CREATE, CREATE TEMPORARY TABLES, DELETE, EXECUTE INDEX, INSERT, SELECT, SHOW DATABASES, UPDATE ON *.* TO DISCENTE IDENTIFIED BY AULA;

CONCESSO DE PRIVILGIOS
Exemplos: A) Privilgios globais a um usurio: GRANT ALL ON *.* TO Genoveva; B) Privilgios globais a um banco de dados especfico para um usurio: GRANT ALLL ON TLBD.* TO Genoveva;
62

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

C) Privilgios a uma nica tabela para um usurio: GRANT SELECT ON curso TO Genoveva; D) Privilgios a uma coluna especfica para um usurio: GRANT SELECT (empno) ON emp TO Genoveva;

REVOGANDO DE PRIVILGIOS
Exemplos: A) Revogar todos os privilgios de um usurio: REVOKE ALL ON EMP.* TO Genoveva;

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

63

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

64

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

65

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

66

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

EER Diagram: diagramas disponveis para o banco de dados; Physical Schemata: objetos disponveis para criarmos bem como tambm lista os que j criamos de acordo com seu tipo se for uma tabela ir aparecer na parte de Tables, as Views na parte de Views e assim por diante. SQL Scripts: criar um SQL Script Adicional para o seu banco ou carregar um arquivo externo criado anteriormente; Model Notes: uma rea onde voc tem uma espcie de bloco de notas sobre o banco de dados onde pode ir anotando vrias coisas que possam ser teis;

Visualizao total do Dashboard: miniatura de todo o projeto, onde poder navegar entre todas as pginas que compem o seu diagrama;

67

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

Catlogo do Banco de dados: Apresenta de forma hierrquica os objetos que compem o banco de dados em produo; User Types: criar um novo tipo de dado totalmente personalizado de acordo com cada necessidade. Informaes Gerais sobre o Objeto selecionado: traz informaes sobre o objeto que estiver selecionado naquele momento. Exemplo A escola profissionalizante Socola deseja informatizar o cadastro dos seus alunos (matricula, nome, endereo, telefone e data de nascimento) e os cursos que ela oferece (cdigo, nome, carga horria e valor). ADICIONANDO UM DIAGRAMA

ADICIONANDO TABELAS

68

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

PROPRIEDADES DA TABELA E DA COLUNA

FERRAMENTAS

69

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

1. Ferramenta de Seleo; 2. Movimentao do Modelo; 3. Borracha (CFTRL + Z desfaz algumas operaes); 4. Agrupa Objetos; 5. Bloco de texto para comentrios; 6. Insere uma imagem no diagrama; 7. Criar nova tabela; 8. Criar views; 9. Criar stored procedures; 10.Relacionamento 1 : 1 no identificado; 11.Relacionamento 1 : N no 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

70

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

71

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

72

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

ANEXO A MODELO LGICO DE DADOS


Os modelos lgicos abaixo foram criados com a ferramenta Oracle Data Modeler. MODELO DE RECURSOS HUMANOS

MODELO DE ESCOLA

73

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

ANEXO B DICIONRIO DE DADOS


A seguir temos as colunas das tabelas e os seus descritivos.
DEPT
NOME DA COLUNA TIPO E TAMANHO DESCRIO

DEPTNO DNAME LOC

NUMERIC(2) PK VARCHAR(14) VARCHAR(13) EMP

Nmero do departamento (PK) Nome do departamento Local do departamento

NOME DA COLUNA

TIPO E TAMANHO

DESCRIO

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

NUMERIC(4) PK VARCHAR(10) VARCHAR(9) NUMERIC(4) DATE NUMERIC(7,2) NUMERIC(7,2) NUMERIC(2) FK

Matrcula do empregado Nome do empregado Cargo do empregado Matrcula do gerente Data de admisso Salrio Comisso Nmero do departamento

SALGRADE
NOME DA COLUNA TIPO DESCRIO

GRADE LOSAL HISAL

NUMERIC NUMERIC NUMERIC

Nmero da faixa salarial Incio da faixa salarial Fim da faixa salarial

74

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

ANEXO C SCRIPTS UTILIZADOS


CREATE TABLE DEPT (DEPTNO NUMERIC(2) NOT NULL PRIMARY KEY, DNAME VARCHAR(14), LOC VARCHAR(13) ); INSERT INSERT INSERT INSERT INTO INTO INTO INTO DEPT DEPT DEPT DEPT VALUES VALUES VALUES VALUES (10, (20, (30, (40, 'ACCOUNTING', 'RESEARCH', 'SALES', 'OPERATIONS', 'NEW YORK'); 'DALLAS'); 'CHICAGO'); '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 emp ADD 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
75

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

(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 INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO SALGRADE SALGRADE SALGRADE SALGRADE SALGRADE VALUES VALUES VALUES VALUES VALUES (1, (2, (3, (4, (5, 700, 1200); 1201, 1400); 1401, 2000); 2001, 3000); 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 aluno ADD 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 disciplina ADD 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 mensalidade ADD PRIMARY KEY (cdmatricula, dtemissao);

76

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

ALTER TABLE mensalidade ADD FOREIGN KEY (cdmatricula) REFERENCES aluno (cdmatricula); INSERT INTO curso VALUES (1, 'CONTABILIDADE'); INSERT INTO curso VALUES (2, 'INFORMATICA'); INSERT INTO curso VALUES (3, 'FARMACIA'); INSERT INTO curso VALUES (4, 'COMERCIO EXTERIOR'); INSERT INTO aluno VALUES (100, 'Reginaldo Faria','Rua Globo, n 15',1, CURRENT_DATE); INSERT INTO aluno VALUES (200,'Tarcisio Meira',' Av. Projac, n 789',1, CURRENT_DATE); INSERT INTO aluno VALUES (300, 'Gloria Menezes', 'Rua Rio de Janeiro,n 753', 2, CURRENT_DATE); INSERT INTO aluno VALUES (400, 'Fernanda Montenegro', 'Av. Belissma, n 66', 2, CURRENT_DATE); INSERT INTO aluno VALUES (500, 'Lima Duarte', 'Av. Grecia, n 78',2, CURRENT_DATE); INSERT INTO aluno VALUES (600,'Nicete Bruno','Travessa da Penso, s/n',3, CURRENT_DATE); INSERT INTO aluno VALUES (700, 'Eva Vilma','Alameda Atriz de Novela, n 100', 3, CURRENT_DATE); INSERT INTO aluno VALUES (800, 'Reginaldo Faria',NULL, 3, CURRENT_DATE); INSERT INTO aluno VALUES (900, 'Denis Carvalho',NULL, 1,CURRENT_DATE); INSERT INTO aluno VALUES (999,'Simone',NULL, NULL,CURRENT_DATE()); INSERT INTO disciplina VALUES (1, 'Algoritmos',1); INSERT INTO disciplina VALUES (2,'Sistemas Operacionais',1); INSERT INTO disciplina VALUES(3,'Banco de Dados',1); INSERT INTO disciplina VALUES(4, 'Banco de Dados',2); INSERT INTO disciplina VALUES(5,'Ingles',2); INSERT INTO disciplina VALUES(6,'Estrutura de Dados,2);

77

T L B D

I I

E T E C

D E

P R A I A

G R A N D E

REFERENCIA BIBLIOGRAFICA
MASLAKOWSKI, M. Aprenda em 21 Dias MySQL Editora CAMPUS Ano 2001; LIMA, A. S. MySQL Server Verses Open Source 4.x Editora RICA Ano 2003; WELLING., L e THOMSON, L. Tutorial MySQL Editora Cincia Moderna Ano 2004; http://www.mysql.com acessado em abril de 2010.

78