Opções dos comandos:
-p - senha,
-P 3306 - Porta
-h 127.0.0.1 - Endereço do servidor
-u root - Usuário do banco
mysqldump options > backupfile.sql
mysqldump -p -P 3306 -h 127.0.0.1 -u root databasename > backupfile.sql
mysql options < backupfile.sql
mysql -p -P 3306 -h 127.0.0.1 -u root databasename < backupfile.sql
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 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.
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;
O Banco MariaDB tentou conciliar um pouco mais do MyISAM e InnoDB criando a engine Aria (dá para usar com MySQL também).
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` ( ... );
basico:
show databases;
show tables;
desc nome_table;
Ver o tipo das tabelas criada:
SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'database_name';
<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');