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
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
T L B D
I I
E T E C
D E
P R A I A
G R A N D E
T L B D
I I
E T E C
D E
P R A I A
G R A N D E
10
T L B D
I I
E T E C
D E
P R A I A
G R A N D E
11
T L B D
I I
E T E C
D E
P R A I A
G R A N D E
12
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 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
14
T L B D
I I
E T E C
D E
P R A I A
G R A N D E
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:
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
18
T L B D
I I
E T E C
D E
P R A I A
G R A N D E
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.
19
T L B D
I I
E T E C
D E
P R A I A
G R A N D E
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.
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 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);
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.
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
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
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);
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);
Observao: A coluna para ter a restrio de chave primria necessrio ter a restrio de NOT NULL (no nulo).
31
T L B D
I I
E T E C
D E
P R A I A
G R A N D E
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;
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
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
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).
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
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
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
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
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);
SELECT RTRIM(Genoveva );
j) Exibir o literal excluindo os espaos a direita e a esquerda:
SELECT TRIM(
Genoveva );
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:
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
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
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
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;
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
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;
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.
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 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
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
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
NOME DA COLUNA
TIPO E TAMANHO
DESCRIO
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
74
T L B D
I I
E T E C
D E
P R A I A
G R A N D E
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
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