Você está na página 1de 14

1. INSTALAO MYSQL 5.

Faa download do arquivo com extenso msi e execute-o.

Durante a instalao aceite a licena, selecione o tipo de instalao (developer default), Cheque os
requerimentos exigidos, confirme a porta 3306, informa a senha de root e se necessrio crie outro usurio e
conclua a instalao. Cheque se o caminho do mysql est na varivel de ambiente PATH.

TESTE A INSTALAO

Abrir a janela de servios e procurar o servio MYSQL57. Para iniciar ou parar o servio, execute o DOS como
administrador e digite: net start MYSQL57 e net stop MYSQL57.

Fonte:

https://dev.mysql.com/doc/refman/5.7/en/mysql-installer.html

https://dev.mysql.com/doc/refman/5.7/en/mysql-installer-workflow.html

2. COMANDOS BSICOS:

Fonte: https://dev.mysql.com/doc/refman/5.7/en/tutorial.html

https://elias.praciano.com/2013/02/mysql-comandos-basicos/

Funo Comando
Iniciar servio Mysql net start MYSQL57
Parar servio Mysql net stop MYSQL57
Conectar ao mysql mysql -h nome-do-servidor -u nome-do-usuario
Criar um banco CREATE DATABASE nome-do-banco;
Criar um usurio CREATE USER 'jef'@'localhost' IDENTIFIED BY 'passwd';
Use aspas mesmo que a senha seja numrica.
Definir privilgios GRANT ALL ON *.* TO 'jef'@'localhost';
GRANT SELECT, INSERT ON mydb.* TO 'user'@'host';
Alterar sua senha SET PASSWORD = 'new_passord';
Alterar senha de outrm SET PASSWORD FOR 'jef'@'localhost' =
PASSWORD('mypass');
atualiza tabela de users FLUSH PRIVILEGES;
Selecione o banco USE nome-do-banco
Criar uma tabela CREATE TABLE nome-da-tabela(params);
Ver bancos existentes SHOW DATABASES;
Ver tabelas existentes SHOW TABLES;
Ver descrio da tabela DESCRIBE nome-da-tabela;
Limpar tabela TRUNCATE TABLE nome-da-tabela;
Remover tabela DROP TABLE nome-da-tabela;
Remover banco DROP DATABASE nome-do-banco;

3. MOTORES DE ARMAZENAMENTO ( storage engines)


Referem-se s principais caractersticas, recursos ou funcionalidades inerentes, por exemplo: Capacidade
Transacional, Meio de armazenamento, ndices, Integridade Referencial, Tipo de travamento, Backup On-Line e
Auto Recovery.

MyISAM padro at a verso 5.5, estende os recursos do antigo ISAM. otimizado para compresso,
plenamente apropriado a ambientes com intensa leitura de dados e pouca escrita ou com nenhuma escrita. Sua
principal deficincia no ter suporte a transaes e chaves estrangeiras.

InnoDB mecanismo padro do MySQL oferece suporte a chaves estrangeiras, (ACID) transaes, transaes
distribudas SQL e XA , ndices FULLTEXT, operaes espaciais, colunas virtuais. Apresenta tima performance.

MERGE possibilita agrupar logicamente uma srie de tabelas MyISAM idnticas e referenci-las como um
objeto. Sendo isso bom bancos de dados com grandes volumes de dados.

MEMORY (HEAP) contedo fica armazenado na memria ram, possui acesso extremamente rpido mas os
dados ficam muito vulnerveis.

ARCHIVE indicado para insero gil e rpida de grande quantidade de dados em arquivos comprimidos e no
indexados, para economizar espao.

CSV (Comma Separated Values valores separados por vrgulas)armazena os dados em arquivos de texto,
separando os registros com vrgulas. um padro que ocupa pouqussimo espao, por sua simplicidade e tem
maior compatibilidade com aplicativos.

FEDERATED permite acessar dados remotos sem usar a tecnologia de replicao ou cluster.FEDERATED. Uma
tabela FEDERATED local puxa automaticamente os dados das tabelas remotas (federadas). Nenhum dado
armazenado nas tabelas locais.

BLACKHOLE aceita dados, mas no os armazena. Pode ser usado em projetos de bancos de dados distribudos,
onde estes so automaticamente replicados, mas no armazenados localmente. comum ser usado para rodar
testes de performance.

