BANCO DE DADOS Aula 4 SQL

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 63

SQL

CASSIO PINHEIRO
Bancos de dados

 O MySQL já vem com dois bancos de


dados criados.
 Para visualizá-los basta executar o
comando
show databases;
Criação de Banco de Dados

 Quando se cria um banco de dados com o MySQL em ambiente Windows, é


criada apenas uma pasta vazia, dentro da qual serão armazenados os arquivos
gerados utilizando os comandos para criar tabelas.
 Como o MySQL trata o banco de dados como um esquema, temos duas opções
de sintaxe para criar um banco de dados:
Mysql> CREATE DATABASE Exemplo;
gfvvvou
Mysql> CREATE SCHEMA Exemplo;
Visualizar Banco de Dados

 Mysql> SHOW DATABASES; [Enter]


 +----------------------------------------+
 | Databases
 +----------------------------------------+
 | information_schema
 | mysql
criados na instalação
 | test do MySQL
 | Exemplo
 +----------------------------------------+
Nomenclatura - banco de dados:

 Máximo 64 caracteres;

 Permitido: letras, números, traços, underlines;

 Proibido: barras e pontos;

 Evitar: acentos e cedilhas.


Excluindo banco de dados

 Ao apagar um banco de dados, todas as tabelas e


dados também serão excluídos.
Mysql> DROP DATABASE Exemplo;
Ou
Mysql> DROP SCHEMA Exemplo;

 Com DROP também podemos usar a clausula IF


EXISTS:
Mysql> DROP DATABASE IF EXISTS Exemplo;
Selecionando

 Podemos ter vários bancos de dados, mas só podemos manipular um por vez.

 Myslq> USE Exemplo;


Dentro do banco de dados

 Bancos de dados: pasta vazia


 Precisamos criar tabelas dentro dele
 Para criar Tabelas precisamos definir sua estrutura = seus campos
 Exemplo: Tabela: Aluno
Campos: RA, nome, email
 Também precisamos definir tipos dos Campos
Tipos de Dados

 No MySQL os tipos de dados são divididos em três grupos:


 Tipos Numéricos
 Tipos de Data
 Tipo de Cadeia

 CPF: 111.222.333-33
Numéricos

 Exatos:
Tipo Bytes De Até
 NUMERIC
TINYINT 1 -128 127
 DECIMAL SMALLINT 2 -32768 32767
 INTEGER MEDIUMI
3 -8388608 8388607
NT
 SMALLINT, entre outros INT ou
4 -2147483648 2147483647
 Aproximados: Integer
BIGINT 8 -9223372036854775808 9223372036854775807
 FLOAT Bit ou
1 Inteiro que pode ser 0 ou 1
Bool
 REAL ou DOUBLE
 DECIMAL ou DEC.
Tipos de Data e Hora

 DATE
 para apenas do v alor da data, sem a parte da hora.
 formato 'YYYY-MM-DD'.
 faixa de '1001-01-01' até '9999-12-31'.
 DATETIME
 para v alores que contém data e a hora.
 formato 'YYYY-MM-DD HH:MM:SS'.
 faixa de '1001-01-01 00:00:00' até '9999-12-31 23:59:59’.
 TIME
 formato 'HH:MM:SS'
 faixa '-838:59:59' até '838:59:59'.
 Hora é grande pois pode ser usado para interv alos de tempo entre dois ev entos. Por exemplo e não só para hora
do dia que seria até 24
Tipos de Cadeia

 CHAR(N)
 caracteres alfanuméricos
 tamanho é fixo e instaurado ao ser criado.
 pode ter de 0 a 255 caracteres.
 Exemplo: endereco CHAR(30);
 Observe que não há acentos nem cedilhas no nome do campo, pois muitos servidores não
