BANCO DE DADOS Aula 4 SQL
BANCO DE DADOS Aula 4 SQL
BANCO DE DADOS Aula 4 SQL
CASSIO PINHEIRO
Bancos de dados
Máximo 64 caracteres;
Podemos ter vários bancos de dados, mas só podemos manipular um por vez.
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
Projeto de
Banco de
Criação de Tabela
Nome da
tabela
mysql> CREATE TABLE teste(
Nome dos
campos
Projeto de
Banco de
DDL e DML
Projeto de
Banco de
Vamos a prática...
Utilizando JOINS
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.
Projeto de
Banco de
Right Join
Projeto de
Banco de
Informações Agrupadas
Projeto de
Banco de
ORDENAÇÃO
Projeto de
Banco de
SubConsulta
Projeto de
Banco de
Regras
Projeto de
Banco de
ALTER
Alteração de Tabelas
MODIFY<campo><tipo>
Modifica o tipo de determinado campo
Alter Table - ADD
Abaixo vemos como definir o campo nome como chave para a tabela
Teste:
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:
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:
+ Adição
- Subtração
* Multiplicação
/ Divisão
Operadores Relacionais:
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
Exemplo:
Insert into empregados values (1,’Cleide Campos’,’1’,’secretaria’,1000 );
Listagem de registros
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