4. TRANSAES

Estamos falando de ACID: Atomicidade, Consistncia, Isolamento e Durabilidade.

ATOMICIDADE: Para que uma transao seja efetivada todas as aes devem ser realizadas para serem
persistidas (commit), caso alguma delas falhe toda a transao desfeita (rollback).

CONSISTNCIA: Para manter a consistncia de um banco de dados, todas as regras estabelecidas devem ser
obedecidas, chaves primrias, chaves estrangeiras, checagem de valores limitados etc.

ISOLAMENTO: Cada transao funciona independente das outras que esto ocorrendo simultaneamente, dentro
de cada transao podem ser realizadas uma ou mais operaes. Essas operaes no influenciam entre elas,
isso um mecanismo de controle do prprio banco de dados e como no influenciam tambm no podem ver o
que as outras esto executando.

DURABILIDADE: O que uma transao executar e realizar confirmao, somente uma nova transao pode
desfazer essa alterao.
Geralmente os SGBD so transacionais, so capazes de manter a integridade dos dados e elas nunca finalizam
em um estado intermedirio, ou so executadas at o final com sucesso ou desfeitas por alguma falha. Em um
sistema ideal as transaes deveriam garantir todas as propriedades citadas acima, ACID.

5. TIPOS DE DADOS

NUMRICO

Inteiros (exato) TINYINT, SMALLINT , MEDIUMINT, INTEGER OU INT, BIGINT.


Ponto fixo (valor exato) DECIMAL, NUMERIC.
Ex: Salrio DECIMAL (5,2)
O SQL padro exige que o DECIMAL(5,2) seja capaz de armazenar qualquer valor com cinco dgitos
e dois decimais, de modo que os valores que podem ser -999.99 na faixa de salary variam de -
999.99 a -999.99 .
Ponto flutuante (valor aproximado) - FLOAT( M , D ) ou REAL( M , D ) ou DOUBLE PRECISION( M , D )
BIT- BIT( M )

DATA E HORA

DATE formato 'YYYY-MM-DD' O intervalo suportado '1000-01-01' para '9999-12-31'.


DATETIME formato 'YYYY-MM-DD HH:MM:SS' . O intervalo suportado '1000-01-01 00:00:00' para
'9999-12-31 23:59:59' .
TIMESTAMP intervalo '1970-01-01 00:00:01' UTC para '2038-01-19 03:14:07' UTC.
TIME 'HHH:MM:SS' para valores de horas grandes, varia de '-838:59:59' para '838:59:59'. Pode ser
usado no apenas para representar uma hora do dia, mas tempo decorrido ou um intervalo de
tempo entre dois eventos.
YEAR formato 'YYYY, com um intervalo de 1901 a 2155 ou 0000.

STRINGS

CHAR(N), VARCHAR (N) cadeias de caracteres, so semelhantes, mas diferem na forma como so
armazenados e recuperados.
BINARY (N), VARBINARY(N) so semelhantes a CHAR e VARCHAR , exceto que eles contm cadeias binrias
em vez de cadeias de caracteres.
BLOB sequncias de bytes um objeto grande binrio que pode conter uma quantidade varivel de dados.
Seus tipos diferem apenas de seu comprimento mximo. TINYBLOB , BLOB , MEDIUMBLOB e LONGBLOB
TEXT similar ao BLOB, porm com sequncia de caracteres TINYTEXT , TEXT , MEDIUMTEXT e LONGTEXT .
ENUM apenas um valor escolhido. String cujo valor escolhido vem de uma lista de valores permitidos
separados por vrgula.

CREATE TABLE camisas (


Nome VARCHAR (40),
Tamanho ENUM ('x-small', 'small', 'medium', 'large', 'x-large')
);

SET tambm um tipo de dado do tipo lista, mas pode armazenar mais de uma opo da lista.
JSON

A partir do MySQL 5.7.8, o MySQL suporta o tipo JSON que permite um acesso eficiente aos dados nos
documentos JSON (JavaScript Object Notation).

ESPACIAIS

GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON,


GEOMETRYCOLLECTION.

6. ALGUNS OPERADORES E ALGUMAS FUNES

