Skip to content

Instantly share code, notes, and snippets.

@renatoapcosta
Last active February 26, 2021 03:59
Show Gist options
  • Save renatoapcosta/55db889a5dddf535386d4d194d0f19eb to your computer and use it in GitHub Desktop.
Save renatoapcosta/55db889a5dddf535386d4d194d0f19eb to your computer and use it in GitHub Desktop.
MySQL

MySQL

Backup e Restauração

Opções dos comandos:

-p - senha, 
-P 3306 - Porta
-h 127.0.0.1 - Endereço do servidor
-u root - Usuário do banco

Criando backup

mysqldump options > backupfile.sql

mysqldump -p -P 3306 -h 127.0.0.1 -u root databasename > backupfile.sql

Restaurando backup

mysql options < backupfile.sql

mysql -p -P 3306 -h 127.0.0.1 -u root databasename < backupfile.sql

Engine

As engines são tipos de tabelas que fazem parte do MySQL.

A escolha de qual engine usar afeta diretamente a velocidade de leitura, escrita, transações, integridade, forma de armazenamento e escrita no log.

Não estamos limitados às engines que já vêm com a instalação do MySQL, também podemos adquirir novas e instalá-las posteriormente.

As engines podem ser divididas em dois grupos: transacionais e não transacionais.

Para atender uma transação, o banco de dados precisa respeitar o acrônimo ACID.

MyISAM

MyISAM não suporta FOREIGN KEY mas suporta FULLTEXT.

MyISAM é apropriado para tabelas cujos dados não mudam com frequência. Um exemplo disso é uma tabela de cidades e estados. Como geralmente este tipo de tabela é usado apenas como consultas, não há a necessidade do uso de InnoDB.

InnoDB

O InnoDB suporta FOREIGN KEY e apartir da versão 5.6.4 o Full-text search (FTS) foi implementando no innoDB.

InnoDB funciona mais rápido que MyISAM quando há modificações constantes nos dados, pois ele usa a proteção por registros (row locking) e não a proteção por tabelas (table locking) como o faz o MyISAM.

Contudo, em várias situações, InnoDB é mais lento que MyISAM, devido ao fato de que InnoDB funciona com transações.

Outro ponto interessante são as restrições de chaves estrangeiras (foreign key constraints) e transações. Estes recursos estão disponíveis apenas no InnoDB.

     CREATE TABLE IF NOT EXISTS `tabela` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `nome` varchar(60) DEFAULT NULL,
          PRIMARY KEY (`id`)
      ) ENGINE=InnoDB;

Aria ( MariaDB )

O Banco MariaDB tentou conciliar um pouco mais do MyISAM e InnoDB criando a engine Aria (dá para usar com MySQL também).

IF EXISTS

        DROP DATABASE   IF     EXISTS database_name;

        CREATE DATABASE IF NOT EXISTS database_name;

        USE database_name;

        DROP TABLE IF EXISTS `tabela`;
        
        CREATE TABLE IF NOT EXISTS `tabela` ( ... );

Outras consultas no Banco

basico:

        show databases;
        
        show tables;
        
        desc nome_table;

Ver o tipo das tabelas criada:

SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'database_name';

Spring Boot

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/batch?useSSL=false&createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.initialization-mode=always

schema.sql

DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

data.sql

INSERT INTO `person` (name) VALUES ('Santosh');
INSERT INTO `person` (name) VALUES ('Kumar');
INSERT INTO `person` (name) VALUES ('Walking');
INSERT INTO `person` (name) VALUES ('Techie');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment