Páginas

Mostrando postagens com marcador MySQL. Mostrar todas as postagens
Mostrando postagens com marcador MySQL. Mostrar todas as postagens

quarta-feira, 8 de junho de 2016

[MySQL] - Padronização de Desenvolvimento em Banco de dados


Documentação para Padronização de Desenvolvimento em Banco de dados:

Procedimento Armazenados:
  todo procedimento armazenado deverá inicia sua nomenclatura,seguindo o padrão abaixo:
PRC_

A Sigla de um procedimento será seguido de um verbo que irá informar qual o propósito do procedimento.

PRC_ATUALIZAR_
PRC_INSERIR_
PRC_EDITAR_
PRC_DELETAR_
PRC_EXTRAIR_
PRC_LOGAR_
PRC_UTIL_

Após informar o propósito do procedimento armazenado informe o nome da tabela ou informações que ele irá processar.

PRC_EXTRAIR_TBCIDADE

Funções:  
toda função deverá iniciar sua nomenclatura seguindo o padrão abaixo:

FNC_
A sigla de uma função será seguida da nomenclatura abaixo:

FNC_GET_
Será utilizada para retornar valores.

FNC_SET_
Será utilizador para informar valores.

FNC_IS_
Será para testar valores booleanos.

FNC_LOG_
Será para gravar valores históricos que necessitem de retorno.

Tabelas:  
toda tabela deverá iniciar sua nomenclatura seguindo o padrão abaixo:
TB_
A Sigla de uma tabela deverá ser seguido do tipo de informação que será armazenada em forma de substantivo ou verbo.
TB_CIDADE
TB_LOGUSUARIOS

Índices:
todo índice deverá iniciar sua nomenclatura seguindo o padrão abaixo:
INDX_NomeDaTabela_ColunaDaTabela

Triggers(gatilhos):
 todo gatilho deverá iniciar sua nomenclatura seguindo o padrão abaixo:
TRG_AcaoDaTrigger_NomeDaTabela
TRG_DELETAR_TB_CIDADE ou TRG_DELETAR_CEP

Eventos(events):
 todo evento deverá iniciar sua nomenclatura seguindo o padrão abaixo:
EVT_AcaoDoEvento_NomeDaTabela ou EVT_ATUALIZAR_CEP

Visualizações(Views):
toda visualização deverá iniciar sua nomenclatura seguindo o padrão abaixo:

VW_NomeSubstantivo_FiltroDaView ou VW_TBCIDADE_CEP

Link de documento para consulta:

quarta-feira, 25 de fevereiro de 2015

[MySQL] - Rotina para limpar bases de dados


Aqui está um script legal que vai apagar todos os seus bancos de dados MySQL, menos os bancos de dados mysql e information_schema.
Eu uso esse script sempre quando eu quero reconstruir meu servidor de replicação.

mysql -uroot -p  -e "show databases" | grep -v Database |
grep -v mysql| grep -v information_schema| grep -v test | 
grep -v OLD |gawk '{print "drop database " $1 ";select sleep(0.1);"}' |
mysql -uroot -ppassword
O comando vai criar a declaração de banco de dados apagar os bancos de dados, menos os bancos de dados mysql e information_schema.
A saída seria algo de tipo:


[root@home]#  mysql -uroot -p  -e "show databases" | grep -v Database | grep -v mysql| grep -v information_schema|grep -v bih002_bin_logs | grep -v test | grep -v OLD |gawk '{print "drop database " $1 ";select sleep(0.1);"}'
drop database callroom;select sleep(0.1);
drop database callroom_mgm;select sleep(0.1);
drop database dialogus;select sleep(0.1);
drop database limesurvey;select sleep(0.1);

[MySQL] - Verificando tabelas InnoDB fragmentadas e reorganizando os dados