acentuam, e sua tabela teria difícil acesso.
Tipos de Cadeia

 VARCHAR(N)
 aloca apenas o espaço necessário para gravação
 CHAR tamanho definido fixo (mesmo que não usado, aquele espaço em disco
é alocado)
 trocamos espaço por velocidade, pois este campo (varchar) é 50% mais lento
que o anterior (char).
 Exemplo: endereco VARCHAR(30);
 Define um campo chamado endereco que pode conter até 30 letras. Se v ocê
preencher apenas duas, o campo não ocupara todos os 30 bytes, mas apenas 2.

Projeto de
Banco de
Tipos de cadeia

 TEXT/BLOB
 para guardar grandes quantidades de caracteres.
 pode conter de 0 a 65535 bytes,
 TEXT não é sensível a letras maiúsculas e minúscula quando uma comparação é
realizada, e o BLOB sim.

 MediumTEXT/MediumBLOB
 Máximo de 16.777.215 caracteres.

 LongTEXT/LongBLOB
 Máximo de 4.294.967.295 caracteres.
Tipos de cadeia

 SET
 permite que o usuário faça uma escolha dado determinado número de opções.
 cada campo pode conter até‚ 64 opções.
 Exemplo:
 curso SET(“informatica", “geomatica") NOT NULL;
 Neste exemplo este campo pode conter apenas os seguintes itens: " "
“informatica“
“geomatica"
“informatica,geomatica"

Projeto de
Banco de
Tabelas DDL

 SQL oferece três instruções para definição do esquema da base de


dados:
 Create Table
 define a estrutura da tabela
 cria a tabela vazia
 Drop Table
 Elimina a tabela da base de dados
 Alter Table
 Permite modificar a definição da tabela

Projeto de
Banco de
Criação de Tabela

Nome da
tabela
mysql> CREATE TABLE teste(

> codigo INT,


> nome CHAR(15),
Tipos dos
> email CHAR(25)); campos

Nome dos
campos

Projeto de
Banco de
DDL e DML

 Data Definition Language (DDL) – Comandos definem estrutura ou esquema do banco


de dados. Exemplos:
 CREATE
 ALTER
 DROP
 RENAME
 Data Manipulation Language (DML) – Comandos gerenciam dados dentro dos objetos
do esquema. Exemplos:
 SELECT,
 INSERT,
 UPDATE,
 DELETE

Projeto de
Banco de
Vamos a prática...
Utilizando JOINS

 Utilizar a cláusula WHERE para fazer seus JOINs (relacionamentos), limita


os relacionamentos a apenas um tipo deles, o INNER JOIN.

 Temos três tipos de Joins:


 INNER JOIN
 LEFT JOIN
 RIGHT JOIN

Projeto de
Banco de
Inner Join

 Retorna apenas as linhas das tabelas que sejam comuns entre si, ou seja,
as linhas em ambas as tabelas que possuam o campo de
relacionamento com o mesmo valor.

Projeto de
Banco de
Left Join

 Irá listar todas as linhas da primeira tabela relacionada no join, logo após
a cláusula from.

 Quando a linha listada não possuir equivalência na tabela destino , as


colunas da tabela destino aparecerão com valores nulos

Projeto de
Banco de
Right Join

 Irá listar todas as linhas referentes à segunda tabela relacionada no join

 Neste caso também , quando a linha listada não possuir equivalência na


tabela destino , as colunas da tabela destino aparecerão com valores
nulos

Projeto de
Banco de
Informações Agrupadas

 Com o GROUP BY podemos agrupar os valores de uma coluna e


também realizar cálculos sobre esses valores.
 Desta forma, ao realizarmos uma consulta, os valores encontrados nas
linhas são agrupados e então uma função de agregação pode ser
aplicada sobre esses grupos.

Projeto de
Banco de
ORDENAÇÃO

 Usamos o Order by para organizar os dados quando a pesquisa é


retornada. Por exemplo, quando fazemos um select o retorno da
pesquisa é apresentado de forma desordenada, ou seja não traz na
ordem alfabética na forma crescente ou decrescente.

