Vous êtes sur la page 1sur 26

Free Acess: O MySQL na prtica

Por Alvaro Caetano Pimentel Sobrinho

Resumo Este material , na verdade, um guia de MySQL 5.0 que permite a pessoas que pretendam conhecer um pouco sobre a criao e a manuteno de bases de dados. A proposta divulgar e disseminar conhecimentos mais especficos que sero apresentados em trs partes. A primeira a instalao do banco MySQL, a segunda vir em um guia para modelagem de dados e a ltima ser o uso de uma ferramenta CASE. Nesta primeira parte, no foram exploradas todas as capacidades do banco, mas esto disponveis os requisitos mnimos para que seja possvel instalar, experimentar e conhecer alguns termos que so comuns aos usurios de bases de dados. Neste guia esto disponveis os comandos mais usuais e as instrues de como devem ser usados assim como suas finalidades.

Abstract This material is, truly, a guide to MySQL 5.0 that allows people wishing to know a little about the creation and maintenance of databases. The proposal is to disseminate more specific knowledge that will be presented in three parts. The first is the installation of MySQL bank, the second will come like a guide to modeling data and the last is the use of a CASE tool. In this first part, were not explored all the capabilities of the bank, but are available the minimum requirements in order to install, try and learn some terms that are common to users of databases. In this guide are available commands and the more usual instructions to be used as well their purpose.

alvaro_pimentel@uol.com.br

Sumrio 1. Download e a Instalao 2. Tipos de comandos 3. Construindo o cenrio 4. Acessando o MySQL 5. Espaos de tabelas (TABLESPACES) 6. Manuseando Tabelas 6.1 Tipos de Dados 6.2 Tabelas 7. Manuseando Chaves 8. Manuseando Dados 9. O LIAS 10. JOIN (Juno) 10.1 EQUIJOIN (Juno por equivalncia ou igualdade) 10.2 NON-EQUIJOIN (Juno sem equivalncia direta) 10.3 OUTERJOIN (Juno por excluso) 10.4 SELFJOIN (Autojuno) 11. VIEWS (Vises) 12. CONSTRAINTS (Restries ou Limitaes) 4 7 9 11 11 12 12 14 16 17 21 21 21 22 22 23 24 25

alvaro_pimentel@uol.com.br

1. Download e a Instalao
A proposta deste trabalho apresentar um manual que possibilite aos estudantes conhecer e interagir, atravs dos comandos mais usuais, com o MySQL. Por se tratar de um software livre, a instalao simples e no exige esforo ou conhecimento adicional. Segue o conceito NNF ( nextnext-finish) ou AAF em portugus, que significa clicar em Avanar, Avanar e Finalizar. Antes de efetuar uma instalao necessrio saber qual a tecnologia do computador ( x86 ou x64). Isso pode ser verificado, sem muitas explicaes, seguindo os seguintes passos: No menu Iniciar a escolha deve ser Configuraes/Painel de Controle

Na janela do Painel de Controle deve-se acessar a opo Ferramentas Administrativas

A seguir, a escolha o Gerenciamento do Computador /Gerenciador de dispositivos

alvaro_pimentel@uol.com.br

O prximo passo escolher a opo Processadores

Finalmente, aps um duplo clique no processador do computador, abrir a guia Detalhes A partir desse ponto j se pode saber o tipo de processador instalado e poder efetuar a escolha do tipo de MySQL que ser instalado. possvel baixar uma verso gratuita do software, na pgina oficial de distribuio do MySQL, Para efetuar o download ser necessrio que o usurio faa um cadastro simples para o acesso. H outras pginas que disponibilizam o produto, mas a verso oficial d a certeza de que no haver vrus agregado ao arquivo baixado. No endereo http://dev.mysql.com/downloads/mysql/5.0.html#win32 pode-se optar pelo sistema operacional desejado e na opo Download baixar uma verso do banco. Ao lado do sistema operacional nota-se a opo (plataform notes) que traz o tutorial para a instalao do software caso seja desejado entender melhor a instalao do produto.

alvaro_pimentel@uol.com.br

importante ressaltar que o MySQL foi adquirido pela empresa Sun que por sua vez foi comprada pela Oracle. Dessa maneira, os usurios que iniciem seus estudos com MySQL podem se sentir seguros de poderem, se assim desejarem, avanar as pesquisas em outro banco que seja, digamos, mais mercadolgico tal como o prprio Oracle. O MySQL um Sistema de Gerenciamento de Banco de Dados (SGBD) que, como outros bancos relacionais, fazem uso do padro Structured Query Language (SQL). Isso significa que, para se utilizar bancos como Oracle, SQLServer, Interbase, DB2, entre outros, um usurio que tenha conhecimento de SQL no encontrar muitas dificuldades em trabalhar com um ou outro banco. Os comandos em SQL so divididos de tal maneira que atenda s necessidades diferenciadas para administradores de dados e desenvolvedores de aplicativos. A tabela abaixo demonstra a separao dos comandos em suas categorias. Tabela 1 Select Insert Update Delete Merge Commit Rollback Savepoint Create Alter Drop Rename Truncate Grant Revoke DCL Data Control Language Linguagem de controle de dados que permite dar ou remover o direito de acesso para as bases de dados. Recupera dados de uma tabela DML Data Manipulation Language: Linguagem de manipulao de dados que permite a insero, alterao e excluso de colunas de tabelas. Transaction Control Controle de transao: Gerencia os comandos de DML. DDL Data Definition Language Linguagem de definio de dados que permite atribuir, alterar, excluir e renomear as estruturas dos dados das tabelas.

alvaro_pimentel@uol.com.br

2. Tipos de comandos
Para iniciar, aps a instalao do MySQL, importante conhecer o comando o status (\s) por ser ele o responsvel para indicar o ambiente operacional em que se est trabalhando. Atravs deste comando possvel analisar o usurio, a base corrente, o tipo de conexo, o delimitador de comandos, entre outras funes. Esse comando usado para situar o usurio e permitir a anlise do ambiente de conexo. Comando \s status exibe as conexes de base e de usurios
Connection id: Current database: Current user: SSL: Using delimiter: Server version: Protocol version: Connection: Server characterset: Db characterset: Client characterset: Conn. characterset: TCP port: Uptime: 49 root@localhost Not in use ; 5.0.41-community-nt MySQL Community Edition (GPL) 10 localhost via TCP/IP latin1 latin1 latin1 latin1 3306 1 hour 53 min 10 sec