O que são tabelas fragmentadas?
Se houver inserções aleatórias em ou exclusões dos índices de uma tabela, os índices podem se tornar fragmentados.
A fragmentação significa que a ordem física das páginas de índice no disco não está próxima a ordem do índice dos registros nas páginas ou que há muitas páginas sem uso no bloco de 64 páginas que foram alocados para o índice.
Os sintomas de tabelas fragmentadas pode ser que a tabela pode ter mais espaço em disco do que o necessário ou os resultados pode retornar mais lento, com mais de disco I/O do que o necessário. Usuários INNODB precisa verificar a fragmentação muitas vezes, porque quando as marcas INNODB dados como excluído, ele nunca substitui os blocos com novos dados. Ele só os marca como inutilizável. Como resultado, o tamanho dos dados é artificialmente e recuperação de dados é retardado.

SELECT 
TABLE_SCHEMA, TABLE_NAME, CONCAT(ROUND(data_length / ( 1024 * 1024 ), 2), 'MB') DATA, 
CONCAT(ROUND(data_free  / ( 1024 * 1024 ), 2), 'MB')FREE 
              from information_schema.TABLES 
          where TABLE_SCHEMA 
       NOT IN ('information_schema','mysql') and Data_free < 0;
  • Agora crie uma rotina de executar o script abaixo.
  • 
     #!/bin/bash
     
    MYSQL_LOGIN='-u<user name> --password=<passowrd>'
     
    for db in $(echo "SHOW DATABASES;" | mysql $MYSQL_LOGIN | grep -v -e "Database" -e "information_schema")
    do
            TABLES=$(echo "USE $db; SHOW TABLES;" | mysql $MYSQL_LOGIN |  grep -v Tables_in_)
            echo "Switching to database $db"
            for table in $TABLES
            do
                    echo -n " * Optimizing table $table ... "
                    echo "USE $db; OPTIMIZE TABLE $table" | mysql $MYSQL_LOGIN >/dev/null
                    echo "done."
            done
    done
     
    

    É importante lembrar que quando de-fragmentam uma tabela, o processo irá bloquear a tabela, por isso certifique-se de que você pode fazer esse bloqueio.

    segunda-feira, 24 de novembro de 2014

    [MySQL] - Migrando MySQL para PostgreSQL


    Bom pessoal, segue abaixo instruções para migração de bancos de dados MySQL para PostgreSQL com a ferramenta da EnterpriseDB.

    Link para download da Ferramenta:

    Migra Somente estrutura do Banco de dados sem chaves estrangeiras
    cmd>runMTK.bat -schemaOnly -allTables -constraints -skipFKConst -sourcedbtype mysql employees

    Migra somente os dados através de lotes de dados
    cmd>runMTK.bat -dataOnly -fetchSize 1 -sourcedbtype mysql employees

    Migra todo banco de dados com constraints e dados
    cmd>runMTK.bat -fetchSize 1 -sourcedbtype mysql employees

    -------
    Configuração do arquivo "toolkit.properties":
    SRC_DB_URL=jdbc:mysql://127.0.0.1/employees
    SRC_DB_USER=root
    SRC_DB_PASSWORD=teste

    TARGET_DB_URL=jdbc:postgresql://localhost:5432/exemplo
    TARGET_DB_USER=postgres
    TARGET_DB_PASSWORD=teste

    -------

    Dentro da pasta do aplicativo, existe um arquivo chamado "mtk-readme.txt" que possui o help do utilitário.

    -------

    OBS:
    Tendo o Java já instalado na sua maquina copie todos os .jar da pasta lib para a pasta C:\Program Files (x86)\Java\jre6\lib\ext ou lib\ext dentro da sua versão do Java que está instalada.

    sexta-feira, 7 de novembro de 2014

    [SQL] - BD de Cep 2014 para MySQL, PostgreSQL e Oracle


    Bom pessoal, venho compartilhar a base de CEP 2014(17/01/2014) do Brasil em vários bancos de dados para facilitar o cadastro de endereçamento em diversa aplicações.

    Segue abaixo, link para download:
    https://www.dropbox.com/s/78zuhdotwdqr4kb/banco_de_dados_cep_17_01_2014.rar?dl=0

    Espero que possa ajudar desenvolvedores que precisem de uma base de dados de endereçamento atualizada.

    [SQL] - BD de Municípios IBGE 2013 e 2014 ( Oracle, MySQL, PostgreSQL e MS SQL Server)


    Bom pessoal, venho compartilhar base de municípios do IBGE 2013 e 2014 atualizada para diversos bancos de dados, sendo Oracle, MySQL, PostgreSQL e MS SQL Server.

    Segue abaixo, link para download:
    https://www.dropbox.com/s/we4vis6p96cpkux/municipio_ibge.zip?dl=0

    Espero que possa ajudar.

    sábado, 5 de julho de 2014

    [MySQL] - Gerando XML de Consultas


    Bom pessoal essa dica é para gerar XML de consultas no MySQL.

    Comando:
    mysql --xml -uroot -e "select * from information_schema.schemata" -p > resultset.xml




    Documentação: http://dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html#option_mysql_xml

    quinta-feira, 20 de fevereiro de 2014

    [MySQL] - Alterando o Collation do BD e Tabelas

    Bom pessoal, nesse post vou colocar os comandos para fazer a alteração de Collation do seu banco de dados MySQL, como também das suas tabelas e colunas:

    1. Alterar o collation da base de dados:
    ALTER DATABASE ‘base-de-dados’ DEFAULT CHARACTER SET charset COLLATE collation;

    Ex:
    ALTER DATABASE `base_de_dados` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
    ALTER DATABASE `base_de_dados` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


    2. Alterar o collation da tabela:
    ALTER TABLE ‘tabela’ DEFAULT CHARACTER SET charset COLLATE collation;

    Ex:
    ALTER TABLE `produtos` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
    ALTER TABLE `clientes` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


    3. Alterar o collation do campo de uma tabela:
    ALTER TABLE tabela CHANGE campo_nomeatual campo_novonome tipo(tamanho) CHARACTER SET encoding COLLATE collation;

    Ex:
    ALTER TABLE `produtos` CHANGE `nome` `nome` TEXT CHARACTER SET latin1 COLLATE latin1_general_ci;
    ALTER TABLE `clientes` CHANGE `nome` `nome` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci;

    Fonte:

    sexta-feira, 22 de novembro de 2013

    [MySQL] - Habilitando acesso remoto ao servidor

    Dica velha que de vez em quando é necessário relembrar, por isso vou deixar registrado aqui para não ter que ficar procurando no google sempre que precisar.
    Executar todos os passos abaixo como root:
    1 – Edite o arquivo:
    /etc/mysql/my.cnf
    2 – Altere a seguinte linha:
    bind-address = 127.0.0.1
    Deixando assim:
    bind-address = 0.0.0.0
    3 – Reinicie o Mysql
    # /etc/init.d/mysql restart
    4 – Vamos agora dar GRANT no usuário root, logue no mysql:
    # mysql -u root -p
    5 – Após se logar, digite o seguinte comando:
    GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'sua_senha';
    Dessa forma você libera o acesso ao seu servidor Mysql vindo de qualquer máquina externa, caso queira liberar somente o acesso da sua máquina, é só verificar qual é seu IP e entrar com o comando:
    GRANT ALL ON *.* TO root@'192.168.0.2' IDENTIFIED BY 'sua_senha';
    6. Após isso, basta dar uma reiniciada novamente no Mysql e realiazar a conexão remota.
    # /etc/init.d/mysql restart
    ====================================================
    Caso você queira desfazer o acesso remoto é bem simples também.
    1 – Altere a seguinte linha:
    bind-address = 0.0.0.0
    Deixando assim:
    bind-address = 127.0.0.1
    2. Logue no Mysql:
    # mysql -u root -p
    3. Delete todos os privilégios remotos:
    DELETE FROM mysql.user WHERE User = 'root' AND Host = '%';
    FLUSH PRIVILEGES;
    4. Reinicie o Mysql e pronto, não estará mais acessível remotamente.

    terça-feira, 19 de novembro de 2013

    [MySQL] - Backup da estrutura e dados separados

    -- Backup da estrutura do banco de dados
    mysqldump -u root --password=teste -h 127.0.0.1 -n --default-character-set=utf8 --routines --triggers --events -d -v nome_banco > c:\dump\nome_banco_estrutura.sql 2> c:\dump\nome_banco_estrutura.error

    -- Backup dos dados do banco de dados
    mysqldump -u root --password=teste -h 127.0.0.1 -n -R -c -t -e -v -K nome_banco > c:\dump\nome_banco_dados.sql 2> c:\dump\nome_banco_dados.error

    -- Select para validar objetos importados --

    SET @nome_do_schema = 'nome_banco';
    Select
    (select schema_name from information_schema.schemata where schema_name=@nome_do_schema) as "Nome do Banco de dados",
    (SELECT Round( Sum( data_length + index_length ) / 1024 / 1024, 3 )
    FROM information_schema.tables
    WHERE table_schema=@nome_do_schema
    GROUP BY table_schema) as "Tamanho do Banco de dados em Mega Bytes",
    (select count(*) from information_schema.tables where table_schema=@nome_do_schema and table_type='base table') as "Quant. Tabelas",
    (select count(*) from information_schema.statistics where table_schema=@nome_do_schema) as "Quant. Índices",
    (select count(*) from information_schema.views where table_schema=@nome_do_schema) as "Quant. Views",
    (select count(*) from information_schema.routines where routine_type ='FUNCTION' and routine_schema=@nome_do_schema) as "Quant. Funções",
    (select COUNT(*) from information_schema.routines where routine_type ='PROCEDURE' and routine_schema=@nome_do_schema) as "Quant. Procedimentos",
    (select count(*) from information_schema.triggers where trigger_schema=@nome_do_schema) as "Quant. Triggers",
    (select default_collation_name from information_schema.schemata where schema_name=@nome_do_schema)"Default collation do Banco de dados",
    (select default_character_set_name from information_schema.schemata where schema_name=@nome_do_schema)"Default charset do Banco de dados",
    (select sum((select count(*) from information_schema.tables where table_schema=@nome_do_schema and table_type='base table')+(select count(*) from information_schema.statistics where table_schema=@nome_do_schema)+(select count(*) from information_schema.views where table_schema=@nome_do_schema)+(select count(*) from information_schema.routines where routine_type ='FUNCTION' and routine_schema=@nome_do_schema)+(select COUNT(*) from information_schema.routines where routine_type ='PROCEDURE' and routine_schema=@nome_do_schema)+(select count(*) from information_schema.triggers where trigger_schema=@nome_do_schema))) as "Total de Objetos do Banco de dados"
    LIMIT 0, 1000\G

    -- Validando os dados importados --
    select a.TABLE_SCHEMA, a.TABLE_TYPE , a.TABLE_NAME, a.TABLE_ROWS from information_schema.tables a where a.table_schema='nome_banco';

    sábado, 9 de novembro de 2013

    [MySQL] - Some useful MySQL Flush commands

    Some useful MySQL Flush commands

    Following are some useful flush commands with their description.
    1. flush-hosts: Flush all host information from host cache.
    2. flush-tables: Flush all tables.
    3. flush-threads: Flush all threads cache.
    4. flush-logs: Flush all information logs.
    5. flush-privileges: Reload the grant tables (same as reload).
    6. flush-status: Clear status variables.
    # mysqladmin -u root -p flush-hosts
    # mysqladmin -u root -p flush-tables
    # mysqladmin -u root -p flush-threads
    # mysqladmin -u root -p flush-logs
    # mysqladmin -u root -p flush-privileges
    # mysqladmin -u root -p flush-status
    Fonte:
    http://www.askdbexperts.com/2013/02/most-used-mysql-flush-commands.html
    http://www.askdbexperts.com/2013/02/most-often-used-mysql-dba-commands.html

    [MySQL] - Dicas de instruções SQL


    A função IN e NOT IN

    Usamos IN para fazer consultas quando precisamos que seja retornado todos os registros onde em um determinado campos contenha um dos valores que serão passados no IN.
    Usamos NOT IN quando queremos retornar tudo menos os resultados passados no NOT IN

    Uso em String:

    SELECT sigla, nome, população
    FROM cidades
    WHERE
    Sigla IN(‘PR’, ‘SP’, ‘MG’);
    //NOT IN
    Sigla NOT IN(‘PR’, ‘SP’, ‘MG’);


    Uso numérico:

    SELECT nome, email, idade
    FROM curriculos
    WHERE
    idade IN (18, 19, 20)
    //NOT IN
    idade NOT IN (15, 16, 17)

    As funções IF e CASE WHEN

    Usamos a função IF no MySQL com a mesma finalidade do que qualquer linguagem de programação, só que na maioria das vezes é mais fácil jogar essa verificação para o banco de dados do que para a linguagem de programação.

    segunda-feira, 4 de novembro de 2013

    [MySQL] - Verificando numero de tabelas por engines e schemas


    Bom pessoal, essa é uma dica rápida para verficar o numero de tabelas que estejam utilizando engines diferentes no seu banco de dados MySQL.

    -- Verificar o numero de tabelas por Engines em todo banco de dados

    mysql> select count(*) as nrm_tabelas, a.engine as tipo_engine from information_schema.tables a group by a.engine;

    -- Verifica o numero de tabelas por Engine e Schema
    mysql> select count(*) as nrm_tabelas, a.engine as tipo_engine, a.table_schema as schemas_mysql from information_schema.tables a group by a.engine, a.table_schema;

    Espero ajudar os desenvolvedores e DBAs MySQL que estejam fazendo levantamento dos objetos que utilizam engines diferentes dentro do seu banco de dados MySQL.

    [MySQL] - Mover armazenamento InnoDB no Linux

    Passo 1:
    Pare o MySQL Server:

    # /etc/init.d/mysqld stop

    Passo 2:
    Através de comandos do sistema operacional, mova o arquivo ibdata1 para outro diretório ou partição (/ibdata).

    Passo 3:
    Edite o arquivo my.cnf e adicione a seguinte linha:
    innodb_data_home_dir=/ibdata

    Passo 4:
    Inicie o MySQL Server:

    # /etc/init.d/mysqld start

    segunda-feira, 21 de outubro de 2013

    [MySQL] - Resolvendo problemas de caracteres acentuados no MySQL


    Antes de importar os dados para a sua base MySQL, defina um collation padrão. No Brasil o Latin1 é o mais utilizado, então o CHARSET (codificação de caracteres) padrão na Locaweb é o Latin1 e o COLLATE (collation) padrão é o latin1_general_ci. Scripts externos podem utilizar UTF8 e geralmente é por causa da diferença de codificação entre Latin1 e UTF8 que ocorrem erros de acentuação.
    Verificar o Charset e Collate:

    show variables like '%char%';


    show variables like '%coll%';
    A seguir estão alguns exemplos para definir um collation padrão para a sua base de dados:


    ALTER DATABASE `sua_base` CHARSET = Latin1 COLLATE = latin1_swedish_ci;

    ou


     ALTER DATABASE `sua_base` CHARSET = UTF8 COLLATE = utf8_general_ci;

    CHARSET e COLLATE são coisas distintas, no MySQL, cada CHARSET possui COLLATEs, cada um com sua particularidade. O intuito deste Wiki não é explicar as características de cada um deles, pois pode ser visto da documentação do MySQL, mas daremos um pequeno descritivo entre latin1_general_ci, latin1_general_cs e latin1_swedish_ci.


    • latin1_general_ci: Não há distinção entre letras maiúsculas e minúsculas. Buscando por “teste”, registros como “Teste” ou “TESTE” serão retornados.
    • latin1_general_cs: Distingue letras maiúsculas e minúsculas. Buscando por “teste” somente retornará “teste”. Opções como “Teste” e “TESTE” não serão retornadas.
    • latin1_swedish_ci: Não distingue letras minúsculas e maiúsculas e nem caracteres acentuados e com cedilha, ou seja, o registro que contém a palavra “Intuição” será retornado quando houver uma procura pela palavra “intúicao”.

    Quando você estiver exportando os dados da sua base de dados de origem, certifique-se de estar especificando a codificação corretamente. No phpMyAdmin há um menu DropDown próximo às opções de compactação ‘nenhum’, ‘zip’, ‘gzip’ e ‘bzip’ que normalmente está selecionada a opção ‘utf-8’. Mantenha este se sua base estiver com este CHARSET, do contrário, especifique ‘iso-8859-1’ caso ela esteja com o CHARSET Latin1.Faça o mesmo durante a importação. Ao enviar o arquivo, o menu DropDown estará como ‘utf-8’, se o CHARSET da base for ‘Latin1’ escolha o ‘iso-8859-1’.

    Fonte:
    http://wiki.locaweb.com.br/pt-br/Resolvendo_problemas_de_caracteres_acentuados_no_MySQL

    [PL/MySQL] - Artigos de Estudo sobre PL/MySQL

    Bom pessoal, venho compartilhar com a comunidade de MySQL alguns links de artigos sobre PL/MySQL. Segue abaixo:

    https://www.dropbox.com/s/sl85h6atf4qk427/sp_mysql.zip
    https://www.dropbox.com/s/hnuu2cqqtbjh4vg/sp_mysql_0.pdf
    https://www.dropbox.com/s/7q359tc553jdnaj/Transaccao.doc 
    https://www.dropbox.com/s/yetcp3b82vj4kpp/SQL.pdf

    Espero ajudar, aqueles que estejam a procura de informações sobre a Linguagem de Programação utilizado no SGBD MySQL.Que a Graça e Paz estejam com todos.

    [PL/MySQL] - Compreenda as STORE PROCEDURES no MySQL



     
    No cenário atual de desenvolvimento estamos cada vez mais preocupados com alguns princípios: A menor escrita de código possível (evitar redundância ao máximo), a centralização da regra de negócio e validação para facilitar a manutenção do projeto, a simplicidade e legibilidade no desenvolvimento do código e para finalizar a menor interdependência de situações no código. Dentro da evolução do desenvolvimento existe uma fase onde partes das regras de negócios estavam localizadas no banco de dados, isto foi possível devido ao recurso da STORE PROCEDURE que são um conjunto de instruções SQL armazenado no servidor. Os dois maiores fatores negativos deste cenário são:
    - É o maior poder para o DBA (que agora também fica com a função de programador),
    - Aumento na utilização dos recursos no servidor.
    ATENÇÃO: Não utilize STORE PROCEDURE para implantação de bibliotecas para serem utilizadas na sua programação por que isto é trabalho para as linguagens de programação, além do mais teria um custo elevado no desempenho de sua aplicação.
    De acordo com o manual do MySQL você pode utilizar STORE PROCEDURES neste cenário:
    a) Quando várias aplicações clientes são escritas em diferentes linguagens ou funcionam em diferentes plataformas, mas precisam realizar as mesmas operações de banco de dados.
    b) Quando a segurança é prioritária. Bancos, por exemplo, usam stored procedures para todas as operações comuns. Isto fornece um ambiente consistente e seguro, e procedures podem assegurar que cada operação seja registrada de forma apropriada. Neste tipo de condiguração, aplicações e usuários não conseguiriam nenhuma acesso as tabelas do banco de dados diretamente, mas apenas podem executar stored procedures específicas.
    Vale ressaltar que há um tempo a Microsoft encorajava o desenvolvimento de suas aplicações com STORE PROCEDURES devido ao esquema de segurança.
    A STORE PROCEDURE está presente desde a versão 5 do MySQL e segue a sintaxe do SQL:2003 o mesmo utilizado pelo DB2 da IBM. Após esta explicação, voltemos ao projeto da locadora de DVD e vejamos na prática como implantamos STORE PROCEDURES.

    Abaixo o DER que iremos trabalhar:
    DER Locadora de DVD

    Sintaxe de uma procedure:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CREATE PROCEDURE NOME_DA_PROCEDURE
    (
    tipo_parametro1(Valores possíveis: [ IN | OUT | INOUT ])

    parametro1
    tipo_dado1(Qualquer tipo válido do mysql(varchar, char, int, date)
    , [
    tipo_parametro2(Valores possíveis: [ IN | OUT | INOUT ])
    parametro2
    tipo_dado2(Qualquer tipo válido do mysql(varchar, char, int, date)
    ]

    )

    BEGIN
    INSTRUCOES SQL;
    END

    Tipos de Parâmetros:

    a) IN => Parâmetro de entrada. É passado um valor que vai será utilizado no corpo da procedure;
    b OUT =>Parâmetro de saída. Retorna um valor que pode fica armazenado na memória do servidor;
    c) INOUT => Possui a funcionalidade de entrada e saída ao mesmo tempo.
    Vamos fazer o procedimento de CRUD para a tabela tegenero (idGenero int(autoincremento), NmGenero, FgStatus smallint) da locadora:

    Código de Inserção:

    1
    2
    3
    4
    5
    6
    DELIMITER $$
    CREATE PROCEDURE prInsereGenero (IN strNmGenero varchar(100), intFgStatus smallint)
    BEGIN
    INSERT INTO teGenero(NmGenero, FgStatus) VALUES (strNmGenero, intFgStatus);
    END $$
    DELIMITER ;

    Código de exclusão:

    1
    2
    3
    4
    5
    6
    DELIMITER $$
    CREATE PROCEDURE prExcluiGenero (IN intidGenero int)
    BEGIN
    DELETE FROM tegenero WHERE idGenero = intidGenero;
    END $$
    DELIMITER ;

    Código de Edição:

    1
    2
    3
    4
    5
    6
    7
    8
    DELIMITER $$
    CREATE PROCEDURE prEditaGenero (IN intIdGenero int, strNmGenero varchar(100), intFgStatus smallint)
    BEGIN
    UPDATE tegenero SET NmGenero = strNmGenero
    , FgStatus = intFgStatus
    WHERE idGenero = intIdGenero;
    END $$
    DELIMITER ;

    Código da Chamada:

    1
    2
    3
    CALL prInsereGenero ('Teste A', 0);
    CALL prEditaGenero (2, 'Teste B', 1);
    CALL prExcluiGenero (1);

    terça-feira, 27 de agosto de 2013

    Excluindo usuário no MySQL


    Podemos utilizar o comando DROP USER e o comando DELETE.
    Com o comando DROP USER devemos informar o nome do usuário e qual o host de conexão ele pertence:
    DROP USER 'emerson'@'%';

    Também podemos realizar a deleção do usuário com o comando delete:
    DELETE FROM mysql.user WHERE user = 'emerson';

      
    Explicando o comando, estamos deletando (delete from) da tabela user onde a database é mysql (mysql.user) o usuário cujo o nome seja 'emerson'.

    Fonte:
    http://wiki.mandic.com.br/cloud-computing/cloud-linux/tutoriais/134-excluindo-usuario-mysql