Projeto de
Banco de
SubConsulta

 Subconsulta é uma consulta dentro de um outro


 comando SQL que pode ser:
 SELECT
 INSERT
 DELETE
 UPDATE

Projeto de
Banco de
Regras

 Regras para Construção de Subconsultas:


 A consulta interna tem que estar entre parênteses e sempre a mais interna é
executada primeiro.
 Admite o aninhamento de n consultas internas ou em conjunto com
operadores AND e OR retorna uma ou várias linhas ou colunas
 Usualmente é usada na cláusula WHERE dos comandos
 SELECT, DELETE e UPDATE

 Pode ser usada na cláusula FROM do comando SELECT.


 Sempre a subconsulta deve está entre ( ).

Projeto de
Banco de
ALTER
Alteração de Tabelas

 Quando notamos que as necessidades da aplicação mudaram


ou que foi cometido um erro, podemos modificar a estrutura das
tabelas já criadas.
 Podemos incluir ou excluir colunas, restrições, modificar nome de
coluna ou da própria tabela.
 Tudo isso pode ser feito através do comando ALTER TABLE
Modificação da estrutura de uma
tabela

 ADD <campo> <tipo>


 Insere novo campo
 DROP <campo>
 Remove determinado campo

 MODIFY<campo><tipo>
 Modifica o tipo de determinado campo
Alter Table - ADD

 Inserir na tabela teste o campo nascimento


que conterá a data de nascimento dos
cadastrados.

mysql>alter table teste add nascimento date;


A nova coluna não pode possuir a restrição de
não-nulo, porque a coluna inicialmente
deve conter valores nulos. Porém, a restrição
de não-nulo pode ser adicionada
posteriormente.
Observe as alterações com o describe teste;
Alter Table - ADD

 Inserir na tabela teste o campo endereço


após o campo nome.

mysql>alter table teste add endereco char(50)


after nome;

Observe as alterações com o describe teste;

Obs. Para inserir antes de todos os outros campos use


first
Alter Table - MODIFY

 O campo email foi criado com limite de 30 caracteres. Observe isso


com o comando describe teste;
 Trocar para 40 caracteres .
 mysql>alter table teste modify email CHAR(40);
 Execute o describe teste; novamente para observar a alteração.
Alter Table - CHANGE

 Trocar no nome da coluna email por e_mail .


 mysql>alter table teste change email e_mail char(30);
 Execute o describe teste; para observar a alteração.
Alter Table - Drop

 Abaixo vemos como excluir o campo codigo da tabela Teste:

mysql>alter table teste drop codigo;

Observe as alterações com o describe teste;


Alter Table – ADD Primary Key

 Abaixo vemos como definir o campo nome como chave para a tabela
Teste:

mysql>alter table teste add primary key (nome,nascimento);

Observe as alterações com o describe teste;


Alter Table - Drop Primary Key

 Exclui a chave primária, mas não a coluna

mysql>alter table teste drop primary key;

Observe as alterações com o describe teste;


Renomeando a tabela

 Para alterar o nome da tabela A para B

mysql> ALTER TABLE A RENAME TO B;


Drop Table

Exclui a tabela. Todos os dados e definições da


tabela são removidos, assim tenha cuidado com
este comando!
Observação: não vamos executar este comando
pois vamos continuar usando a tabela teste em
aula apenas observe o comando.

mysql>drop table teste;


Manipulando dados
VOLTAREMOS AQUI….
Manipulando a base de dados

 Inserindo registros
• Para se adicionar dados a uma tabela, usamos o comando INSERT, que diz por si só sua
função, como o exemplo que segue:
• mysql>INSERT INTO teste VALUES
(NULL, ‘Elaine’, ‘elaine.brito@cotil.unicamp.br’,
‘34444444’);
Observações:

 Todos os campos que contém texto, ou seja, CHAR, VARCHAR, BLOB,