O comando help, a ajuda, em tempo de execuo, que norteia e exclui dvidas sobre a sintaxe a ser adotada em determinadas situaes. As sintaxes do MySQL podem ser divididas em duas partes: uma que trata dos comandos operacionais de organizao do ambiente; Comando \h help ? \? ajuda.
? (\?) clear (\c) connect (\r) delimiter (\d) ego (\G) exit (\q) go (\g) help (\h) notee (\t) print (\p) prompt (\R) quit (\q) rehash (\#) source (\.) status (\s) tee (\T) use (\u) charset (\C) warnings (\W) nowarning(\w) Synonym for `help'. Clear command. Reconnect to the server. Optional arguments are db and host. Set statement delimiter. NOTE: Takes the rest of the line as newdelimiter. Send command to mysql server, display result vertically. Exit mysql. Same as quit. Send command to mysql server. Display this help. Don't write into outfile. Print current command. Change your mysql prompt. Quit mysql. Rebuild completion hash. Execute an SQL script file. Takes a file name as an argument. Get status information from the server. Set outfile [to_outfile]. Append everything into given outfile. Use another database. Takes database name as argument. Switch to another charset. Might be needed for processing binlog with multi-byte charsets. Show warnings after every statement. Don't show warnings after every statement.
alvaro_pimentel@uol.com.br

e outra que trata dos comandos direcionados criao e manuteno de bases de dados. Comando help contents; Account Management Administration Data Definition Data Manipulation Data Types Functions Functions and Modifiers for Use with GROUP BY Geographic Features Language Structure Storage Engines Stored Routines Table Maintenance Transactions Triggers OBS 1: Pode-se usar o boto direito do mouse e escolher a opo MARCAR para selecionar um dos itens exibidos pelo help contents. Aps a seleo usar a tecla ENTER, digitar ao lado do prompt > help e com o boto direito do mouse escolher a opo COLAR. Ex: help Account Management; You asked for help about help category: "Account Management" For more information, type 'help <item>', where <item> is one of the following topics: CREATE USER DROP USER GRANT RENAME USER REVOKE SET PASSWORD

alvaro_pimentel@uol.com.br

3. Construindo o cenrio
Os comandos a seguir so responsveis pela criao do ambiente operacional das bases de dados, e bom lembrar que no esto esgotadas aqui todas as possibilidades pertinentes ao SQL, mas a base inicial para construir o cenrio que possibilita avanar no aprendizado do banco. Um database , por definio, um local reservado para armazenar dados. So conjuntos de registros arrumados em uma estrutura padronizada que permite a reorganizao desses dados para recuperar e produzir elemento de informao. Algumas literaturas traduzem database como banco de dados quando, na verdade, o termo base de dados parece ser mais apropriado. Entende-se como banco uma entidade maior composta de muitas bases que, por sua vez, composta de muitas tabelas, vises, ndices, constraints, etc. Como uma base est contida em um banco ento comum encontrar a utilizao da nomenclatura banco de dados para se referir a uma base de dados. Comando show databases exibe as bases existentes no MySQL Ex. show databases; Comando create database cria uma base de dados Sintaxe: create database [nome da base de dados]; Ex. create database aula1; Comando drop database exclui uma base de dados Sintaxe: drop database [nome da base de dados]; Ex. drop database aula1; Comando \d delimiter altera o delimitador de fim de comando. Ex. \d ] (ver alterao pelo \s) Comando \R prompt altera o formato da solicitao de comando Ex. \R entrar=> PROMPT set to 'entrar=>' entrar=> O uso de qualquer banco, neste caso a entidade maior tal como Oracle, Interbase, Db2 etc., est condicionado a um conjunto de informaes que permitem construir o espao de desenvolvimento do trabalho. Isso significa dizer que preciso ter uma base de dados, estar conectado a ela e possuir um usurio que a manipule. A criao de uma base simples. Inicialmente no ser observado o cuidado com a arrumao do cenrio. A construo ser apenas para permitir a navegao e conhecimento dos comandos de definio e manipulao de dados. O primeiro passo, ento, usar o comando create database apresentado acima. O segundo passo se conectar a uma base desde que no haja uma conexo firmada anteriormente. Se j houver uma conexo anterior, pode-se trocar usando-se o comando use Comando \r connect efetua a conexo com uma base de dados Ex. \r basesql ou connect basesql Connection id: 57 Current database: basesql
alvaro_pimentel@uol.com.br

Comando use permite a conexo a uma base exibida no show databases; Sintaxe: use [nome da base de dados]; Ex. use aula1; Comando \q exit quit efetua a desconexo com uma base. O terceiro passo criar um usurio para acessar a base. Normalmente, durante o processo de criao, criado um usurio (o administrador) que tem todos os privilgios de manuteno do banco. Entretanto muito importante acessar o banco com um usurio prprio. Os comando a seguir mostram como fazer isso. Comando create user cria um usurio para acesso base Sintaxe: create user [nome do usurio] identified by [senha]; Ex. create user aula1; Query OK, 0 row affected (0.02 sec) Comando drop user exclui um usurio Sintaxe: drop user [nome do usurio]; Ex. drop user aula1; Query OK, 0 row affected (0.04 sec) Comando select user (); exibe o usurio definido no root. Comando select current_user(); Exibe o usurio que est usando a base que est conectada. Comando grant usado para dar, ou alterar, a senha de acesso de uma base ou um usurio. Um usurio precisa ter autorizao para utilizar uma base de dados, portanto preciso que este tenha um grant de acesso que ir variar de acordo com a necessidade daquele usurio. Sintaxe: grant all on [nome da base] to [nome do host] identified by [senha]; Ex.1 grant all on aula1 to 'root'@'localhost' identified by 'admin'; Query OK, 0 row affected (0.02 sec) Ex.2 grant all privileges on *.* to Junior@localhost identified by 'senha1' with grant option; OBS 2: No exemplo1, a senha de acesso ao MySQL passar a ser a senha admin O GRANT o mesmo que uma autorizao dada a um usurio com um determinado nvel de privilgios para que este possa manusear as tabelas dentro dos nveis de restrio permitidos. As limitaes so impostas pelo administrador do banco e, entre as mais comuns, so: read permite que o usurio tenha somente de leitura s tabelas de uma base de dados. update oferece as possibilidades de tratamento que vo da criao excluso de tabelas. all possibilita que um usurio tenha os mesmos privilgios que o administrador do MySql, podendo, inclusive, criar outros usurios. Este comando equivale a dar privilgios de SELECT, INSERT, UPDATE e DELETE a um usurio, grupo ou aplicao.

alvaro_pimentel@uol.com.br

