Buscar

Banco de Dados SQL

Prévia do material em texto

Banco de Dados B7WEB
O PhpMyadmin é um tipo de banco de dados que usa SQL que vem junto ao wamp quando é bixado no computador, para acessar basta digitar:
http
:
//localhost/phpmyadmin/
Em SQL os nomes dos comandos é sempre interessante colocar em letras maiusculas, o programa não deixara de funcionar caso seja colocado em minusculo, porém é uma "regra" colocar em maiusculo. E os nomes das "variaveis" é colocado em minusculo, terminando sempre com ";". Para criar um banco de dados em PhpMyAdmin basta colocar:
CREATE
 
DATABASE
 nomedavariavel
;
Há tambem outra maneira de criar um banco de dados que é indo até o comando base de dados e então escolhendo um nome do banco de dados e em seguida escolhendo o tipo UTF-8-GENERAL-CI.
O comando SELECT
O select no SQL é o comando para pegar uma informação armazenada na tabela, assim usa-se como no exemplo:
SELECT
 nome
,
 email 
FROM
 usuarios
;
Onde nome e email são duas variaveis que armazenam o nome e o email do usuario que logar, e usuarios é o nome da tabela onde estão essas informações. Para selecionar tudo que esta dentro do banco de dados usa-se o comando:
SELECT
 
*
 
FROM
 usuarios
;
O asterisco signi៯ca que estou selecionando tudo dentro da tabela.
O comando INSERT
Para inserir dados dentro de uma tabela usando a linha de código usa-se o comando:
INSERT
 
INTO
 nome
,
 e_mail 
FROM
 usuarios
;
Sendo que insert signi៯ca inserir e into é dentro ou seja inserir dentro de nome, e_mail que são as variaveis que foram cadastradas nas tabelas, from é igual ao select, ou seja o comando inteiro seria: inserir dentro de nome, e_mail dentro da tabela usuarios.
É possivel inserir dados dentro de uma tabela de uma outa forma como:
INSERT
 
INTO
 usuarios 
(
nome
,
 e_mail
)
 
VALUES
 
(
'pedro'
,
 
'pedroe8@gmail.com'
)
;
Esta nova forma é parecida coma antiga mudando apenas no modo em que é escrito pois a mesma tem a função igual. Porem o código acima é um código universal, sendo usado em varios tipos de banco de dados.
O comando UPDATE
Para usar este comando que atualiza uma parte da tabela escolhida pelo programador, é usado o comando:
UPDATE
 usuarios 
SET
 senha 
=
 
'1234'
 
WHERE
 nome 
=
 
'Pedro'
;
Assim estou falando para o programa que quero atualizar a tabela usuarios mudando a senha para 1234 onde o nome na linha for Pedro, sendo SET o valor que será modi៯cado e WHERE onde será modi៯cado.
O comando DELETE
O comando delete é usado para deletar uma determinada linha, tem sua sintaxe como:
DELETE
 
FROM
 usuarios 
WHERE
 id 
=
 
'1'
;
O comando acima esta executando a seguinte função, deletar na tabela usuarios onde o id for 1, ou seja todas as informações contidas dentro do id 1 será descartado.
Filtrando com WHERE
Para ៯ltrar com WHERE no select usa-se o comando:
SELECT
 
*
 
FROM
 usuarios 
WHERE
 id 
=
 
1
;
Assim estou pedindo para o banco de dados me mostrar todas as informações da tebala usuarios onde o id for igual a 1, logo aparecerá apenas as informações do usuarios 1.
Para fazer uma busca de um email usando o WHERE, basta trocar o id = 1 por email = 
'pedro.penha.martins@gmail.com'; por exemplo, é possivel usar tambem o comando para mostrar dois usuarios como por exemplo mostrar apenas o usuarios com id 1 e id 2 ou email tal e senha tal, usando o comando:
SELECT
 
*
 
FROM
 usuarios 
WHERE
 
(
email 
=
 
'pedro.penha.martins@gmail.com'
 
&&
 senha 
=
 
'122345'
)
 
||
 
(
email 
=
 luiz_nonis
@gmail.com
' && senha = '
9876
'
)
;
Portanto com o comando acima, apenas irá aparecer as informações dos usuarios com o email pedro.penha.martins e luiz_nonis@gmail.com caso a senha dos dois estejam corretas, caso a senha de um usuario não esteja correta apenas ira aparecer a informação do usuario que esteja com as informações de email e senha corretas. LIKE, BETWEEN e IN
O comando like é um comando que completa o nome que for digitado por exemplo, sua sintaxe é:
SELECT
 
*
 
FROM
 usuarios 
WHERE
 nome 
LIKE
 