TEXT, etc. têm de ficar entre apóstrofos
 Para campos do tipo número, não se usam apóstrofos.
 A entrada NULL em um campo do tipo auto-incremento, permite que
o MySQL providencie o conteúdo deste campo de forma
automática. No caso do primeiro campo, o valor será 1, no segundo
2, no terceiro 3 e assim consecutivamente.
 Se possuíssemos um campo DATE, a entrada NULL faria com que o
valor gravado no registro se torne a data atual.
Observações:

 É importante lembrar-se sempre de passar para


o comando INSERT um número de parâmetros
igual ao número de campos na tabela que está
recebendo os dados. Caso contrario, você
obterá uma mensagem de erro.
Pesquisando registros

 As pesquisas no MySQL são feitas através do comando


SELECT.
 Exemplo:
mysql>SELECT * FROM teste;
 Resultado:
 Lista todos os campos(*) de todos os registros da
tabela teste.
Pesquisando registros

 Se queremos ver apenas alguns campos da tabela,


especificamos os nomes das colunas desejadas,
separadas por virgulas.
 Exemplo:
mysql>SELECT codigo,nome FROM teste;
 Resultado:
 Lista os campos codigo e nome de todos registros da
tabela teste.
Pesquisando registros

 Ação:
mysql>SELECT * FROM teste WHERE
nome = ‘Elaine’;
 Resultado:
 Lista
todos os registros da tabela teste que
possui ‘Elaine’ no campo nome.
Alterando registros

 Ação:
mysql>UPDATE teste SET nome = 'Elaine
Brito' WHERE nome = 'Elaine';
 Resultado: Procura na tabela um registro
que contenha no campo nome o conteúdo
'Elaine', definido pelo comando WHERE.
Encontrado o registro, ele é substituido pelo
nome definido no comando SET, que é
'Elaine Brito'.
Apagando registros

 Ação:
 mysql>DELETE FROM teste WHERE (telefone =
‘34444444’);
 Resultado: Apaga da tabela teste todos os
registros que têm o conteúdo ‘34444444’ no
campo telefone.
Operadores Aritméticos:

 São responsáveis pela execução de operações matemáticas simples:

+ Adição
- Subtração
* Multiplicação
/ Divisão
Operadores Relacionais:

 São utilizados quando precisamos fazer comparações entre dois valores:

> Maior que


< Menor que
= Igual a
<> Diferente de
>= Maior ou igual a
<= Menor ou igual a
Operadores lógicos:

 AND (&&)
 O operador lógico AND, ou E, deve ser usado em uma
pesquisa que se deseja entrar dois valores.
 O AND, verifica ambas as clausulas da comparação, e só
retorna algum valor se as duas tiverem uma resposta
verdadeira.
 Observe o exemplo:
mysql>SELECT * FROM teste WHERE (nome =
‘ELAINE’) AND (telefone = ‘34444444’);
Esta pesquisa mostrara todos os registros que contém no campo
nome o conteúdo ‘Elaine’, E (AND) no campo telefone, o
conteúdo ‘34444444’.
Operadores lógicos:

 OR (||)
 O operador lógico OR, ou OU, deve ser usado em uma
pesquisa que se deseja entrar dois valores.
 O OR, verifica ambas as clausulas da comparação, e
retorna valores se qualquer um dos membros obtiver
resultado.
mysql>SELECT * FROM teste WHERE (nome
= ‘Elaine’) OR (telefone = ‘34444444’);
Esta pesquisa fará com que todos os resultados que
contenham o conteúdo ‘Elaine’ no campo nome, OU
telefone ‘34444444’ sejam exibidos na tela.
Operadores lógicos:

 NOT (!)
 O operador lógico NOT, ou NÃO, realiza uma pesquisa,
excluindo valores determinados do resultado.
 mysql>SELECT * FROM teste WHERE
 (nome != ‘Elaine’);
 Esta pesquisa listará todos os registros da base de dados