10

4. Acessando o MySQL
Existem algumas maneiras de se efetuar a conexo com o MySQL. Uma das possibilidades feita atravs da seqncia INICIAR PROGRAMAS MYSQL Prompt do MySQL. Essa forma efetua o acesso no diretrio raiz do MySQL e, no caso de utilizao do comando exit ou quit, automaticamente, efetuada a desconexo do SGBD sem que haja a possibilidade de se alternar o acesso a um outro usurio. Por essa razo, o acesso pelo diretrio principal cria limitaes quanto ao acesso no ambiente com outro usurio. Diante desse fato, possvel conectar-se ao MySQL segundo uma das opes abaixo, sempre pelo prompt do DOS: Caminho: Iniciar => Programas => Acessrios => Prompt de comando Ou Iniciar => Executar => cmd Digitar: cd C:\Arquivos de programas\MySQL\MySQL Server 5.0\bin>mysql u root p Enter password: OBS 3: O root o usurio padro de acesso ao MySQL, e a senha a que foi escolhida na instalao. Para modificar o usurio padro basta substituir o [u root] por [u nome do usurio] onde u = usurio e p = password. O usurio escolhido j deve ter sido previamente criado e, uigualmente, j possuir autorizao para manusear tabelas. Aps efetuar o logon no MySql, o usurio deve escolher um database dos que tabelas. forem

apresentados pelo comando show databases e, ento, dar incio ao processo de manuseamento de

5. Espaos de tabelas (TABLESPACES)


Os tablespaces so locais reservados para armazenamentos de tabelas de uma base de dados. , de acordo com a Wikipdia, um termo em lngua inglesa que designa uma sub-diviso lgica de um banco de dados utilizado para agrupar estruturas lgicas relacionadas. Os tablespaces apenas especificam a localizao de armazenamento de tabelas nas bases de dados e, com isso, permitem organizar as bases. O MySQL trata o tablespace com uma rea de armazenamento lgico, podendo esta rea consistir de um ou mais arquivos. Por exemplo, pode-se colocar as tabelas CONTAS_A_PAGAR e CONTAS_A_RECEBER no tablespace CONTAS, e as tabelas FORNECEDOR e CLIENTE no tablespace CLIFORN. Ex. create tablespace CONTAS add datafile 'CTPG_CTRC' engine = InnoDB; create tablespace CLIFORN add datafile 'FORN_CLIE' engine = InnoDB;

alvaro_pimentel@uol.com.br

11

6. Manuseando Tabelas
As tabelas so os repositrios dos dados que serviro para armazenar os dados organizados, e analisados, com base em um Modelo Entidade-Relacionamento (MER) ou em um Diagrama de Classes (DC). Essas tabelas, que devero estar normalizadas, demonstram a representao dos atributos, as definies e as regras dos dados efetuadas quando do levantamento dos requisitos do sistema. A leitura do MER e do DC deve ser a expresso de facilidade de recuperao, segurana e ausncia de duplicidade (tautologia) de dados nas tabelas propostas. Para manusear tabelas de uma base de dados ( database) necessrio que se observe a utilizao dos comandos especficos para este fim. Por se tratar da definio dos dados, esses comandos so chamados de DDL, e determinam a existncia de uma tabela. So eles: CREATE, ALTER e DROP.

6.1 Tipos de dados


Os dados so elementos que possuem caractersticas que so seus atributos de identificao. Por essa razo existem modelos de definio dos atributos que determinam o tipo de dado que ser inserido na tabela. Os padres mais usuais so: Char Indica que o elemento de dado contm caracteres alfanumricos que possua tamanho fixo, tal como sexo, estado civil, sigla da federao, cdigos de produtos, matrculas etc. Varchar Indica que o elemento de dado contm caracteres alfanumricos e tamanho varivel tal como endereo, nome, filiao, descrio, observao etc. A diferena entre o char e o varchar que o primeiro ocupa todo o espao reservado para o dado independente de ter ou no preenchimento do campo. J o varchar ocupa somente os espaos significativos de preenchimento do campo liberando os espaos vazios. Numeric Indica que o elemento de dado contm caracteres numricos e tamanho maior que 10 posies tal como identidade, CPF, CGC, habilitao, carteira profissional, PIS etc. Integer ou Int Indica que o elemento de dado contm caracteres numricos e possui um tamanho com 10 posies incluindo o sinal. O MySQL possui uma caracterstica prpria de tamanho de variveis numrica. Possui o tinyint (1 byte) para nmeros com at trs posies, o smallint (2 bytes) para nmeros com 5 posies, mediumint (3 bytes) com 7 posies, int (4 bytes) e o bigint (8 bytes) para nmeros com 19 posies. Decimal Indica que o elemento de dado contm caracteres numricos com formato decimal Date Indica que o elemento de dados uma data no formato AAAAmmDD. Este formato pode ser alterado para o modelo DDmmAAAA, mas o formato invertido mais apropriado para ordenao de data ou outras operaes que envolvam algum clculo Datetime indicado para guardar a data e hora de manipulao do dado

alvaro_pimentel@uol.com.br

12

Diante de todas essas premissas j possvel construir as tabelas para manuseio dos dados. Assim sendo os comandos a seguir podem ser experimentados, observando que esse o momento de cometer erros. Caso algo d errado basta excluir tudo e recomear, sem nenhum pudor! Tudo comea com uma abstrao (desejos e sonhos de analistas e gestores) transformada em um modelo de dados onde os dados se relacionam. Esse o chamado Modelo Entidade Relacionamento ou MER. Para este trabalho ser levado em conta um pequeno diagrama de classes para poder implementar os exerccios que viro a seguir. Inicialmente, deve-se considerar a criao de uma tabela PESSOA, uma tabela DEPTO e uma tabela juno DEPTOPES. Em um segundo instante, imaginase que sero propostas algumas alteraes nas tabelas aps a sua criao. neste momento que o aspirante a dba (data base administrator administrador de bases de dados) deve arriscar e criar suas prprias colunas e experincias.

Primeiramente necessrio configurar os atributos que vo constituir a tabela criando os elementos de dados com os tipos, tamanhos, formato e descries que devero compor um dicionrio de dados (assunto para outro manual). Por ora ser considerada uma forma bem simples de defnio. cpf = cpf numeric (11) nome da pessoa = nm_pessoa varchar(40) nascimento = dt_nasc date cdigo pessoa = cd_pessoa char(5) sexo = sexo char(1) cdigo do depto = cd_depto char(5) nome do depto = nm_depto varchar(20) nmero da seo = nr_secao numeric(5) cdigo depto pessoa = cd_depto_pes char (5)