'Pe%'
;
O simbolo de porcentagem é como se estivesse dizendo ao SQL que tudo após Pe poderá ser ignorado, assim pegando as informações de todos os nomes que comecessem com Pe. É possivel fazer o mesmo comando para o começo do nome por exemplo, basta mudar o mod de lugar como no exemplo:
SELECT
 
*
 
FROM
 usuarios 
WHERE
 nome 
LIKE
 
'%dro'
;
Assim pegando todos os nomes que terminem com dro dentro do banco de dados, é possivel por exemplo em um email, ៯ltrar por apenas emails sendo gmail:
SELECT
 
*
 
FROM
 usuarios 
WHERE
 email 
LIKE
 
'%@gmail%'
;
Sendo neste comando preciso colocar o mod para complementar o inicio da frase e o ៯m dela.
O comando BETWEEN é usado para procurar datas indo de um determinado ano até outro, usando o seguinte comando:
SELECT
 
*
 
FROM
 usuarios 
WHERE
 data_nascimento 
BETWEEN
 
2016
-
12
-
01
 
AND
 
2017
-
12
-
01
;
Assim o comando acima irá pegar informações dos usuarios nascidos no ៯m de 2016 até o ៯m de 2017, o comando é muito usado para procurar datas.
O comando IN é usado para simpli៯car o comando:
SELECT
 
*
 
FROM
 usuarios 
WHERE
 id 
=
 
1
 
||
 id 
=
 
2
;
Ficando então:
SELECT
 
*
 
FROM
 usuarios 
WHERE
 id 
IN
 
(
1
,
 
2
)
;
Os dois comanodos fazem a mesma coisa, mudando apenas a sintaxe e a simplicidade no modo de escrever, tornando mais facil.
Filtrando com HAVING
É possivel criar uma coluna temporaria no banco de dados SQL, colocando o seguinte comando:
SELECT
 
*
,
 
(
id
+
10
)
 
as
 soma 
FROM
 usuarios
;
Fazendo então o SQL criar uma nova tabela denominada soma que irá receber os valores de id + 10, lembrando que este comando não altera os valores em id e sim apenas acrescenta uma nova tabela temporaria no meu banco de dados. Sendo que soma pode ser qualquer nome que o programador quiser. O comando WHERE e o comando HAVING são parecidos com uma diferença que é, quando se cria uma nova coluna temporaria a mesma não é possivel ៯ltrar usando WHERE, portanto usa-se o comando HAVING:
SELECT
 
*
,
 
(
id
*
10
)
 
as
 soma 
FROM
 usuarios 
HAVING
 soma 
<
 
11
;
O HAVING primeiro processa todo o banco de dados e depois ele ៯ltra, o WHERE ៯ltra antes de computar tudo, ou seja se o WHERE for id = 1 o WHERE ja vai direto no id 1, ja o HAVING vai procurar o id 1 depois de processar todo o banco de dados.
ORDER BY e LIMIT
Para ordenar uma coluna em ordem crescente ou decrescente, usa-se o comando:
SELECT
 
*
 
FROM
 usuarios 
ORDER
 
BY
 data_nascimento 
ASC
;
Caso queira deixar de forma crescente basta colocar, ORDER BY data_nascimento ASC e para colocar de modo decrescente usa-se o comando DESC.
O LIMIT busca o limite de exibição que o programador quer, ou seja se eu quero mostras apenas os dois primeiros faz-se:
SELECT
 
*
 
FROM
 usuarios 
LIMIT
 
0
,
 
1
;
Assim mostrando apenas os usuarios com id 1 e 2, é colocado como 0, 1 pois o mesmo trabalha como um vetor, comaçando de 0.
É possivel unir o LIMIT com o ORDER BY, fazendo o mesmo ៯car ordenado em crescente ou decrescente e ao mesmo tempo tendo um limite de exibição de tantos IDs.
GROUP BY
Para adicionar uma contgem é uado o comando:
SELECT
 
COUNT
(
*
)
 
as
 contagem 
FROM
 usuarios
;
Assim adicionando uma nova tabela contendo as informações de contagem, é melhor visto para o comando:
SELECT
 
COUNT
(
*
)
 
as
 contagem
,
 faixa 
FROM
 usuarios 
GROUP
 
BY
 faixa
;
Onde GROUP BY agrupa a coluna faixa, criando então uma coluna de contagem que conta quantas pessoas existem com a faixa x e quantas existem com a faixa y no meu banco de dados.
Relacionamento de tabelas
É tido como tipos de relacionamento o tipo 1:N que signi៯ca um pra muitos, depois deste, existe o relacionamento 1:1 ou seja um item esta relcionado apenas com um outro item, e então tem-setambem N:N que seria muitos para muitos é muito incomum de aparecer mas pode ser que aconteça. Como por exemplo em uma loja com tenis da cor preta, ou seja temos muitos tenis de cor preta, sendo assim N:N.
No nosso banco de dados é preciso criar uma nova tabela para colocar-se as faixas que foram de៯nidas nos usuarios anteriormente, logo, se na nova tabela tivermos o ID 1 então a faixa 1 será diretamente relacional, e o ID 2 será diretamente relacional com a faixa 2 da tabela usuarios, assim criando um tipo de relacionamento do tipo 1:N sendo que o 1 seriam as tabelas de salario e N seriam os usuarios com a faixa 1 ou 2 que se relacionam com os IDs da tabelas de valores.
Consulta avançada com JOIN
Quando tem-se mais de uma tabela dentro de um banco de dados usa-se para chamar ela no SELECT o comando:
SELECT
 usuarios