teste, NÃO (NOT) mostrando aqueles que possuem
‘Elaine’ como conteúdo do campo nome.
Operadores lógicos:

 ORDER BY
 O operador lógico ORDER BY, ou ORDENAR POR,
simplesmente lista os registros, colocando-os em ordem de
acordo com o campo solicitado.
 mysql>SELECT * FROM teste WHERE
 (nome = ‘Elaine’) ORDER BY telefone;
 O resultado desta busca resultara em todos os registros
contendo ‘Elaine’ no campo nome, e a listagem será
organizada de acordo com a ordem do telefone.
ORDER BY

 ASC e DESC especificam o tipo de classificação e são,


respectivamente, abreviações das palavras em ingles
ascending e descending, ou seja, classificação crescente ou
decrescente.
 Quando não especificamos nenhum , o padrão é ascendente
 Exemplo:
Select * from aluno order by nascimento desc, nome asc
Exercícios

 Crie uma tabela Empregados como a seguir:

Campo Tipo Descrição


codigo Integer Código do funcionário(não nulo)
nome Char(40) Nome do funcionário (não nulo)
setor Char(2) Setor onde o funcionário trabalha
cargo Char(20) cargo do funcionário
salario Decimal(10,2) salário do funcionário
Chave Primária Será o campo codigo
Inserção de registros

Exemplo:
Insert into empregados values (1,’Cleide Campos’,’1’,’secretaria’,1000 );
Listagem de registros

 Apresentar a listagem completa dos registros da tabela Empregados;


 Apresentar uma listagem dos nomes e dos cargos de todos os registros da tabela
Empregados;
 Apresentar uma listagem dos nomes dos empregados do setor 1
 Listagem dos nomes e dos salários por ordem de nome (a-z)
 Listagem dos nomes e dos salários por ordem de nome em formato descendente
(z-a)
 Listagem dos setores e nomes colocados por ordem do campo setor em formato
ascendente e do campo nome em formato descendente.
 Listagem de nomes ordenados pelo campo nome em formato ascendente, dos
empregados do setor 4.
Operadores auxiliares

 Between
 Definição de intervalos de v alores para a
cláusula where.
 <expressão> [Not] BETWEEN <mínimo> and
<máximo>
 Select nome from tb_empregado where
salario between 1000 and 1500;
 IN
 Algumas v ezes não é possív el definir um
intervalo sequencial de v alores.
 <expressão> [Not] IN
<v alor1,valor2,...,valorN>
 Select nome from tb_empregado where
codido in (1, 2, 3,4);
Verificação de caracteres

 Para verificar seqüência de caracteres dentro de um campo do tipo


string (char ou varchar), pode-se utilizar junto com a clausula where uma
condição baseada no uso do operador LIKE.
<expressão> [NOT] LIKE <valor>
 Exemplos:
 ‘A%’ – começa com letra A
 ‘_A%’ – segunda letra do nome A
 ‘%AN% - possui AN em qualquer posição
Se vazio

 Uma ocorrência bastante útil é verificar a existência de campos que


possuam valores em branco ou não. Para isso usa-se junto ao where o
operador IS NULL.
<expressão> IS [NOT] NULL
Exemplo:
Select * from Empregados where nome is null
Funções Agregadas

 AVG() – média aritmética


 MAX() – Maior valor
 MIN() - Menor valor
 SUM() - Soma dos valores
 COUNT() – Número de valores
 ALL- contagem dos valores não vazios
 Distinct – contagem dos valores não vazios e únicos
 Função([all]<expressão>/[distinct]<expressão>)
Funções Agregadas

 AVG() – média aritmética


 MAX() – Maior valor
 MIN() - Menor valor
 SUM() - Soma dos valores
 COUNT() – Número de valores
 ALL- contagem dos valores não vazios
 Distinct – contagem dos valores não vazios e únicos
 Função([all]<expressão>/[distinct]<expressão>)

Você também pode gostar