alvaro_pimentel@uol.com.br

13

6.2 Tabelas
Uma tabela uma representao de linhas e colunas que ir armazenar os dados. As colunas de uma tabela representam os elementos de dados, e as linhas o local em que os dados so armazenados. Por analogia pode-se pensar em uma planilha na qual as colunas so representadas por nomes e as clulas o local onde fica o contedo. A criao de uma tabela muito simples, basta seguir a sintaxe apresentada para obter sucesso na construo de uma. Para isso deve-se testar os comandos abaixo: Comando Create table o comando utilizado para a criao das tabelas que iro compor as bases de dados. Sintaxe: create table [nome da tabela] ([nome da coluna] [tipo do dado] ([tamanho]) not null) in [nome do tablespace]; Ex. create table pessoa (cpf numeric(11), nm_pessoa varchar(45), dt_nasc date) in cliforn; Comando Describe usado para descrever a tabela criada com todas as colunas existentes. Sintaxe: describe [nome da tabela] Ex. describe pessoa; SUGESTO: Aps cada comando abaixo, deve-se efetuar o describe para acompanhar o desenvolvimento das alteraes na tabela. Comando Alter table o comando utilizado para alterar as tabelas que j fazem parte das bases de dados. composta de um conjunto de clusulas exclusivas para uma determinada finalidade. Aqui sero exploradas, apenas, algumas das mais conhecidas. Clusula add adiciona uma coluna, um ndice ou uma constraint em uma tabela. Sintaxe: alter table [nome da tabela] ADD [nome da coluna] [tipo do dado] ([tamanho] not null); Ex. alter table pessoa add nr_filhos numeric(1); alter table pessoa add cd_pessoa numeric(1); Clusula check in verifica (check) se o dado est dentro dos limites estabelecidos (in). Esta opo inibe que valores diferentes dos que foram especificados sejam introduzidos na base. Sintaxe: alter table [nome da tabela] add [nome da coluna] [tipo do dado] ([tamanho]) not null CHECK ([coluna] IN (condies)); Ex. alter table pessoa add sexo char(1) check ( sexo in ( 'F' , 'M' )); Clusula drop exclui uma coluna de uma tabela. Sintaxe: alter table [nome da tabela] DROP ([nome da coluna]) Ex. alter table pessoa drop nr_filhos; Clusula modify altera as definies de uma coluna em uma tabela. Sintaxe: alter table [nome da tabela] modify [nome da coluna] [tipo do dado] ([tamanho]) not null; Ex1. alter table pessoa modify cd_pessoa char(5); - Altera o cdigo da pessoa do valor anterior para alfanumrico com 5 posies. Ex2. alter table pessoa modify nm_pessoa not null; - Define o nome da pessoa como obrigatrio
alvaro_pimentel@uol.com.br

14

ATENO
Todos os comandos que permitem a alterao das caractersticas fsicas de uma tabela so perigosos e devem ser bastante estudados antes de sua utilizao. Entretanto, por representar o maior perigo para a manuteno de dados, o comando DROP s deve ser utilizado aps uma anlise meticulosa de sua necessidade, quer seja na excluso de um usurio, de uma coluna ou excluso de uma tabela. Portanto, deve-se estar absolutamente seguro de sua utilizao a fim de se evitar o comprometimento de toda a estrutura de um sistema. extremamente aconselhvel se efetuar um backup antes da utilizao do comando DROP. A ausncia de um arquivo de recuperao pode trazer conseqncias desastrosas para o sistema uma vez que, se executado com xito, o que foi excludo torna-se IRRECUPERVEL. Assim sendo, exige-se muita cautela antes da utilizao desse comando. Comando Drop table o comando utilizado para excluir uma tabela de uma base de dados. Sintaxe: drop table [nome da tabela];

Para exemplificar melhor o que um drop, basta que sejam efetuados os passos a seguir: create table temporaria (nome char(20)); describe temporria; drop table temporria; describe temporria; Como se pode observar a tabela temporria deixou de existir. Isso demonstra o que este comando capaz de fazer. possvel excluir uma coluna, conforme visto em exemplo anterior, um ndice, uma viso, uma chave e assim por diante. Dessa maneira fica evidente o cuidado que se deve ter ao utilizar o drop

alvaro_pimentel@uol.com.br

15

7. Manuseando Chaves
As chaves so formas de possibilitar o acesso aos dados de forma mais rpida. Existem algumas formas de definio que no sero exploradas em toda a sua amplitude. Neste caso sero apresentadas apenas algumas maneiras para criao de uma chave. A chave pode ser composta de um elemento ou de vrios elementos. Pode ser nica ( unique key chave nica) ou aceitar duplicaes (duplicate key), mas em nenhum dos casos pode ser nula. TODA CHAVE TEM QUE POSSUIR CONTEDO (not null no nulo). A existncia de uma chave primria (primary key - pk) pode implicar na replicao desta chave em outra tabela. Considerando-se, por exemplo, o relacionamento (simples e sem herana) da tabela pessoa com a tabela depto, pode-se afirmar que cd_pessoa (chave primria na pessoa) ser replicado na depto. Desta maneira o cd_pessoa ser uma chave estrangeira (foreign key - fk) na tabela depto. Clusula primary key insere uma chave primria em uma tabela. Sintaxe na criao de uma tabela usando uma PRIMARY KEY com AUTO INCREMENT create table [nome da tabela] ([nome da coluna] [tipo do dado] ([tamanho]) not null AUTO_INCREMENT, PRIMARY KEY ([nome da coluna])); Ex. create table depto (cd_depto char(5) not null, nm_depto varchar(20), nr_secao numeric(5) not null, primary key (cd_depto)); Sintaxe na alterao de uma tabela adicionando uma PRIMARY KEY alter table [nome da tabela] add PRIMARY KEY ([nome da coluna]); Ex. alter table pessoa add primary key(cd_pessoa); - Altera cd_pessoa em chave primria. Clusula foreign key insere uma chave estrangeira em uma tabela. Sintaxe na criao de uma tabela usando uma FOREIGN KEY: create table [nome da tabela] ([nome da coluna] [tipo do dado] ([tamanho]) not null), FOREIGN KEY ([nome da coluna]) REFERENCES[tabela de origem] ([coluna de origem])); Ex. create table deptopes (cd_depto char(5), cd_pessoa char(5), cd_depto_pes char(11), cpf numeric(11), foreign key (cd_pessoa) references pessoa(cd_pessoa)); Sintaxe na alterao de uma tabela usando uma FOREIGN KEY: alter table [nome da tabela] add FOREIGN KEY ([nome da coluna]) REFERENCES [tabela de origem] ([coluna de origem]) Ex. alter table deptopes add foreign key(cd_depto) references depto(cd_depto); Clusula unique key determina que um elemento seja nico na tabela. Sintaxe na criao de uma tabela usando uma UNIQUE KEY: create table [nome da tabela] ([nome da coluna] [tipo do dado] ([tamanho]) not null AUTO_INCREMENT, PRIMARY KEY ([nome da coluna]) UNIQUE (nome da coluna)); Ex. create table humana (cpf numeric(11) not null, nm_pessoa varchar(45) not null, dt_nasc date not null, codpes numeric(5), primary key (cpf), unique (nm_pessoa, dt_nasc)); Sintaxe na alterao de uma tabela usando uma UNIQUE KEY: alter table [nome da tabela] add UNIQUE (nome da coluna); Ex. alter table depto add unique (cd_depto, nr_secao);
alvaro_pimentel@uol.com.br

