Jose M. Fernández Sobre o autor: [escreva um ou dois par�grafos aqui sobre a biografia] Conte�do: Introdu��o Principais Caracter�sticas Instala��o Primeiros Passos, Administra��o (Seguran�a) Conclus�es |
MySQL
|
Tables |
---|
db |
host |
user |
Field | Type | Null | Key | Default | Extra |
Host | char(60) | PRI | |||
Db | char(32) | PRI | |||
User | char(16) | PRI | |||
Select_priv | char(1) | N | |||
Insert_priv | char(1) | N | |||
Update_priv | char(1) | N | |||
Delete_priv | char(1) | N | |||
Create_priv | char(1) | N | |||
Drop_priv | char(1) | N |
Field | Type | Null | Key | Default | Extra |
Host | char(60) | PRI | |||
Db | char(32) | PRI | |||
Select_priv | char(1) | N | |||
Insert_priv | char(1) | N | |||
Update_priv | char(1) | N | |||
Delete_priv | char(1) | N | |||
Create_priv | char(1) | N | |||
Drop_priv | char(1) | N |
Field | Type | Null | Key | Default | Extra |
Host | char(60) | PRI | |||
User | char(16) | PRI | |||
Password | char(16) | ||||
Select_priv | char(1) | N | |||
Insert_priv | char(1) | N | |||
Update_priv | char(1) | N | |||
Delete_priv | char(1) | N | |||
Create_priv | char(1) | N | |||
Drop_priv | char(1) | N | |||
Reload_priv | char(1) | N | |||
Shutdown_priv | char(1) | N | |||
Process_priv | char(1) | N | |||
File_priv | char(1) | N |
Podemos decidir se autorizamos ou n�o selecionar (SELECT) , inserir (INSERT), atualizar (UPDATE), e apagar (DELETE) linhas de uma tabela.
Podemos permitir ou n�o, criar o inibir (CREATE, DROP) tabelas ou banco de dados.
Podemos permitir, ou n�o, usar os comandos de administra��o do gerenciador de banco de dados como shutdown, reload, process, etc.
Podemos sempre comprovar nossos previl�gios com o script mysqlaccess.
Um HOST deve ser um host local, um n�mero IP, ou uma express�o SQL . Se na tabela db a coluna hosta est� vazia, significa cualquier host na tabela de host. Se na tabela host ou user a coluna host est� vazia, significa que qualquer HOST pode criar uma conex�o TCP com vosso servidor.
Db � o nome de um banco de dados.
Uma coluna USER vazia, significa qualquer nome de usu�rio.
A forma mais r�pida de iniciar o servidor � executando :
mysql.server startPodemos realizar o mesmo executando o script safe_mysql como indicado no guia de instala��o, ainda que no final, de uma forma ou de outra, ser� executado o arquivo mysqld.
� necess�ria, como podemos supor, iniciar o servidor para realizar qualquer opera��o com o banco de dados, e uma vez realizado, podemos executar v�rios comandos para comprovar que a partida do servidor esteje correto como, por exemplo, mysqladmin cujo formato completo ser� :
mysqladmin [OP��ES] comando comandoonde OP��ES puede ser :
onde Comando pode ser um ou mais de :
assim que, executando :
mysqladmin create novobancodedadoscriaremos um novo banco de dados cujo nome ser� nuevabasededatos
poderemos ver os processos que est�o sendo executado no servidor com :
mysqladmin processlistOutro comando importante � mysqlshow que nos permite ver os bancos de dados que
existem, por exemplo, se executamos o comando :
nos mostrará o resulrtado :
+-----------+ | Databases | +-----------+ | mysql | | personas | | test | +-----------+
Como indicamos na introdu��o, este servidor de banco de dados � considerado como o mais r�pido entre os de sua categoria tanto para grandes volumes de dados como pequenos, mas como tamb�m indicamos o princ�pio � o banco de dados de n�o implementar certos aspectos das especifica��es SQL estes aspectos, que a meu entender, s�o importantes por um lado os Triggers e por outro lado a L�gica Transacional.
Os triggers n�o s�o nada mais que uma por��o de c�digo armazenado que se "dispara" ou se executa quando realizamos uma opera��o (atualiza��o, dele��o, etc.) com o banco de dados. Naturalmente comprovar a pr�pria existencia de disparador e execut�-lo, se existe, consome recursos e tempo e � como seu pr�prio manual informa, a �nica raz�o porque os triggers n�o est�o suportados.
Um aspecto muito importante em qualquer banco de dados relacional � a consistencia das diferentes tabelas que o comp�em, para conseguir isto de uma forma menos f�cil � utilizando a "L�gica Transacional", ser� o pr�prio gerenciador de banco de dados que proporcionar� mecanismos de bloqueio de arquivos e consolida��o ou retrocesso nas opera��es com as tabelas. Pois bem MySQL n�o suporta as transa��es em fun��o da velocidade (ou pelo menos assim indicam em seus coment�rios), s� podem nos ajudar com os comandos LOCK tables /UNLOCK tables que permite bloquear tabelas impidindo que outros usu�rios possam acess�-las, mas sem a possibilidade de desfazer as opera��es realizadas com os dados.
Tendo em conta estas restri��es na utiliza��o do servidor, veremos como implementamos alguns comandos SQL, n�o com o objetivo de analisar os comandos, e sim ver como estes comandos s�o implementadosneste Gerenciador de banco de dados.
Uma vez que tenhamos o servidor j� iniciado, nada nos falta do que enviar-lhe instru��es para realizar as opera��es que desejarmos. Como exemplo veremos a cria��o de um banco de dados "pessoas", que � constituido por tres tabelas, "clientes", "estados" e "munic�pios". � um exemplo muito simples e sem nenhuma utilidade, mas nos ajudar� em um exemplo real de como podemos manipular banco de dados. Em primeiro lugar, diremos que estas opera��es poder�o serem realizadas de v�rias maneiras: uma delas ser� atrav�s de uma API em C, C++, Java ou por meio de um ODBC sem estarmos trabalhando no Windows95 (com perd�o), ou tamb�m poder�amos realiz�-los com o shell da pr�pria instala��o. Esta �ltima maneira nos parece mais apropriada para nosso artigo j� que n�o temos que descrever as particularidades das distintas linguagens de programa��o.
O Shell do MySQL podemos iniciar, executando:
mysql nomebancodedadose aparecer� o prompt do shell, que poderemos enviar comandos ao servidor.
Assim mesmo podemos executar o shell no modo batch o retardado executando :
mysql -e (comando SQL ) nomebancodedadoscom o que conseguiremos enviar o comando SQL ao servidor.
Para nosso exemplo criamos um banco de dados llamado "pessoas"com o comando.
mysqladmin create pessoasExecutaremos o shell com o comando.
mysql pessoasja podemos enviar desde o shell comandos ao pr�prio servidor, como por exemplo, que nos ensine as tabelas do banco de dados com o que temos iniciado no shell:
e o sistema responder� com:
+-------------+ | Tables | +-------------+ | clientes | | municipios | | provincias | +-------------+
Todos os comandos que enviamos ao servidor a partir do shell, sempre acabam em /g, que � a forma de indicar o fim de um comando e o envio dele ao servidor para que o execute.
Naturalmente, antes que o sistema nos devolva esta informa��o, temos que ter criado as tabelas com os correspondentes comandos CREATE, os quais ter�am o seguinte aspecto:
CREATE TABLE clientes
CREATE TABLE provincias
CREATE TABLE municipios (Cod_provincia INT(2) NOT NULL, Cod_municipio INT(3) NOT NULL, Descripcion_m CHAR(30) NOT NULL, PRIMARY KEY(Cod_provincia,Cod_municipio)) /g
Continuando, podemos executar:
> show colums from clientes from pessoas /gobteremos respectivamente :
Database: pessoas Table: clientes Rows: 4 +--------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+----------+------+-----+---------+-------+ | NIF | char(9) | |PRI | | | | Nombre | char(15) | YES | | | | | Apellidos | char(35) | | | | | | Direccion | char(50) | | | | | | Poblacion | int(5) | | | 0 | | | Provincia | int(2) | | | 0 | | | Telefono | int(9) | YES | | | | | Fecha_Alta | date | YES | | | | +--------------+----------+------+-----+---------+-------+
Database: personas Table: provincias Rows: 3 +-----------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key| Default | Extra | +-----------------+----------+------+-----+---------+-------+ | Cod_provincia | int(2) | | PRI | 0 | | | Descripcion_p | char(30) | | | | | +-----------------+----------+------+-----+---------+-------+
Database: personas Table: municipios Rows: 9 +------------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key| Default | Extra | +------------------+----------+------+-----+---------+-------+ | Cod_provincia | int(2) | | PRI | 0 | | | Cod_municipio | int(3) | | PRI | 0 | | | Descripcion_m | char(30) | | | | | +------------------+----------+------+-----+---------+-------+
O pr�ximo passo, ser� introduzir dados em cada uma das tabelas, vamos utilizar o comando INSERT puro do SQL, sem que haja nenhuma interven��o de qualquer linguagem de programa��o ou rotinas da API :
Para inserir um registro na tabela clientes, municipios e estados, realizaremos respectivamente:
E finalmente, terminaremos nosso intiner�rio pelos comandos SQL, realizando sele��es nas fileiras que introduzimos nas tabelas criadas anteriormente dentro do banco de dados que criamos para o exemplo deste artigo. Selecionaremos os registros da tabela "cliente" variando a condi��o de sele��o e uma primeira sele��o da tabela munic�pios :
> SELECT ALL Cod_provincia, Cod_municipio, Descripcion_m from municipios where Cod_provincia = 28 /gCod_provincia Cod_municipio Descripcion_m 28 1 Fuenlabrada 28 2 Pozuelo 28 3 Madrid> SELECT ALL NIF,Nombre,Apellidos,Direccion from clientes where Poblacion = 28001
NIF Nombre Apellidos direccion 23198623N JUAN ANDRES RUIZ MORALES C/ CATEDRAL 12 2B 5316828K PEDRO ROMERO DIAZ C/ HOLA 9 52312844J LUIS ALBERTO LISTO JIMENEZ C/ ROSA DE LOS VIENTOS 129 3I
Como comentava no in�cio do artigo, o objetivo que seguia era simplemente mostrar o funcionamento e ver as caracter�sticas fundamentais de uma implementa��o concreta de um servidor de banco de dados SQL, mas n�o somente queria indicar uma s�rie de receitas e comandos para poder utiliz�-lo, sem que pretendessemos realizar um estudo das possibilidades e carencias que poderiam ter este software, sobretudo porque conhecendo a fundo um produto, podemos obter o m�ximo rendimento dele, utilizando-o naqueles aspectos em que est�o mais potenciados. este � o caso deste gerenciador de banco de dados, j� que considero que a n�o implementa��o dos triggers e a l�gica transacional deixa muito complicado o manuseio dos dados (Inser��o, modifica��es e dele��o de registros) a partir de aplica��es multiusu�rios e utilizando grandes movimentos em tabelas relacionadas entre s�. Ainda penso que, para aplica��es onde pretendemos realizar consultas muito r�pidas a banco de dados muito grandes, seria recomend�vel este servidor (tendo sempre como referencia a vers�o semi-free deste servidor).
Informo que para concluir, que a base desre artigo foi obtido na pr�pria documenta��o MySQL, que a considero bastante completa, de alguns artigos de revistas especializadas, assim como de um amarelado manual "auto didata" da IBM sobre SQL.
[email protected]
Esta website � mantida por Miguel Angel Sepulveda © Jose M. Fernández 1998 LinuxFocus 1998 |