OPERADORES
Nome Descrio
AND, && E LGICO
OR, || OU LGICO
:= ATRIBUI VALOR
(NOT) BETWEEN ... AND... VERIFICA SE UM VALOR EST NO INTERVALO
=,<=>, IGUAL, OPERADOR IGUAL PARA NULL
>,>=,<, <= MAIOR,MAIOR OU IGUAL, MENOR, MENOR OU IGUAL
!=,<> NO IGUAL
+,-,*, /, DIV SOMA, SUBTRAO, MULTIPLICAO, DIVISO, DIVISO DE INTEIROS
(NOT) IS NULL TESTE DE VALOR NULL

OPERADORES DE STRING

NOME DESCRIO
CONCAT(STR1,STR2,...) RETORNA UMA STRING CONCATENADA
CONCAT_WS(SEP, STR1,STR2,...) RETORNA UMA STRING CONCATENADA COM SEPARADOR
INSERT(STR, POS,LEN,NEWSTR) INSERE UMA STRING COM AO TAMANHO E POSIO INDICADA
INSTR(STR, SUBSTR) RETORNA A POSIO DA PRIMEIRA OCORRNCIA DE SUBSTR EM STR
LENGTH(STR) RETORNA O TAMANHO DA STRING
TRIM(STR) REMOVE ESPACOS EM BRANCO NA STRING
STRCMP(S1,S2) COMPARA DUAS STRINGS
(NOT)LIKE COMPARA POR CARACTER - Retorna 1( TRUE) ou 0( FALSE).
REPLACE(STR1,STR2) SUBSTITUI A OCORRNCIA DE STR1 POR STR2

OBS.
possvel combinar o operador LIKE com caracteres de escape.
\% qualquer nmero de caracteres ou \_ exatamente um caracter

Se voc no especificar o \ o mySQL assume a existncia dele:


select 'david' like '%davi%'; retorna 1
select 'david' like '%davi'; retorna 0

Ateno!
Para procurar \n, especifique-a como \\n.
Para procurar \, especifique-a como \\\\;

IN, BETWEEN, LIKE, REGEXP


OPERADOR IN
LISTA DE NMEROS ...WHERE terms_id [NOT] IN(1,2,3);

LISTA DE STRINGS ... WHERE estado [NOT] IN('PE', 'BA', 'CE', 'BH');

SUBQUERY ... WHERE estado IN (select nome_estado from estados );

FUNES

FUNES AGREGADAS MAIS COMUNS (GROUP BY)

FUNO DESCRIO
AVG() VALOR MDIO
COUNT() CONTAGEM DE LINHAS
COUNT(DISTINCT) CONTAGEM DE VALORES DIFERENTES
MAX() VALOR MXIMO
MIN() VALOR MNIMO
SUM() SOMA

FUNES DE FLUXO DE CONTROLE

FUNO DESCRIO
CASE CASE OPERADOR
IF() CONSTRUTOR IF/ELSE
IFNULL() NULL IF/ELSE
NULLIF() RETORNA NULL SE EXPR1=EXPR2

FUNES DE DATA E HORA

FUNO DESCRIO
NOW() RETORNAR A DATA E A HORA ATUAIS
DAYNAME() RETORNA O DIA DA SEMANA
DATEDIFF() SUBTRAIR DUAS DATAS
PERIOD_ADD ADICIONE UM PERODO A UM ANO-MS
PERIOD_DIFF DEVOLVE O NMERO DE MESES ENTRE PERODOS
SEC_TO_TIME CONVERTE SEGUNDOS PARA 'HH: MM: SS'

6. EXECUTANDO INSTRUES SQL A PARTIR DE UM ARQUIVO

ARQUIVO DE TEXTO - possvel colocar suas declaraes SQL em um arquivo e, em seguida, dizer ao mysql que
leia esse arquivo. shell> mysql db_name < text_file
Se voc colocar a declarao USE db_name como a primeira declarao no arquivo, no necessrio especificar
o nome do banco de dados na linha de comando:
shell> mysql < text_file

ARQUIVO DE SCRIPT - Se voc j est executando mysql , voc pode executar um arquivo de script SQL: mysql>
source file_name
mysql> \. file_name

s vezes voc pode querer que seu script exiba informaes de progresso para o usurio.
SELECT '<info_to_display>' AS ' ';

7. INSTRUES SQL

a. CREATE DATABASE

CREATE DATABASE IF NOT EXISTS lojapet


CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