16

Nos exemplos anteriores, alguns parmetros precisam ser descritos para que haja um esclarecimento sobre suas funcionalidades. O primeiro auto increment cuja funo incrementar automaticamente o valor de um campo numrico considerando-se, por exemplo, a coluna referente ao nmero de inscrio de um candidato. evidente que o nmero de inscrio, mesmo apresentando alguma parametrizao, ser sempre crescente. O MySQL oferece, ento, esta opo que permite o campo ser aumentado atravs do controle efetuado pelo prprio SGBD, ou seja, no h interferncia externa, quer seja atravs de aplicativo, quer seja por parte do usurio. O segundo parmetro o references cuja funo apontar a tabela-origem que a responsvel pela chave estrangeira associada tabela destino. OBS 4: A incluso de uma chave pode ser efetuada quando houver a necessidade de um mtodo de busca mais eficaz. Entretanto a excluso deve observar a existncia de uma fk, que, se for o caso, deve ser excluda antes da chave pk. OBS 5: importante que o nome da coluna na tabela destino seja igual ao nome da coluna da tabela origem, para facilidade de leitura do modelo de dados. OBS 6: Deve-se tomar cuidado quando da criao de uma chave estrangeira para uma tabela que j possua dados porque nesta podem existir dados que no existam na tabela de origem. Uma boa medida utilizar o conceito de outer join para identificar os dados da tabela-destino que no possuem correspondncia na tabela-origem.

8. Manuseando Dados
Para manusear dados em uma tabela preciso que a mesma esteja populada, isto com dados includos em suas linhas e colunas. No caso de uma tabela estar vazia, os comandos de seleo vo exibir relatrios sem contedo algum. Porm uma tabela vazia deve ser preenchida com dados j que a finalidade principal de sua existncia : armazenar dados. Para isso se deve utilizar os comandos de DML abaixo. Comando insert insere dados em uma tabela. Sintaxe: insert into [nome da tabela] (coluna1, coluna2...) values (valor1, valor2,...); Ex. insert into pessoa(cpf, nm_pessoa, dt_nasc, cd_pessoa, sexo) values (48577593811, Joo, 1955-07-21, A0001, M); Ex 1. insert into depto(cd_depto, nm_depto, nr_secao) values (10205, VENDAS,0001); Ex 2.insert into deptopes values (10205, A0001, DP001); Comando update altera dados em uma tabela. Sintaxe: update [nome da tabela] set [coluna1]= [valor] where [condio]; Ex 1. update pessoa set cpf=99944433322 where sexo=M and nm_pessoa =Joo; Comando delete exclui dados em uma tabela Sintaxe: delete from [nome da tabela] where [coluna]= [condio]; Ex. delete from deptopes essa uma forma de excluir TODOS os dados de uma tabela. Para uma excluso parcial deve-se utilizar (delete from deptopes where cd_pessoa = A0001).
alvaro_pimentel@uol.com.br

17

A seleo/recuperao de dados de uma tabela feita atravs do comando select. Esse comando o indicador de uma base bem ou mal construda, porque atravs dele que se pode observar o tempo e a maneira pela qual o dado est sendo recuperado. Imagina-se que uma possibilidade de recuperao complexa dos dados pode implicar em um tempo de resposta elevado. Dessa maneira, em alguns casos, a demora na recuperao um dos fatores de insucesso de muitos sistemas. Para que isso seja evitado, ao projetar uma base de dados, deve-se imaginar que esta deve possuir formas de recuperao simples, de tal maneira que no permita tempos de espera elevados ou buscas muito elaboradas. Assim, abaixo, sero analisadas algumas maneiras de recuperao de dados, sem que estejam exploradas todas as possibilidades que podem ser efetuadas. Comando select seleciona dados de uma tabela. Sintaxe: select [coluna] from [tabela] Ex. select * from pessoa; OBS 7. O * representa todas as colunas existentes em uma tabela. Assim, o exemplo acima ir imprimir todas as linhas de todas as colunas da tabela pessoa. Clusula where seleciona os dados obedecendo a condio estabelecida pelo where (onde). Sintaxe: select [coluna] from [tabela] WHERE [coluna]=[condio]; Ex. select * from pessoa where sexo = M; Clusula and, or, not obriga que as condies, que estiverem antes e aps o and, o or e o not sejam satisfeitas para retornar o valor desejado. As condies podem ser representadas por outros comandos de seleo, e combinadas dependendo da necessidade de recuperao. Sintaxe: select [coluna] from [tabela] where [condio] AND, OR, NOT [condio]; Ex.1 select cd_pessoa from pessoa where sexo = ('M') and nm_pessoa = ('Joo'); Ex.2 select cd_depto from depto where cd_depto = (1020005) or nr_secao = (00001); Ex.3 select cd_pessoa from pessoa where sexo not ('M') or nm_pessoa = ('Joo'); OBS 8: Chama-se de subquery o select efetuado dentro de um outro select para obter dados com condies que possibilitem uma comparao mais refinada. Ex.4 select * from depto where cd_depto = (select cd_depto from deptopes where cd_pessoa = ('A0001') and nm_pessoa = ( = 'Joo')); possvel, tambm, utilizar a subquery para a criao de tabelas e views e, ainda, a atualizao de dados em uma tabela. Como por exemplo: Ex 1. insert into deptopes (cd_depto, cd_pessoa, cd_depto_pes,cpf) values ((select cd_depto from depto where nr_secao = 1), (select cd_pessoa from pessoa where nm_pessoa='Joo'), '1', 0) ; Antes de continuar interessante verificar o contedo da tabela deptopes Ex 2. update deptopes set cpf=(select cpf from pessoa where nm_pessoa = 'Joo');
alvaro_pimentel@uol.com.br