.
nome
,
 valores
.
titulo 
FROM
 usuarios
;
Para especi៯car que estou pegando o valor de usuarios na variavel nome.
INNER JOIN
O inner join faz a junção de uma tabela com a outra, por exemplo na tabela acima tinham-se a coluna faixa que dava um numero de apenas 1 digito em que será ៯ltrado em uma nova tabela a faixa salarial de tal pessoa, então usa-se no select da seguinte forma:
SELECT
 usuarios
.
nome
,
 valores
.
titulo 
FROM
 usuarios 
INNER
 
JOIN
 valores 
ON
 valores
.
id 
=
 
usuarios
.
faixa
;
Em que usuarios.nome é o programador dizendo ao SQL para ele ir na tabela usuarios e na coluna nome para pegar essas informações, e então valores.titulo é o programador dizendo a tabela valores para pegar as informações da coluna titulo e então entra-se o INNER JOIN pegando a tabela valores e ON é a junção da tabela valores no seu id com a faixa do usuario, ou seja, no ID 1 será a faixa salarial que entrará de acordo com a faixa descrita na tabela usuarios e assim por diante.
SELECT
 usuarios
.
id
,
 usuarios
.
nome
,
 usuarios
.
email
,
 usuarios
.
data_nascimento
,
 valores
.
titulo 
as
 
faixa 
FROM
 usuarios 
INNER
 
JOIN
 valores 
ON
 valores
.
id 
=
 usuarios
.
faixa
O comando acima esta mostrando completamente todas as informações dentro das tabelas.
LEFT JOIN
Aqui o LEFT JOIN prioriza as informações da tabela da esquerda, ou seja da segunda tabela criada denominada de valores, assim colocando todos os item para ser mostrado, inclusive itens que foram atribuidos na tabela usuarios que na qual não foi atribuido uma faixa existente na tabela valores. Unica coisa que muda no código é:
SELECT
 usuarios
.
nome
,
 valores
.
titulo 
FROM
 usuarios 
LEFT
 
JOIN
 valores 
ON
 valores
.
id 
=
 usuarios
.
f
aixa
;
RIGHT JOIN
Funciona da mesma forma que o LEFT JOIN, porem retornando todos os valores que foram colocados dentro da tabela valores, sem se importar com a relação de ids e faixas da tabela usuarios.
SELECT
 usuarios
.
nome
,
 valores
.
titulo 
FROM
 usuarios 
RIGHT
 
JOIN
 valores 
ON
 valores
.
id 
=
 
usuarios
.
faixa
;
Subconsultas com SubQuery
SELECT
 usuarios
.
nome
,
 
(
select
 valores
.
titulo 
from
 valores 
where
 valores
.
id 
=
 usuarios
.
faixa
)
 
as
 faixa 
FROM
 usuarios
;
Para fazer uma subconsulta usa-se o (select valores.titulo from valores where valores.id = usuarios.faixa) assim o mesmo faz varias subconsultas o que não é muito recomendado por demandar muitos passos para ser concluida.
Criação de funções
Para criar funções no SQL usa-se o comando CREATE FUNCTION NOMEDAFUNCAO(parametros) como no exemplo de uma função de soma a baixo:
CREATE
 
FUNCTION
 SOMAR
(
x 
INT
(
10
)
,
 y 
INT
(
10
)
)
BEGIN
 
DECLARE
 R 
INT
(
10
)
;
 
SET
 r 
=
 x
+
y
;
 
RETURN
 R
;
END
$$
Sendo R um inteiro, para de៯nir o tipo do numero no SQL usa-se o nome da variavel seguida do seu tipo, como por exemplo DECLARE P INT(10) assim dizendo que a variavel P tem tamanho de 10 caracteres ou 10 digitos. As funções ៯cam armazenadas dentro do banco de dados que na qual foram criadas, portanto podendo ser acessado por qualquer tabela.
VIEWS
Uma viwe é uma tabela virtual, uma tabela falsa, para criar uma tabela virtual usa-se a seguinte sintaxe:
CREATE
 
VIEW
 nomedaview 
AS
 
SELECT
 
*
 
FROM
 usuarios 
WHERE
 faixa 
=
 
1
;

Continue navegando