A CHARACTER SET especifica o conjunto de caracteres padro do banco de dados. A COLLATE especifica o
agrupamento de banco de dados padro. Por padro o charset e collate definido latin1, latin1_swedish_ci.

b. CREATE TABLE

CREATE TABLE IF NOT EXISTS client (


id int(10) NOT NULL auto_increment,
name VARCHAR(20) NOT NULL,
address VARCHAR(20) DEFAULT NULL,
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS clienteVip(


Id int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS pet (


id int(10) NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
owner int(10) NOT NULL,
species VARCHAR(20) NOT NULL,
sex CHAR(1) NOT NULL CHECK (sex=F OR sex=M),
birth DATE NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (name,species, owner),
FOREIGN KEY (owner) REFERENCES client(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;
ISSO E O MESMO QUE INDEX

CONSTRAINTS
NOT NULL - Garante que uma coluna no pode ter um valor NULL
UNIQUE - Garante que todos os valores de uma coluna sejam diferentes
PRIMARY KEY - Uma combinao de um NO NULL e UNIQUE. Identifica exclusivamente cada linha em
uma tabela
FOREGEIN KEY - Identifica exclusivamente uma linha / registro em outra tabela
CHECK - Garante que todos os valores de uma coluna satisfaam uma condio especfica
DEFAULT - Define um valor padro para uma coluna quando nenhum valor especificado
INDEX - Use para criar e recuperar dados do banco de dados mais rapidamente

c. ALTER TABLE - CONSTRAINT

ADD CONSTRAINT ALTER TABLE pet ADD CONSTRAINT fk_pet


FOREIGN KEY (owner) REFERENCES cliente(id);
DROP CONSTRAINT ALTER TABLE pet DROP CONSTRAINT fk_pet ;

ADD FOREIGN KEY ALTER TABLE pet ADD FOREIGN KEY(owner) REFERENCES client (id);
DROP FOREIGN KEY ALTER TABLE pet DROP FOREIGN KEY(owner) REFERENCES client (id); ?erro?
Use SHOW CREATE TABLE PET;" para descobrir o nome da constraint da chave estrangeira gerada pelo
mysql, em seguida use o mesmo comando do DROP CONSTRAINT.

d. INSERT
Sem passar as colunas
INSERT INTO client VALUES (1,'maria', 'rua do sol n10' );

Passando as colunas
INSERT INTO client (id,name,address) VALUES (1,'maria', 'rua do sol n10');

Caso esteja duplicado faz update


INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

ALTER TABLE client ADD COLUMN vip_id int(10);

Fazendo insert a partir de um select.


INSERT INTO clientVip (vip_id)
SELECT id
FROM client
WHERE name like 'maria';

INSERT INTO pet VALUES (1, 'PANDORA', 1,'GATO', F, '2010-05-15');


INSERT INTO pet VALUES (2, 'AFRICANO', 1,'GATO', 'F', '2010-08-15');
INSERT INTO pet VALUES (3, 'LILICA', 3,'DOG', 'F', '2012-05-15');
INSERT INTO pet VALUES (4, 'DINO', 3,'DINOSSAURO', 'M', '2017-05-15');
INSERT INTO pet VALUES (5, 'MINGAU', 1,'GATO','M', '2010-05-15');

e. REPLACE
- Tente inserir a nova linha na tabela
- Embora a insero falhe porque ocorre um erro de chave duplicada para uma chave primria ou ndice
exclusivo:
Exclua da tabela a linha conflitante que possui o valor da chave duplicada
Tente novamente inserir a nova linha na tabela

REPLACE INTO test VALUES (1, 'Primeiro', '2014-08-20 18:47:00');


REPLACE INTO test VALUES (1, 'segundo', '2014-08-20 18:47:42');

Apenas o registro com campo "segundo" ser armazenado.

f. UPDATE
UPDATE table
SET column = expr1
WHERE col = expr 2;

UPDATE client SET address ='rua da alegria n20', name='Maria do Socorro' WHERE id =1;

g. DELETE
SINTAXES
DELETE table1, table2 ou DELETE FROM table1, table2
FROM table_ref USING table_ref
WHERE condition WHERE condition

Exemplo que exclui o registro mais antigo da tabela de log do usurio jcole.
DELETE FROM table_log WHERE user = 'jcole'
ORDER BY timestamp_column LIMIT 1;

DELETE FROM client WHERE id <> 1 ORDER BY name LIMIT 1;


Executa o where, ordena a tabela client pela coluna name e exclui o primeiro nome da lista.

h. SELECTS

Sintaxe: create table user ( Insert into user values (1,'maria do carmo',900.00);
SELECT id int(10) auto_increment, Insert into user values(2,'maria do socorro',800.00);
FROM name varchar(20), Insert into user values(3,'maria',100.00);
WHERE salary decimal(5,2), Insert into user values(4,'joo',100.00);
GROUP BY primary key (id) Insert into user values(5,'jos',100.00);
ASC DESC )ENGINE=InnoDB DEFAULT Insert into user values(6,'jos',900.00);
HAVING CHARSET=utf8mb4
ORDER BY AUTO_INCREMENT=1 ;
ASC DESC
LIMIT

GROUP BY HAVING
No use having para ITENS que deveriam est dentro do WHERE. A clusula having refere-se a funes
agregadas. A consulta abaixo retorna os users com maior salrio cujo valor seja maior que 500 ordenados de
forma crescente por nome.

SELECT name, MAX(salary)


FROM user name Max(salary)
GROUP BY name Maria do 800,00
HAVING MAX(salary) > 500.00 socorro
Maria do carmo 900,00
ORDER BY MAX(salary) ASC;
Jos 900,00

UNION

Combina vrios selects em um nico conjunto de resultados. Por padro as linhas duplicadas so removidas do
resultado, logo o termo distinct indiferente. Use o termo ALL para receber inclusive as linhas duplicadas.

SELECT ...
UNION [ALL | DISTINCT] SELECT ...
[UNION [ALL | DISTINCT] SELECT ...]

Exemplos:

(SELECT name N FROM client) Parntese facultativo.


UNION ALL No use ORDER BY para declaraes individuais.
(SELECT name N FROM user ) Fornea um alias de coluna no primeiro select e o use no order by
ORDER BY N ASC; que ordena o resultado final.
JUNES

RIGHT JOIN
LEFT JOIN

INNER JOIN

LEFT EXCLUDING JOIN RIGHT EXCLUDING JOIN

FULL OUTER JOIN

FULL OUTER
EXCLUDING JOIN

TOMEMOS COMO EXEMPLO AS TABELAS DE CLIENTES (A) E DE PETS (B)


INNER JOIN - TODOS OS CLIENTES QUE POSSUEM PETS OU TODOS OS PETS QUE POSSUEM CLIENTES.

LEF JOIN TODOS OS CLIENTES QUE POSSUEM E NO POSSUEM PETS

RIGHT JOIN - TODOS OS PETS QUE POSSUEM E NO POSSUEM CLIENTES.


LEFT EXCLUDING JOIN TODOS OS CLIENTES QUE NO POSSUEM PETS.

RIGHT EXCLUDING JOIN TODOS OS PETS QUE NO POSSUEM CLIENTES. ERRADO WHERE C.ID IS NULL

FULL OUTER JOIN


TODOS OS CLIENTES QUE NO POSSUEM PETS +
TODOS OS CLIENTES QUE POSSUEM PETS +
TODOS OS PETS QUE NO POSSUEM CLIENTE.
NO MYSQL faa um LEFT OUTER JOIN UNIO com RIGHT OUTER JOIN.

FULL OUTER EXCLUDING JOIN


TODOS OS CLIENTES QUE NO POSSUEM PETS + TODOS OS PETS SEM CLIENTES.
SUBQUERY
(IN, ANY, SOME)

(IN lista)Trazer os dados dos clientes que possuem gatos como pets.

SELECT * FROM client WHERE id IN (SELECT owner FROM pet WHERE species = 'GATO');

(ANY QUALQUER VALOR) Trazer os dados dos clientes que possuem pets nascidos 15/05/2017.

SELECT * FROM client WHERE id= ANY (SELECT owner FROM pet WHERE birth='15-05-2017' );

(SOME - ALGUM VALOR) H ALGUM S1 EM T2 QUE NO SEJA IGUAL AO S1 EM T1?


SELECT s1 FROM t1 WHERE s1 <> SOME (SELECT s1 FROM t2);

EXISTS OR NO EXISTS

ALL

View

Você também pode gostar