18

No exemplo anterior, pode-se observar a alterao do contedo da coluna cpf aps a aplicao de um update oriundo de uma query . Essa forma ilustra a quantidade de combinaes que podem ser possveis para recuperar ou armazenar um ou um conjunto de dados. A ttulo de experincia interessante criar uma coluna salario numeric(10), na tabela pessoa, para poder aumentar as possibilidades de pesquisa na tabela Clusula like verifica se o contedo do dado contm o string que est antes do % (Jos%), aps o % (%Ana) ou entre o % (%usa%). Este comando utilizado com a clusula where. Sintaxe: select [coluna] from [tabela] where [coluna] LIKE string; Ex. select * from pessoa where nm_pessoa like 'J%'; Clusula between verifica se o contedo do dado est entre um limite mnimo e mximo. Sintaxe: select [coluna] from [tabela] where [coluna] BETWEEN limite inferior and limite superior Ex. select * from pessoa where salario between 2600 and 3000; Clusula in verifica se o contedo do dado igual a uma das opes oferecidas. Sintaxe: select [coluna] from [tabela] where [coluna] IN (opo1, opo 2); Ex. select * from pessoa where sexo in (M, F); Clusula order by ordena o resultado da seleo de uma coluna. Sintaxe: select [coluna] from [tabela] ORDER BY [coluna]; Ex. select * from pessoa order by nm_pessoa; Clusula group by agrupa o resultado da seleo eliminando as repeties contidas em uma coluna. Sintaxe: select [coluna] from [tabela] GROUP BY [coluna]; Ex. select cpf, cd_pessoa from pessoa group by cpf, cd_pessoa; Clusula case atribui valores diferenciados aos dados dependendo do valor armazenado na base. Possui as funes CASE (caso a coluna) WHEN (quando for igual a) THEN (ento atribua o valor) ELSE (caso contrrio atribua outro valor) END (encerra funo) Sintaxe: select [coluna], CASE [coluna] WHEN [valor desejado] THEN [valor atribudo] ELSE [outro valor] END from [tabela]; Ex. select nm_pessoa, case nm_pessoa when 'Joo' then 'SEM PROJETO' when 'Alberto' then 'EM CLIENTE' else 'NA MATRIZ' end from pessoa; A verdade que o comando select no tem um nmero limitado de construes. Existem queries1 to complexas para a recuperao de dados que algumas utilizam muitas pginas de script envolvendo
1

Plural de query e significa modelo ou script para recuperao de dados


alvaro_pimentel@uol.com.br

19

diversos tipos de malabarismos de busca. Na maioria das vezes, quando isso ocorre, um caso que demonstra a necessidade de interveno de um dba para analisar o modelo de dados utilizado. Mas, considerando-se que os exemplos anteriores no fazem parte de um universo complexo, as clusulas apresentadas traro os dados de forma bem rpida. Um problema enfrentado para a construo de uma base medir o volume de dados que iro ser includos em uma tabela. A criao de um tablespace depende muito do conhecimento desse volume que, normalmente, superestimado. De fato, sempre complicado estimar a quantidade de dados que iro povoar a base. Uma vez feita a criao, necessrio o acompanhamento do crescimento do volume, no s para resolver problemas de alocao, mas para corrigir e ajustar ( tunning) as tabelas na base. Alm disso, procedimento de backup2 est envolvido, diretamente, com a quantidade de dados em uma base. Ento, uma das boas possibilidades oferecidas pelo comando select a utilizao da clusula count que permite saber o nmero exato de linhas existentes em uma tabela. O interessante deste comando que suas variaes do diversas possibilidades de acompanhar as taxas de crescimento do contedo das tabelas tanto de forma integral quanto de forma particionada. Sintaxe: select COUNT(*) from[tabela]; Ex. select count (*) from pessoa; Deve-se observar que a clusula count ser sempre acompanhada do parmetro (*). Tomandose como exemplo a necessidade de se contar o nmero de registros por ano em uma tabela, o comando ser escrito da seguinte forma: Sintaxe: select [coluna], COUNT(*) from[tabela] GROUP BY [coluna]; Ex. select year(dt_nasc), count (*) from pessoa group by year(dt_nasc); Observa-se no exemplo acima a presena da palavra YEAR que assume a mesma funo do CHAR(dt_nasc,5,4) busca o ano com 4 posies a partir da 5. Assim, por analogia, pode-se imaginar que para buscar o ms de uma data basta utilizar a palavra MONTH. Desta maneira o exemplo acima ser representado da seguinte forma: Ex. select year(dt_nasc), month(dt_nasc), count (*) from pessoa group by year(dt_nasc), month(dt_nasc); O resultado ser:
1 (ano) 2 (ms) 3 (total) ----------- ----------- ----------2007 1 16 2007 2 4 2007 3 12

9. O LIAS
O lias pode ser entendido como um apelido dado a uma tabela de tal maneira que possibilite deixar a leitura de uma query mais limpa. Esta necessidade se tornar mais evidente quando da
2

Processo de armazenamento de dados em memria auxiliar externa que pode ser DVD, CD, disquete, fita, cartucho etc.
alvaro_pimentel@uol.com.br

20

utilizao do conceito join que ser analisado a seguir. Por enquanto a execuo do Ex. 1 permite observar o que o comando capaz de fazer Sintaxe: select x.[coluna], y.[coluna] from [tabela1] x, [tabela1] y where x.[coluna] = y.[coluna] ; Ex.1 select a.cd_depto, b.cd_pessoa, b.cpf from depto a, pessoa b where a.nr_secao = 1 and b.nm_pessoa = 'Joo'; No exemplo acima, o nome da tabela1(depto) ser substitudo pelo lias x (a), e a tabela2 (pessoa) pelo lias y (b). Parece confuso, mas em linhas gerais significa dizer que a coluna a.cd_depto pertence a tabela depto e a coluna b.cd_pessoa pertence a tabela pssoa. Ex.2 select a.nm_depto, a.nr_secao from depto a, deptopes b where a.cd_depto = b.cd_depto; O resultado do Ex. 2 exibir o nome do departamento ( a.nm_depto) e o nmero da seo (a.nr_secao) da tabela depto quando o cdigo do departamento (a.cd_depto) da tabela depto for igual ao cdigo de departamento (b.cd_depto) da tabela deptopes

