Escolar Documentos
Profissional Documentos
Cultura Documentos
SQL
*Parâmetros para a construção do banco e tabelas*
*Tipos de Dados*
- not null (constraint que não permite que o dado seja nulo)
- default 'algum_valor_pre_estabelecido'
Ex:
- enum ('M','F')
- unique: não permite dois dados iguais (exemplo: dois nomes iguais)
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 1/28
21/04/2023, 17:50 Anotações - Evernote
Ex:
*Anotações*
- constraint (parâmetro)
Ex:
- Crases entre os nomes dos campos da tabela, possibilitam campos com acentos e/ou espaços
- O que está entre aspas são dados, e o que não está são constraints
- Coluna = campos/atributos
- Drop como comando (drop table/drop database) apaga tabela, banco de dados ou índice
- * (asterisco) significa "todas as colunas", ou seja, todos os campos da tabela com os dados.
InnoDB é uma ENGINE (máquina de criação de tabelas): mecanismo criado por uma empresa chamada
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 2/28
21/04/2023, 17:50 Anotações - Evernote
- InnoDB é uma ENGINE (máquina de criação de tabelas): mecanismo criado por uma empresa chamada
InnoBase e que hoje pertence a Oracle e permite a criação de tabelas com características; a mais
importante é: suporte às chaves estrangeiras e a compatibilidade com as 4 regras de transação.
- Existem outros mecanismos (engines) como: MyISAM (Não dá suporte as 4 regras(ACID)) e XtraDB
- SAVEPOINT A: Comando para salvar um ponto específico do código (se houver algum erro, é possível
dar rollback)
- Lock: Trava o recurso para que não ocorram várias transações ao mesmo tempo.
* Menor nível de trava: registro por inteiro
* É possível travar a nível de tabela
- 4 Principais regras de transação (ação que o banco de dados pode executar) - ACID:
A: Atomicidade: Não pode ser dividade em subtarefas (ou tudo acontece, ou nada é
considerado)
C: Consistência: O banco de dados consistente deve estar consistente após uma transação
(sem falhas)
I: Isolamento: Quando duas transações ocorrem de forma paralela, devem ocorrer como se
estivessem isoladas (lock)
D: Durabilidade: Uma transação deve durar o tempo que for necessário
*Chave primária*
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 3/28
21/04/2023, 17:50 Anotações - Evernote
*Chave estrangeira*
Ex: Se a chave primária é int, o dado da chave estrangeira deverá permanecer int
* Sendo assim, a nova entidade recebe campos que organizam todos os dados das atividades, incluindo
as duas chaves primárias (que viram chaves estrangeiras) das duas entidades iniciais
Ex:
Um produto pode ser comprado por vários clientes * COMPRAR * Um cliente pode comprar vários
produtos
/ Cliente \ (n) (n) / Produto \
cliente1 produto1
cliente2 produto2
cliente3 produto3
cliente4 produto4
- Sendo assim, é criada uma nova tabela com chave primária própria e com as chaves primárias das duas
primeiras (que viram chaves estrangeiras) e mais alguns dados para caracterizar a transação
na estrutura
COMANDOS DE TABELA
COMANDOS GERAIS
- Default (id) para continuar com a regra auto incrementar, exemplo (id, nome) = (DEFAULT, 'Izabelle') ou
ocultar o "id", e partir para o próximo campo.
MOSTRA OS DADOS CADASTRADOS NA TABELA
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 6/28
21/04/2023, 17:50 Anotações - Evernote
describe/desc nome_da_tabela;
APAGA TABELA (ESTRUTURA) E REGISTROS (DADOS)
APAGAR LINHA/LINHAS
APAGAR TODOS OS DADOS DA TABELA
truncate nome_da_tabela;
********************************************************************************************************
******
SELECT (SELECIONA DADOS)
********************************************************************************************************
******
ORDENA A COLUNA
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 7/28
21/04/2023, 17:50 Anotações - Evernote
Ex:
Ex:
Ex:
Tabela Cursos
Ano Nome
2010 - PHP
2011 - Java
2013 - CSS
2013 - Algoritmos
- A primeira ordenação foi feita pelo ano, e a segunda pelos nomes dos cursos (Algoritmos e CSS):
Ano Nome
2010 - PHP
2011 - Java
2013 - Algoritmos
2013 - CSS
- Se desejar ordená-la:
- É possível também escolher as colunas que serão exibidas (ao invés da tabela inteira) se tiverem o valor
específico.
Ex:
- Termos utilizados:
1 b t ( t )
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 9/28
21/04/2023, 17:50 Anotações - Evernote
1 - between (entre)
* O parâmetro é uma faixas de valores
Ex:
2 - in
* O parâmetro é feito por valores específicos
Ex:
(2014 e 2016)
3 - not in
* Onde não for igual aos valores determinados
select * from nome_da_tabela
where coluna not in (valor1, valor2, ...);
4 - and
* Aumenta o número de condições para que as colunas sejam exibidas
* Todas as condições precisam ser verdadeiras
Ex:
5 - or
* Aumenta o número de condições para que as colunas sejam exibidas
* Pelo menos uma das condições precisam ser verdadeiras
Ex:
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 10/28
21/04/2023, 17:50 Anotações - Evernote
6 - is null
* Onde a coluna for nula
7 - like
* "Igual"
Ex:
Tabela Cursos
Nome Carga
PHP 40
Java 40
CSS 5
Algoritmos 10
POO 5
Carga
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 11/28
21/04/2023, 17:50 Anotações - Evernote
Carga
5
10
40
Ex:
Tabela Cursos
Nome Carga
PHP 40
Java 40
CSS 5
Algoritmos 10
POO 5
-----------------
Carga
5
10
40
- Com a função COUNT, podemos ver o total de registros em cada categoria obtida acima (5, 10 e 40),
caso contrário, o "agrupamento" terá o mesmo resultado que a "distinção"
select carga, count(*) from cursos (count(*): refere-se ao campo, pode ser "(nome)" que se refere aos
cursos)
group by carga;
Carga Count()
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 12/28
21/04/2023, 17:50 Anotações - Evernote
5 2
10 1
40 2
select * from nome_da_tabela where nome_do_campo for IGUAL, DIFERENTE, MAIOR, MENOR, MAIOR E
IGUAL ou MENOR E IGUAl valor_especifico;
Ex 1:
Ex 2:
- Mostrará apenas datas onde foram vendidos mais de 3 produtos do tipo 200
SELECT DUPLO
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 13/28
21/04/2023, 17:50 Anotações - Evernote
Ex:
Tabela Cursos
-----------------------------
1) 2016 2
2017 1
4) Exibirá a carga de 40 com uma ocorrência (2016), já que esse valor da carga é maior que a média (20)
de todas as cargas dos cursos.
--------------------------------------------------------------------------------------------------------------
FUNÇÕES
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
UNIÃO ENTRE CONSULTAS (UNION)
--------------------------------------------------------------------------------------------------------------
Ex 1:
----------------
* Para simplificar e exibir o que significa cada coluna, podemos usar um campo calculado e dar nome a
ele:
Ex 2:
----------------
* UNION ALL
Ex 3:
----------------
--------------------------------------------------------------------------------------------------------------
BUSCANDO PALAVRAS COM POSICIONAMENTOS DE LETRAS ESPECÍFICAS (LIKE - NOT LIKE)
--------------------------------------------------------------------------------------------------------------
select nome_da_tabela
where nome like '%a'
select nome_da_tabela
where nome like 'a%'
select nome_da_tabela
where nome like '_a%'
select nome_da_tabela
h lik '[BA]%'
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 16/28
21/04/2023, 17:50 Anotações - Evernote
where nome like '[BA]%'
select nome_da_tabela
where nome like '%[BA]'
select nome_da_tabela
where nome like '_%[BA]'
select nome_da_tabela
where nome not like 'a%'
********************************************************************************************************
******
ALTER TABLE (ALTERA TABELA)
********************************************************************************************************
******
ADICIONA COLUNA
APAGA COLUNA
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 17/28
21/04/2023, 17:50 Anotações - Evernote
MODIFICA O FORMATO DE DADO E AS CONSTRAINTS QUE A COLUNA RECEBE
Ex:
modify nome_da_coluna not null default ''; (campos adicionados depois da construção da tabela ficam
no formato NULL (sem dado), por isso é necessário colocar "default" depois de afirmar que não podem
ser nulos, assim apenas ficarão vazios esperando que dados sejam adicionados ao campo novo.)
MODIFICA O FORMATO DE DADO, AS CONSTRAINTS E RENOMEIA A COLUNA
Ex:
RENOMEIA TABELA
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 18/28
21/04/2023, 17:50 Anotações - Evernote
RENOMEIA UM CAMPO COMO CHAVE PRIMÁRIA DEPOIS DA CRIAÇÃO DA TABELA
********************************************************************************************************
******
UPDATE (ATUALIZA)
********************************************************************************************************
******
RENOMEAR DADOS DE UMA LINHA
update nome_da_tabela
set campo_da_tabela = 'novo_dado'
where nome_chave_primaria = 'numero_escolhido';
RENOMEAR MAIS DE UM DADO EM UMA LINHA
update nome_da_tabela
set campo_da_tabela = 'novo_dado', campo_da_tabela = 'novo_dado'
where nome_chave_primaria = 'numero_escolhido';
RENOMEAR DADOS DE VÁRIAS LINHAS AO MESMO TEMPO
update nome_da_tabela
set campo_da_tabela = 'novo_dado', campo_da_tabela = 'novo_dado'
where campo_da_tabela = 'dado_especifico';
- Se houver no fim do comando "limit 1" significa que a mudança só ocorrerá na primeira linha com os
dados especificados.
E
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 19/28
21/04/2023, 17:50 Anotações - Evernote
Ex:
update nome_da_tabela
set campo_da_tabela = 'novo_dado', campo_da_tabela = 'novo_dado'
where campo_da_tabela = 'dado_especifico'
Limit 1;
********************************************************************************************************
******
RELACIONANDO TABELAS
********************************************************************************************************
******
Ex:
Ex:
- Com o comando "desc" veremos que na opção "key" junto a linha "cursopreferido" está marcado o
rótulo "mul" de múltiplas chaves, neste caso, chave estrangeira.
Teste:
- O "cursopreferido" é a chave estrangeira da tabela "alunos", mas também é a chave primária "idcurso"
da tabela "cursos"
- Os dados no campo podem ser alterados diretamente na tabela, mas é necessário finalizar o processo
com o botão inferior direito da tela: APLLY
- Campos só poderão ser apagados se não houverem relação alguma com outro campo ou tabela
********************************************************************************************************
******
JUNÇÕES
********************************************************************************************************
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 21/28
21/04/2023, 17:50 Anotações - Evernote
******
INNER JOIN OU JOIN
********************************************************************************************************
******
Ex:
Ou
- "On" é uma cláusula para o join e funciona para especificar a junção entre a chave primária e
estrangeira
- No exemplo acima, nem precisará mais do campo "cursopreferido" porque a junção já exibirá o nome
do curso ao invés do "id" do curso
Ex:
- Os únicos lugares onde devem estar escritos os nomes das tabelas originais é depois de "from" e de
"join"
********************************************************************************************************
****** LEFT JOIN OU LEFT OUTER JOIN
********************************************************************************************************
******
- LEFT JOIN faz junções de todos os campos, mesmo que não se relacionem
Ex:
NOME NOME
Ana MySQL
Fabiana MySQL
Paulo
Maria C
Carlos JAVA
- Mostra todos os alunos, mesmo aqueles que não possuem curso preferido como o PAULO
- Os cursos que aparecerão, estarão relacionados ao aluno que escolheu como preferido
********************************************************************************************************
******
RIGHT JOIN OU RIGHT OUTER JOIN
********************************************************************************************************
******
- RIGHT JOIN faz junções de todos os campos, mesmo que não se relacionem
Ex:
NOME NOME
Ana MySQL
Fabiana MySQL
HTML5
Maria C
Carlos JAVA
- Mostra todos os cursos, mesmo aqueles que não possuem um aluno que preferiu o curso como
HTML5
- Os alunos que aparecerão, serão aqueles que escolheram o curso como preferido
********************************************************************************************************
******
INNER JOIN COM VÁRIAS TABELAS
********************************************************************************************************
******
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 24/28
21/04/2023, 17:50 Anotações - Evernote
- Inserindo registros:
- Junção de resultados:
1 - Seleciona para exibição: campo "nome" da tabela "alunos" e campo "nome" da tabela "cursos"
(tabela "alunos" ganha o apelido "a")
3 - Faz junção do campo "idaluno" da tabela "alunos" com o campo "idaluno" da tabela
"aluno_assiste_curso"
5 - Faz junção do campo "idcurso" da tabela "cursos" com o campo "idcurso" da tabela
"aluno_assiste_curso"
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 25/28
21/04/2023, 17:50 Anotações - Evernote
- Exemplo de exibição:
nome(aluno) nome(curso)
Ana MySQL
Ana PHP
Beto Java
Camila CSS3
--------------------------------------------------------------------------------------------------------------
********************************************************************************************************
******
PERMITIR A EDIÇÃO (RENOMEAÇÃO DE DADOS/APAGAR DADOS) DE VÁRIAS LINHAS AO MESMO
TEMPO *PERIGOSO*
********************************************************************************************************
******
1 - Edit
2 - Preferences
3 - Sql editor
4 - Desmarcar o check box "Save updates (atualizações seguras)"
********************************************************************************************************
******
BACKUP MySQL (DUMP)
********************************************************************************************************
******
* Gerar Dump
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 26/28
21/04/2023, 17:50 Anotações - Evernote
1 - Server
2 - Data Export
5 - Tipos de exportação:
a) Exportação do projeto inteiro
b) Exportação de um arquivo único (Export to Self-Contained File)
* Marcar opção "INCLUDE CREATE SCHEMA"
6 - Start Export
* Abrir Dump
1 - Server
2 - Data Import
4 - Usuário/senha
5 - Start Import
********************************************************************************************************
******
********************************************************************************************************
******
* Console MySQl
- WampServer
- MySQL
- Console MySQl
- usuário: (root)
- password: (colocar senha do servidor)
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 27/28
21/04/2023, 17:50 Anotações - Evernote
********************************************************************************************************
******
* PHPMyAdmin
- WampServer
- PHPMyAdmin
* Gerar Dump
1 - Casinha
2 - Exportar
3 - Modo rápido ou personalizado
https://www.evernote.com/client/web?login=true#?b=5e76cfdd-de69-479e-8caa-c0b802aaa996&n=0e7740ea-5c5d-4423-841d-cac9a500fc59& 28/28