10. O JOIN (Juno)


Uma base de dados, normalmente, possui seus dados fragmentados devidos s Formas Normais adotadas em sua construo. Da, a recuperao desses atributos pode trazer algumas dificuldades uma vez que os dados podem estar armazenados e distribudos segundo uma lgica complexa. Entretanto, sempre h uma possibilidade de se recuperar os dados a partir da juno de uma ou mais tabelas. Para isso existem 4 tipos de juno que podem ser utilizados para recuperao de dados:

10.1 EQUIJOIN (Juno por equivalncia ou igualdade)


o comando que junta os dados de duas tabelas a partir de uma determinada condio de igualdade. Para exemplificar melhor as tabelas devem ser povoadas com os comandos abaixo: insert into humana(cpf, nm_pessoa, dt_nasc, codpes) values (48577593811, 'Joo', '1955-0721', 0001); insert into humana values (49866482700, 'Jos', '1965-08-23', 0002); insert into humana values (50988604922, 'Jlio', '1970-02-12', 0003); insert into pessoa values (57601325487, 'Jorge', '1970-02-12', 'B0002', 'M', 1500); insert into pessoa values (33958164723, 'Maria', '1963-11-01', 'C0003', 'F', 2000); insert into pessoa values (66421576412, 'Ana', '1987-04-28', 'D0003', 'F', 2000); Como se pode notar os nomes das colunas, em negrito na primeira linha de comando, no esto presentes nas linhas seguintes. Isso significa que, na incluso de dados, os nomes das colunas podem ser omitidos desde que se saiba exatamente as posies e tipos dos dados sero inseridos. A funcionalidade do equijoin pode ser observada na query a seguir que ir juntar (join) todos os contedos das colunas das tabelas a e b (uma tabela ao lado da outra) se o cpf ( a.cpf) da tabela pessoa for igual ao cpf (b.cpf) da tabela humana.
alvaro_pimentel@uol.com.br

21

Ex.1 select * from pessoa a, humana b where a.cpf = b.cpf; Para aumentar as variaes de seleo de dados os comandos a seguir serviro para treinar outras possibilidades de incluso de dados de uma tabela baseado nos dados de outra. Primeiramente deve-se excluir todos os dados da tabela de juno atravs do comando abaixo: delete from deptopes A seguir a incluso de dados na tabela limpa feita atravs de um select que, no entanto, ir repetir, propositadamente, todos os cdigos de departamento para todos os funcionrios. insert into deptopes (cd_depto, cd_pessoa, cd_depto_pes, cpf) select A.cd_depto,B.cd_pessoa, '1', B.cpf from depto A, pessoa B ; Essa repetio pode ser observada pelo comando select * from deptopes Fica evidente que um funcionrio no deve pertencer a mais de um departamento simultaneamente. Portanto a excluso pode ser feita da seguinte forma. delete from deptopes where cd_pessoa like 'A%' and cd_depto <> '10205' delete from deptopes where cd_pessoa like 'B%' and cd_depto <> '10206' delete from deptopes where cd_pessoa like 'C%' and cd_depto <> '10207' Essa no , evidentemente, a melhor forma de fazer isso, assim como o comando de incluso, mas para visualizar o andamento do processo importante caminhar devagar.

10.2 NON-EQUIJOIN (Juno sem equivalncia direta)


Seleciona os dados de uma tabela que estejam dentro de um limite na segunda tabela. Ex.2 select a.nm_pessoa, a.salario, b.codpes from pessoa a, humana b where a.salario between 1000 and 2000 and b.codpes= 1;

10.3 OUTERJOIN (Juno por excluso)


Seleciona os dados que existe em uma tabela e que no estejam na outra. A tabela pesquisada seguida do sinal (+). Ou seja, a leitura feita na tabela que tem o sinal procurando o correspondente na outra tabela. Ex.3 select * from pessoa a, humana b where a.nm_pessoa(+) = b.nm_pessoa; Ex.4 select a.nm_pessoa, a.salario, b.codpes from pessoa a, humana b where a.nm_pessoa(+) = b.nm_pessoa; O resultado demonstrar quais pessoas esto na tabela pessoa que no esto na humana Ex.5 select a.nm_pessoa, a.salario, b.codpes from pessoa a, humana b where a.nm_pessoa = b.nm_pessoa(+); O resultado demonstrar quais pessoas esto na tabela humana que no esto na pessoa

alvaro_pimentel@uol.com.br

22

10.4 SELFJOIN (Autojuno)


Trata a seleo de dados que podem possuir um auto-relacionamento em uma mesma tabela. Suponha uma tabela exemplo abaixo:
ENGENHEIRO CODENG 100 101 102 103 104 105 106 NOME BRUNO EDINARDO ALEXANDRA ALLAN PATRCIA LINCOLN GILSON 100 102 GERENTE 100 100 102

possvel saber quem est subordinado a quem em um determinado projeto. Para isso necessrio analisar que, da tabela principal, pode-se obter uma tabela imaginria ENGENHEIROGERENTE como no exemplo:
ENGENHEIRO-GERENTE CODENG NOME 100 101 102 103 104 105 106 BRUNO EDINARDO ALEXANDRA ALLAN PATRCIA LINCOLN GILSON

Assim, pode-se escrever a query abaixo para obter os relacionamentos entre os engenheiros que trabalham em um projeto, e saber quem so os chefes de uma equipe. Ex.5 select a.nome || trabalha com || gerente.nome from engenheiro a, engenheiro-gerente where a.gerente = gerente.codeng; O resultado desse select ser: EDINARDO trabalha com BRUNO ALEXANDRA trabalha com BRUNO LICOLN trabalha com BRUNO ALLAN trabalha com ALEXANDRA GILSON trabalha com ALEXANDRA

alvaro_pimentel@uol.com.br

23

11. AS VIEWS (Vises)


Uma view uma maneira alternativa de observao de dados de uma ou mais entidades (tabelas), que compem uma base de dados. Pode ser considerada como uma tabela virtual, ou uma consulta armazenada, que gerencia as colunas-resultado, automaticamente. Uma vez criada, qualquer alterao efetuada nas tabelas-origens sero replicadas nas tabelas-views, imediatamente. Geralmente recomenda-se que uma view seja implementada encapsulando uma instruo select no caso de envolvimento de mais de uma tabela. Aps a criao da view, os dados sero guardados em uma tabela virtual e tambm em cache (memria), j que todas as consultas ao banco, encapsuladas ou no, ao serem efetuadas mantm o resultado da pesquisa em memria. Por essa razo, mais rpido efetuar uma consulta armazenada em uma view do que retrabalhar a ao de consulta nas tabelas-origens. importante que o nome da view sugira que, a tabela criada, se trate de uma viso. Portanto, um dos modelos adotados para isso a colocao do prefixo VW antes do nome da tabela-viso. Considerando que seja desejada uma lista que contivesse o nome da pessoa, departamento e nome, a seo, o cpf e a data de nascimento da pessoa. A query de recuperao, apesar de no ser complexa, dever conter as correspondncias de 3 tabelas. Imaginando-se que o desenvolvimento de um sistema envolva, em muitos casos, dezenas de tabelas a construo de queries, invariavelmente, torna-se complexa. Com o recurso da view a soluo torna-se melhor em muitos casos. Sintaxe: create view [nome da view] as select [coluna] from [tabela] where [condio]; Ex. create view vw_deppes as select a.nm_pessoa, b.cd_depto, b.nm_depto, b.nr_secao, a.cpf, a.dt_nasc from pessoa a, depto b, deptopes c where c.cd_pessoa = a.cd_pessoa and c.cd_depto = b.cd_depto O resultado do contedo poder ser observado pelo comando select * from vw_deppes; O mais importante que a incluso de novos valores nas tabelas pessoa, depto e deptopes, automaticamente, sero enxergados pela viso o que facilita a vida de muitos analistas.

alvaro_pimentel@uol.com.br

24

12. CONSTRAINTS (Restries ou Limitaes)


As constraints so criadas atravs de comandos SQL na gerao ou na alterao das tabelas. So, na verdade, limitaes e/ou restries impostas aos dados de forma que possa garantir a integridade referencial das tabelas. Uma vez criada, o prprio SGBD se incumbe de gerenci-las no permitindo a tentativa de violao das regras definidas. Se algum comando sql tentar infringir a regra estabelecida, o banco, automaticamente, cancela a operao e efetua um rollback (voltar atrs, desfazer) da ao que tentou violar a integridade. As constraints so associadas a uma tabela especfica e armazenadas no dicionrio de dados. Todas e quaisquer operaes que faam uso dessa tabela especfica ser monitorada pelas constraints. Quando se cria uma coluna not nul, unique key, primary key ou foreing key est-se, implicitamente, criando-se uma constraint que, na ausncia de um ttulo, assume o nome de SYS_Cn, onde n um nmero seqencial que garante a unicidade da constraint. Sintaxe na criao de uma tabela usando uma PRIMARY KEY: create table [nome da tabela] ([nome da coluna] [tipo do dado] ([tamanho]) not null), constraint [nome da constraint] PRIMARY KEY ([nome da coluna])); Ex. create table pessoa (cpf numeric(11) nm_pessoa varchar(45) dt_nasc date, constraint cpf_pes_pk primay key (cpf)); Sintaxe na criao de uma tabela usando uma FOREIGN KEY: create table [nome da tabela] ([nome da coluna] [tipo do dado] ([tamanho]) not null), constraint [nome da constraint] FOREIGN KEY ([nome da coluna]) REFERENCES [tabela de origem] ([coluna de origem])); Ex. create table deptopes (cd_depto char(5), cd_pessoa char(5), cd_depto_pes char(11), cpf numeric(11), constraint cpf_depto_fk foreign key (cd_pessoa) references pessoa(cd_pessoa)); Sintaxe na alterao de uma tabela usando uma PRIMARY KEY: alter table [nome da tabela] add constraint [nome da constraint] PRIMARY KEY ([nome da coluna]); Ex. alter table pessoa add constraint cpf_pes_pk primay key (cpf); Sintaxe na alterao de uma tabela usando uma FOREIGN KEY: alter table [nome da tabela] ] add constraint [nome da constraint] FOREIGN KEY ([nome da coluna]) REFERENCES [tabela de origem] ([coluna de origem]); Ex. alter table deptopes add constraint cpf_depto_fk foreign key (cpf) references pessoa(cpf);

alvaro_pimentel@uol.com.br

25

Evidentemente, muitas perguntas devem estar martelando a cabea dos novos futuros dbas, e as respostas viro com o tempo. Algumas sintaxes esto obscuras ou pouco claras, mas deve-se considerar que muito difcil abordar todas as questes e possibilidades oferecidas por qualquer software ou produto. Como foi citado anteriormente, a idia desta pequena apostila permitir que os iniciantes em MySQL tenham uma base para efetuar uma instalao simples e algum conhecimento para manusear pequenas bases de dados. No uma proposta, portanto, fazer com que este venha a ser um manual que contemple todas as possibilidades permitidas por este SGBD. Assim como outros bancos, mais notadamente, ORACLE e DB2, o MySQL utiliza os padres de comandos muito similares, o que permite associar os conhecimentos de um banco a outro. Em todos esses bancos os comandos mais usuais, com poucas variaes, podem ser empregados tanto em um quanto em outro, observando-se a as diferenas sintticas. Atualmente, quase todos os SGBDs oferecem verses gratuitas que, por essa razo, vm com algumas limitaes no que diz respeito capacidade de armazenamento de dados e no nmero de ligaes entre estaes e servidor. aconselhvel fazer o uso de uma ferramenta CASE ( Computer Aided System Engeneering) para a modelagem dos dados que sero traduzidos em tabelas. Entre as que esto disponveis de forma gratuita est o DBDesigner que possui um padro bastante amigvel e totalmente compatvel com o Intebrase, Oracle e MySQL. Algumas dvidas sempre surgem, principalmente aos iniciantes, mas no h razo para desespero ou desnimo. Vale lembrar que a persistncia que leva ao sucesso. Alm do mais a Internet uma fonte inesgotvel para solues de determinados empecilhos que, diariamente, aparecem na vida dos administradores de dados. O que foi apresentado acima suficiente para criao e manuteno de pequenas bases que no necessitem de conhecimentos mais elaborados. Para os interessados em continuar seus desenvolvimentos no MySQL cabe navegar e aprofundar seus conhecimentos a partir dos manuais disponveis no endereo http://dev.mysql.com/doc/refman/5.0/en/index.html

Alvaro Caetano Pimentel Sobrinho Doutorando em Cincia da Informao UFRJ/IBICT, Mestre em Tecnologia da Informao UNESA, Formado em Telecomunicaes UNESA, Administrador de bases de dados Oracle, Db2 e Idms e foi Docente em Sistemas de Informao

alvaro_pimentel@uol.com.br

26

Vous aimerez peut-être aussi