Upload
andrio-rodrigo
View
136
Download
5
Embed Size (px)
Citation preview
1
ÍNDICE Instalando o MySQLServer ----------------------------------------------------------------------- 02 Conceitos: --------------------------------------------------------------------------------------------- 02 - O que é um Banco de Dados? ------------------------------------------------------- 02 - Campos ------------------------------------------------------------------------------------ 02 - Registros ---------------------------------------------------------------------------------- 02 - Tabelas ------------------------------------------------------------------------------------ 02 Tipos de ----------------------------------------------------------------------------------------------- 03 - Tipos Numéricos ----------------------------------------------------------------------- 03 - Tipos Data ------------------------------------------------------------------------------- 04 - Tipos String ----------------------------------------------------------------------------- 04 Modelagem ----------------------------------------------------------------------------------------- 05 - Entidade -------------------------------------------------------------------------------- 05 - Atributos ------------------------------------------------------------------------------- 05 Tipos de Atributos ------------------------------------------------------------------------------- 06 - Simples --------------------------------------------------------------------------------- 06 - Composto ------------------------------------------------------------------------------ 06 - Multivalorado ------------------------------------------------------------------------- 06 - Determinante ------------------------------------------------------------------------- 06 Exemplo envolvendo os conceitos que conhecemos ----------------------------------- 07 Exemplo para resolver -------------------------------------------------------------------------- 07 Relacionamentos --------------------------------------------------------------------------------- 07 Graus de Relacionamentos -------------------------------------------------------------------- 08 - Relacionamento um-para-um ---------------------------------------------------- 08 - Relacionamento um-para-muitos ----------------------------------------------- 08 - Relacionamento de muitos-para-muitos -------------------------------------- 09 Normalização ------------------------------------------------------------------------------------- 10 - Anomalias ----------------------------------------------------------------------------- 10 Três principais formas normais de organizar o Banco de Dados --------------------- 10 - Primeira Forma Normal ------------------------------------------------------------ 11 - Segunda Forma Normal ------------------------------------------------------------ 12 - Terceira Forma Normal ------------------------------------------------------------- 13 Instalação do Apache --------------------------------------------------------------------------- 14 Instalação do PHP --------------------------------------------------------------------------------- 14 Configurando o Apache -------------------------------------------------------------------------- 14 Instalação do PHPMyADMIN -------------------------------------------------------------------- 15 Estrutura do Banco de Dados -------------------------------------------------------------------- 15 Criando o Banco de Dados ------------------------------------------------------------------------ 16 Funções para uso em cláusulas SELECT e WHERE ------------------------------------------- 17 01 – Operadores e Funções de Tipos Especificados: ---------------------------- 17
a) Parênteses ----------------------------------------------------------------- 17 b) Operadores de Comparação ------------------------------------------- 17 c) Operadores Lógicos ------------------------------------------------------ 20
Funções Strings --------------------------------------------------------------------------------------- 20 Funções Matemáticas ------------------------------------------------------------------------------ 23 Funções de Data e Hora ---------------------------------------------------------------------------- 25 Iniciando o Estudo da Linguagem SQL (MySQLFront) -------------------------------------- 26 Exercicio 01 -------------------------------------------------------------------------------------------- 26 Funções Agregadas ---------------------------------------------------------------------------------- 27 Exercicio 02 -------------------------------------------------------------------------------------------- 27 Insert, Updade e Delete ---------------------------------------------------------------------------- 28 Join ------------------------------------------------------------------------------------------------------- 28 Exercicio 04, Exercicio 05, Exercicio 06, Exercicio 07, Exercicio 08, Exercicio 09 ----- 29
2
CURSO DE MYSQL
Instalando o MYSQL Server.
Deixe tudo padrão, exceto na tela que apareça incluir o Bin Directory, essa opção deve ser marcada. O usuário e senha deixem vazios, no caso o usuário será root e a senha será vazia. Conceitos:
- O que é um Banco de Dados?
É um local no qual é possível armazenar informações para consulta ou utilização quando necessário. Todos os bancos de dados são constituídos por três elementos básicos: Campos, Registros e Tabelas. - Campos:
É o espaço reservado para inserção de um determinado dado. - Registros: É um conjunto de campos, ou seja, de dados sobre um determinado assunto. - Tabelas: Todos os registros, isto é, as fichas que contém os dados que armazenamos,
são agrupados tabelas do Banco de Dados.
Nomes de Banco de Dados, Tabelas, Índice, Coluna e Apelidos seguem todas as
mesmas regras no MYSQL.
IDENTIFICADOR TAMANHO MÁXIMO CARACTERES PERMITIDOS
Banco de Dados 64 Qualquer um, exceto / e o .
Tabela 64 Qualquer um, exceto / e o .
Coluna 64 Todos
Alias 265 Todos
Se o identificador é uma palavra restrita ou contém caracteres especiais você deve
sempre coloca-lo entre apóstrofos (‘’), ao usá-lo.
O servidor MYSQL suporta os seguintes estilos de comentário:
# - No fim da linha.
--! - No fim da linha.
/* - Na linha ou em múltiplas linhas */
3
Tipos de Dados:
O MySQL suporta um certo número de tipos de dados que podem ser
agrupados em três categorias:
# Tipos Númericos. # Tipos De Data e Hora. # Tipos String (Caracteres).
TIPOS NÚMERICOS
Observações:
- As opções entre colchetes ([ ]) são opcionais. - Dentre os tipos que se ajustam aos dados a serem inseridos, escolha sempre o de menor tamanho. - Para dados do tipo inteiro você pode usar a opção Unsigned para especificar inteiros positivos ou zero. - M especifica o tamanho máximo de exibição. - D especifica o número de casas decimais. O valor máximo de D é 30 ou M-2. - Tanto para números inteiros como para números de ponto flutuante você pode especificar a opção ZEROFILL que preenche os números com zeros iniciais. Colunas especificadas com ZEROFILL são automaticamente configuradas como UNSIGNED;
4
TIPOS DATA
Date: É usado quando se necessita apenas o valor da data, sem a parte da hora. Time: O MySQL recupera e mostra valores TIME no formato “HH:MM:SS”. DateTIme: É usado quando você precisa de valores que contém informações sobre Data e Hora. Year: Retorna apenas o valor do ano no formato de 2 ou 4 digitos.
TIPOS STRING
5
MODELAGEM Modelo Entidade Relacionamento (E-R).
Esse é o modelo mais utilizado atualmente, principalmente, devido, à sua simplicidade e eficiência. Baseia-se na percepção de mundo real, que consiste em uma coleção de objetos básicos, chamados entidades e em relacionamentos entre esses objetos.
Ao se utilizar a Modelagem Conceitual de Dados com a técnica de Entidades e Relacionamentos, obteremos resultados e esquemas puramente conceituais sobre a essência de um sistema, ou melhor, sobre o negócio para o qual estamos desenvolvendo um projeto, não se representando procedimentos ou fluxo de dados existentes.
- Entidade: Define-se entidade como aquele objeto que existe no mundo real como uma
identificação distinta e com um significado próprio. São as “coisas” que existem no negócio, ou ainda, descrevem o negócio em si. Maria Raimunda Oliveira, CPF 111222333-44, é uma entidade, uma vez que só existe um único indivíduo com esse nome e número de CPF. Uma entidade pode ser concreta, como uma caneta ou uma pessoa, ou abstrata, como um conceito ou uma sensação. No Banco de Dados de uma empresa, por exemplo, são entidades: Funcionário, Cliente, Departamento, etc. Cada entidade representa objetos com as mesmas características. Um banco de dados, portanto, compreende uma coleção de conjuntos de entidades do mesmo tipo. O símbolo que representa a entidade no modelo E-R é um retângulo com o nome da entidade escrito no seu interior, por exemplo:
DEPARTAMENTO Cada objeto pertencente a uma entidade é chamado de Instância. Em uma escola, por exemplo, existem as entidades Funcionários e Alunos, os Funcionários podem ser Professores ou exercerem funções administrativas. Dessa forma, Professor é uma Instância da entidade funcionário. Visualizando ficaria:
ESCOLA FUNCIONÁRIO PROFESSORES FUNÇÕES ADMS. ALUNOS
- Atributos:
São propriedades (características) que identificam as entidades. Uma entidade é representada por um conjunto de atributos. Cada Instância possui uma coleção de elementos de dados ou atributos. Por exemplo, Nome e Função podem ser Atributos de Departamento.
6
Da mesma forma, no exemplo da Escola, Nome, Matrícula e Disciplina que leciona podem ser Atributos do Professor. A cada Atributo de uma entidade é associado a um domínio de valores. Esses valores podem ser um conjunto de números inteiros, números reais, cadeias de caracteres ou qualquer outro tipo de valor que o atributo pode assumir. Por exemplo, o domínio do atributo disciplinas seria todas as disciplinas ensinadas na escola. Os Atributos são representados apenas pelo seu nome ligado à entidade por uma linha reata, por exemplo:
DEPARTAMENTO Função
Tipos de Atributos
-Simples:
Não possui característica especial. Por exemplo, o nome da empresa é um atributo
sem qualquer característica especial.
EMPRESA Nome
-Composto:
O seu conteúdo é formado por itens menores. Por exemplo, Endereço é formado por
Rua, CEP e Bairro.
Rua
EMPRESA Endereço CEP
BAIRRO
-Multivalorado:
O seu conteúdo pode ser formado por mais de uma informação. É indicado colocando-se um asterisco precedendo o nome do atributo, como no caso da empresa que pode possuir mais de um telefone.
DEPARTAMENTO *Telefone
-Determinante:
O atributo determinante é aquele que define univocamente as instâncias de uma entidade, ou seja, é único para as instâncias de uma entidade. É indicado sublinhando-se o nome do atributo. No exemplo de uma empresa, o CNPJ é um atributo determinante, pois não podem existir duas empresas com o mesmo valor nesse atributo. No exemplo da nossa escola, a matrícula é um atributo determinante, pois não pode existir mais de um funcionário com a mesma matrícula.
CNPJ DEPARTAMENTO
7
Exemplo envolvendo os conceitos que conhecemos:
Uma empresa necessita armazenar os dados de seus funcionários, atualmente
em um fichário. Os dados são a Matrícula, o Nome, o Endereço (Rua, CEP,
Bairro), o Telefone (pode ter mais de um) e o Cargo, veja o exemplo onde está
explicitado o Modelo E-R entidade Funcionário e seus atributos:
Matrícula
Nome Rua
FUNCIONÁRIO Endereço CEP
Bairro
*Telefone Cargo
EXEMPLO PARA RESOLVER:
Uma clínica médica necessita controlar as consultas médicas realizadas e marcadas
pelos médicos a ela vinculadas assim como acompanhar quem são os pacientes atendidos para
manter o acompanhamento clínico dos mesmos. Ao levantarmos os dados para a construção
do sistema, nos foi informado que para cada médico a clínica mantém uma ficha com o
número de CRM do médico, seu Nome, Endereço, Especialidade etc. Os pacientes preenchem
um cadastro com dados pessoais tais como Nome, Endereço, Data de Nascimento, Sexo etc.
Toda consulta é registrada em fichário próprio com as informações sobre Médico e Paciente,
Diagnóstico etc.
ENTIDADES
Nome Nome Data de Nascimento
MÉDICO Endereço PACIENTE
Data
CONSULTAS
Paciente Médico
RELACIONAMENTOS
O entendimento sobre o que são efetivamente relacionamentos e a capacidade de
enxergar estes objetos, como participantes do mundo real, são fatores primordiais
para que se venha a efetuar trabalhos de modelagem de dados com compreensão do
que está sendo realizado.
Sexo Endereço
CRM
8
1 1
Não devemos, nunca, colocar temores de complexidade em uma técnica, e sim
lembrarmo-nos de que a mesma nada mais é do que uma forma estruturada de
representar as coisas que existem e ocorrem no mundo real. Procurando, sempre,
retratar com simplicidade os fatos, isso os levará a representar com correção e
entendimento.
Dentro deste enfoque definimos RELACIONAMENTO como o fato, o acontecimento
que liga dois objetos, duas “coisas” existentes no mundo real.
GRAUS DE RELACIONAMENTOS
Quando temos um relacionamento entre duas entidades, o número de ocorrências de
uma entidade que está associado, com ocorrências de uma entidade que está
associado, como ocorrências de uma outra entidade, determina o grau do
relacionamento ou cardinalidade desse fato,
Existem, portanto, três possibilidades de relacionarmos os dados, ou seja, três graus
de relacionamentos, que são:
- RELACIONAMENTO DE UM-PARA-UM.
- RELACIONAMENTO DE UM-PARA-MUITOS.
- RELACIONAMENTO DE MUITOS-PARA-MUITOS.
RELACIONAMENTO DE UM-PARA-UM.
Cada elemento de uma entidade relaciona-se com um e somente com um elemento
de outra entidade.
Como exemplo podemos citar uma empresa, dividida em seções em que cada seção
possui um único gerente e um funcionário-gerente só pode chefiar uma única seção:
GERENTE CHEFIA SEÇÃO
RELACIONAMENTOS UM-PARA-MUITOS
Acontece quando cada entidade de A pode se relacionar com uma ou mais entidades
de B, quando se quer dizer uma ou mais de uma entidade utiliza-se a letra N.
Estre grau de relacionamento é o mais comum no mundo real, sendo que o
denominamos de relacionamento básico entre entidades, entretanto possui
características especificas, quando sentido de leitura dos fatos e sua interpretação.
Exemplo: Numa empresa dividida em seções, um Funcionário só pode ser alocado em
uma única seção, porem em uma seção podem trabalhar vários funcionários.
9
1
N
N N
N N
N N
N 1
SEÇÃO TRABALHA FUNCIONÁRIO
RELACIONAMENTO DE MUITOS-PARA-MUITOS
É quando várias (N) entidades de A se relacionam com várias (M) entidades de B.
Um exemplo para esse tipo de relacionamento é o que ocorre entre uma loja e os
fornecedores de seus produtos. Um fornecedor pode fazer mais de um produto e um
produto pode ser fornecido por mais de um fornecedor
FORNECEDOR FORNECIMENTO PRODUTO
Um outro exemplo seria o de um aluno que pode cursar mais de uma disciplina de um
curso e uma disciplina que pode ser cursada por mais de um aluno.
ALUNO CURSA DISCIPLINA Exemplo 01: Uma loja de roupas deseja criar um cadastro de suas peças. Cada peça possui um
código que a identifica, uma descrição, um preço, e uma quantidade em estoque. Deseja-se
também manter um cadastro de seus clientes com Nomes, Telefone, etc. E as peças que ele já
comprou. A data em que o cliente comprou a peça é guardada.
PEÇA COMPRA CLIENTE
Exemplo 02:
Uma empresa bancária mantém um cadastro com os dados dos seus clientes
(Identidade, Nome, Endereço, etc.) e de suas contas (Número da Conta e Saldo). Um cliente
pode ter mais de uma conta no banco e uma conta pode ser de mais de um cliente (Conta
Conjunta). O banco mantém também um cadastro com suas agências (Código e Nome), em
que cada agência pode ter mais de uma conta. Óbvio.
CONTA POSSUI CLIENTE
GERENCIA
AGÊNCIA
10
NORMALIZAÇÃO
Normalizar é organizar um Banco de Dados que esteja totalmente bagunçado.
Exemplo:
Anomalias:
Caso esta entidade fosse implementada como tabela em um Banco de Dados as
seguintes anomalias iriam aparecer:
ANOMALIA DE INCLUSÃO: Ao ser incluído um novo Cliente, o mesmo tem que estar
relacionado a uma venda;
ANOMALIA DE EXCLUSÃO: Ao ser excluído um Cliente, os dados referentes às suas
compras serão perdidos;
ANOMALIA DE ALTERAÇÃO: Caso algum fabricante de produto altere a faixa de preço
de uma determinada classe de produtos, será preciso percorrer toda a entidade para
se realizar múltiplas alterações.
TRÊS PRINCIPAIS FORMAS NORMAIS DE ORGANIZAR ESSE BANCO DE DADOS.
PRIMEIRA FORMA NORMAL
Conceito:
A 1FN diz que: Cada ocorrência da chave primária deve corresponder a uma e somente
uma informação de cada tributo, ou seja, a entidade não deve conter grupos
repetitivos (multivalorados).
Como Obter:
11
Para se obter entidades na 1FN, é necessário decompor cada entidade não
normalizada em tantas entidades quanto for o número de conjuntos de atributos
repetitivos. Nas novas entidades, criadas, chave primária da entidade original mais o(s)
atributo(s) do grupo repetitivo visualizado(s) como chave primária deste grupo.
Normalizada:
12
SEGUNDA FORMA NORMAL
Devemos observar se alguma entidade possui chave primária concatenada, e para
aquelas que satisfazerem esta condição, analisar se existe algum tributo ou conjunto
de atributos com dependência parcial em relação a algum elemento da chave primária
concatenada.
Com a finalidade de tornar mais estável o modelo de dados a aplicação da 2FN sobre
as entidades em observação geram novas entidades, que herdarão a chave parcial e
todos os tributos que dependem desta chave, ou seja, uma entidade para estar na 2FN
não pode ter atributos com dependência parcial em relação à chave primária.
13
TERCEIRA FORMA NORMAL
Uma entidade está na 3FN se nenhum de seus atributos possui dependência transitiva em
relação a outro atributo da entidade que não participe da chave primária, ou seja, não exista
nenhum atributo intermediário entre a chave primária e o próprio atributo observado.
Ao retirarmos a dependência transitiva, devemos criar uma nova entidade de que contenha os
atributos que dependem transitivamente de outro a sua chave primária é o atributo que
causou esta dependência.
Além de não conter atributos com dependência transitiva, entidades na 3FN não devem conter
atributos que sejam o resultado de algum cálculo sobre outro atributo, que de certa forma
pode ser encarada como uma dependência, funcional.
14
RELACIONAMENTO FINAL
INSTALAÇÃO DO APACHE
SERVER INFORMATION:
Network Domain: localhost ServerName: localhost Email Adrees: Seu endereço de email
INSTALAÇÃO DO PHP Apenas copie a pasta do PHP5 para o local onde foi instalado o Apache. CONFIGURAÇÕES: Na pasta do PHP5 localize as dlls php5ts.dll e libmysql.dll copie-os e cole-os na pasta System32. Localize agora o arquivo php.ini-dst apague a parte “-dst”, deixando apenas php.ini. Abra esse arquivo com o bloco de notas. Localize: “extension_dir = ‘ ’. Se entre apóstrofos estiver vazio, coloque: “C:/php5/ext” Local onde está a pasta do PHP5. Agora localize: “php_mysql” e procure por “extension=php_mysql.dll”, provavelmente antes de extension irá ter um “;” retire esse ponto e vírgula. A mesma coisa faça para “extension=php_gd2.dll”. Salve as alterações. Recorte esse arquivo (php.ini) e cole-o dentro da pasta Windows.
CONFIGURANDO O APACHE Abra a pasta do Apache, onde foi instalado, abra a pasta Conf. e localize o arquivo httpd.Conf. abra-o no Bloco de Notas e localize : “loadmodule” e procure pela linha “#LoadModule SSl_module modules/mod_ssl.so”. Abaixo dessa linha escreva : “LoadModule php5 module “c:/php5/php5apache2.dll”. Localize agora a linha “AddModule mod_setenvif.c” e logo abaixo, adicione: “AddModule mod_php5.c”.
15
Localize agora “AddType application/x-tan .tg3” e logo abaixo, adicione: “AddType application/x-httpd-php .php” e “Addtype application /x-httpd-php-source .phps”. Depois localize a linha: “DirectoryIndex index.html”. E logo ao lado do “index.html” adicione “index.php” “default.php” e “main.php”. Ainda nesse arquivo, localize: “DocumentoRoot “C:/Apache2/htdocs”. Esse caminho é onde o seu site se localize, então se você alterar a pasta do seu site, você também terá que alterar esse caminho, por exemplo se seu site se localiza em C:/Site você terá que colocar “C:/Site”. Reinicie o Computador.
INSTALAÇÃO DO PHPMYADMIN Copie a pasta do PHPMyADMIN para a pasta onde se localiza seu site, onde você setou no DocumentRoot. Pronto instalado e configurado.
ESTRUTURA DO BANCO DE DADOS O Banco de Dados que iremos criar terá a seguinte estrutura:
Entidades: PEDIDO POSSUI ITEM FAZ TIRA PARTICIPA CLIENTE VENDEDOR PRODUTO
ENTIDADES E SEUS ATRIBUTOS
16
CRIANDO O BANCO DE DADOS
Rode o PHPAdmin, ou crie no SQLFront.
Crie uma nova tabela, com 8 arquivos, dê o nome de “cliente” e coloque os campos
correspondentes.
ID_CLIENTE INT CP
CLIENTE VARCHAR 90
ENDERECO VARCHAR 80
CIDADE VARCHAR 50
CEP VARCHAR 09
UF CHAR 02
CGC VARCHAR 20
IE VARCHAR 20
SALVE.
Crie outra tabela chamada “Vendedor”, com 04 campos:
ID_VENDEDOR INT NOTNULL
VENDEDOR VARCHAR 60
SALARIO DECIMAL
COMISSAO CHAR 01
Crie outra tabela, chamada “Pedido”, com 04 campos:
NUM_PEDIDO INT (CP)
ID_CLIENTE INT
ID_VENDEDOR INT
PRAZO_ENTREGA INT
Crie outra tabela, chamada “Produto”, com 04 campos:
ID_PRODUTO INT CP
PRODUTO VARCHAR 60
UNIDADE VARCHAR 10
VAL_UNIT DECIMAL
SALVE.
Crie outra tabela, chamada “Item_Pedido”, com 04 campos:
ID_ITEM_PEDIDO INT (CP)
NUM_PEDIDO INT
ID_PRODUTO INT
QUANTIDADE INT
SALVE.
17
FUNÇÕES PARA USO EM CLÁUSULAS SELECT E WHERE.
SELECT: É usado para retornar valores de determinado campo
Ex: SELECT campo FROM tabela.
Se quiser retornar dados de todos os campos da tabela Cliente, por exemplo, faça:
SELECT * FROM cliente
Se quiser retornar dois campos da tabela cliente, faça:
SELECT cliente,cep FROM cliente
Quando você quer selecionar, por exemplo, apenas aqueles registros que possuem o id_cliente
maior que 200 faça assim:
SELECT * FROM cliente WHERE id_cliente > 200.
01 – Operadores e funções de tipos não especificados.
a) Parênteses.
b) Operadores de Comparação.
c) Operadores Lógicos.
d) Funções de Fluxo Central.
A) PARÊNTESES:
Serve para separar a ordem com que uma operação ocorre:
Por exemplo, se eu fizer isso: SELECT 5+3*2, o resultado será 11, pois a
multiplicação tem preferência no sentido de ordem, mas se fizermos assim:
SELECT (5+3)*2,o resultado obtido será 16, pois a operação que está entre
parênteses terá preferência.
B) OPERADORES DE COMPARAÇÃO:
Operadores de comparação resultam em um valor 1 (VERDADEIRO), 0 (FALSO) ou
NULL. Estas funções funcionam tanto para tipos numéricos quanto para tipos
strings. Strings são convertidos automaticamente para números e números para
strings quando necessário.
Se um ou ambos os argumentos são NULL, o resultado da comparação é NULL,
exceto para o operado <=>.
Se ambos os argumentos em uma comparação são strings, eles são comparados
como strings.
Se ambos os argumentos são inteiros, eles serão comparados como inteiros.
Valores hexadecimais são tratados como strings binárias se não comparadas a um
número.
18
Se um dos argumentos é uma coluna TIMESTAMP ou DATETIME e o outro
argumento é uma constante, a constante é convertida para um TIMESTAMP antes
da comparação ser realizada. Isto ocorre para ser mais amigável ao ODBC.
Em todos os outros casos, os argumentos são comparados como números de
ponto flutuante (Real).
Exemplos:
Operador = (igual)
SELECT 1 = 0
O resultado será 0 (Falso).
SELECT 1 = 1
O resultado será 1 (Verdadeiro).
Operador <> ou ! (Diferente)
SELECT 1 <> 1
O resultado será 0 (Falso).
SELECT 1 <> 0
O resultado será 1 (Verdadeiro).
Operador <=
SELECT 1 <= 1
O resultado será 1 ( Verdadeiro).
SELECT 1 <= 0
O resultado será 0 (Falso).
Operador >=
SELECT 1 >= 0
O resultado será 1 (Verdadeiro).
SELECT 1 >= 1
O resultado será 0 (Falso).
Operador <
SELECT 1 < 0
O resultado será 0 (Falso)
SELECT 1 < 1
O resultado será 1 (Verdadeiro)
Operador >
SELECT 1 > 0
O resultado será 1 (Verdadeiro)
SELECT 1 > 1
O resultado será 0 (Falso)
19
Operador IS NULL
Retorna valores que são nulos em um tabela.
SELECT 1 IS NULL
O resultado sera 0 (Falso), pois 1 não é nulo.
SELECT 0 IS NULL
O resultado também será 0 (Falso), pois o zero nesse caso não é nulo.
SELECT NULL IS NULL
O resultado será 1 (Verdadeiro) ,pois NULL é nulo.
VOCÊ USARIA EM UMA CONSULTA, POR EXEMPLO:
SELECT * FROM pedido (TABELA) WHERE data (CAMPO) IS NULL
Ele retornará todos os registros que tiverem a Data Nula.
Operador IS NOT NULL
Retorna valores que não são nulos em uma tabela.
Exemplo:
Em uma consulta:
SELECT * FROM pedido (TABELA) WHERE data (CAMPO) IS NOT NULL
Ele nos retornará apenas registros que não possuem o campo data
nulo.
Operador expr BETWEEN min AND max
SELECT 1 BETWEEN 2 AND 3
O resultado sera 0 (Falso), pois o 1 não está entre 2 e 3.
SELECT ‘b’ BETWEEN ‘a’ AND ‘d’
O resultado sera 1 (Verdadeiro), pois a letra ‘b’ está entre ‘a’ e ‘d’.
Operador exprt NOT BETWEEN min AND max
É o contrário do expr BETWEEN min AND max.
Operador IN
Ele verifica se um valor está contido dentro de um determinado conjunto.
SELECT 5 IN (0,1,6,8,9)
O resultado será 0 (Falso), pois 5 não está contido no conjunto.
SELECT 8 IN (0,1,6,8,9)
O resultado será 1 (Verdadeiro), pois 1 está contido no conjunto.
Operador NOT IN
É o contrário do IN.
Operador ISNULL (expr)
SELECT ISNULL (2+8)
O resultado sera 0 (Falso), pois o valor entre parênteses não é nulo.
SELECT ISNULL (2/0)
O resultado será 1 (Verdadeiro), pois o valor entre parênteses é nulo.
20
C) OPERADORES LÓGICOS
Em SQL, todos os operadores lógicos avaliam TRUE (Verdadeiro), FALSE (FALSO) ou
NULL (Desconhecido). No MySQL, está implementação é como 1 (TRUE), 0 (FALSE),
e NULL. A maioria deles é comum entre diferentes Bancos de Dados SQL. No
entanto alguns podem retornar qualquer valor diferente de zero para TRUE.
OPERADOR NOT OU !
SELECT NOT 10
O resultado será 0 (Falso), pois 10 não é um valor Nulo.
OPERADOR AND OU &&
SELECT 15 AND 1
O resultado será 1 (Verdadeiro), pois o 15 e o 1 não são Nulos.
OPERADOR OR OU | |
SELECT 15 OR 0
O resultado será 1 (Verdadeiro), pois o 15 é não nulo então logo
desconsidera-se o zero.
FUNÇÕES STRINGS
FUNÇÃO ASCII
SELECT ASCII (‘H’).
Ele retornará o número 72, que corresponde ao ‘H’ em ASCII.
FUNÇÃO CHAR
SELECT CHAR (72).
Ele retornará a letra H, que corresponde ao 72 em ASCII, para mais de
uma letra [SELECT CHAR (72, 74,76).
FUNÇÃO CONCAT
Ela irar concatenar duas ou mais strings.
SELECT CONCAT (‘Estudo ’, ‘ de ’, ‘ SQL ’).
Ele retornará ‘Estudo de SQL’.
Usando no BD.
SELECT CONCAT (cliente, ‘-’, cidade) FROM cliente
Será prático para a junção de Nome + Sobrenome
FUNÇÃO CONTAT_WS
SELECT_WS (‘-’, cliente, cidade) FROM cliente
O resultado será: ‘cliente – cidade’
Ele usará o separador em todos os campos que você colocar, o que não é
possível como o CONCAT.
21
FUNÇÃO FIELD (STR, STR1, STR2, STR3)
Ele pega o valor ‘STR’ e retornará a posição em que se encontra.
SELECT FIELD (‘num1’,‘num1’, ‘num2’, ‘num3’, ‘num4’)
Ele retornará 1, pois o ‘num1’ se localiza na primeira posição, se fosse
o ‘num4’, ele iria retornar 4 pois o ‘num4’ se localiza na posição 4.
FUNÇÃO ELT (N, STR1, STR2, STR3)
Você coloca a posição (N) e ele irá retornar o valor (STR1, STR2, STR3, ...)
SELECT (2, ‘num1’, ‘num2’, ‘num3’)
Ele irá retornar o valor ‘num2’ que está na segunda posição.
FUNÇÃO INSTR (STR, SUBSTR)
Retorna a posição da substring na string.
SELECT INSTR (‘arara’, ‘ra’)
Ele irá retornar 2, que equivale a primeira posição que o programa
encotrou a palavra ‘ra’.
FUNÇÃO INSERT (STR, POS, TAMANHO, NOVASTRING)
SELECT INSERT (‘CURSOSQL’,3,2,’DE’)
Ele irá retornar: ‘CUDEOSQL’
STR: Refere-se a String que será alterada.
POS: Refere-se a posição na String onde irá entrar o novo valor (novastring)
TAMANHO: Refere-se ao número de caracteres que será deletado a partir da
POS definida.
NOVASTRING: Refere-se ao novo valor que será inserido.
FUNÇÃO LSCASE OU LOWER
Ele irá transformar os caracteres em minúsculo.
SELECT LCASE (‘CURSODESQL’)
Ele irá retornar: ‘cursodesql’.
Fazendo com um campo de um BD.
SELECT LCASE (cliente) FROM cliente
Irá aparecer todos os campos cliente da tabela cliente em minúsculo.
FUNÇÃO LEFT (STR, TAM)
Retorna caracteres a esquerda
SELECT LEFT (‘cursodesql’, 2).
Ele irá retornar: ‘cu’.
22
FUNÇÃO LOCATE (SUBSTR, STR)
Retorna a posição da primeira substring na string
SELECT LOCATE (‘en’, ‘cliente’)
Ele irá retornar a posição 4.
FUNÇÃO LOCATE (SUBSTR, STR, POS)
Ele irá retornar a posição de uma substr em uma str a partir da posição (POS)
definida.
SELECT LOCATE (‘e’, ‘cursodedesenho’,9)
Ele irá retornar a posição 10, pois pedimos para retornar a posição do
‘e’ a partir da posição 9;
FUNÇÃO LTRIM (STR)
Retorna a String str sem os espaços vazios a esquerda.
SELECT LTRIM (‘ Cursode ‘)
Ele irá retornar: ‘Cursode ’
- AINDA HÁ O TRIM ( QUE RETIRA OS ESPAÇOS TANTO DA ESQUERDA COMO
DA DIREITA.
- E O RTRIM (QUE RETIRA OS ESPAÇOS APENAS A DIREITA).
FUNÇÃO LENGTH (STR)
Irá contar o número de caracteres em uma palavra.
SELECT LENGTH (‘cursodesql’)
Ele irá retornar: 10.
FUNÇÃO REPEAT (STR, CONT)
Retorna uma string com a quantidade CONT que foi especificada.
SELECT (‘A’, 8)
Ele irá retornar: ‘AAAAAAAA’.
FUNÇÃO REPLACE (STR, DA_STR, PARA_STR)
SELECT REPEAT (‘kursodesql’, ‘k’, ‘c’)
Ele irá retornar ‘cursodesql’.
STR: String onde sera substituida certa letra.
DA_STR: Refere-se a letra que será substituída.
PARA_STR: Refere-se a letra que irá substituir a letra da DA_STR.
23
FUNÇÃO RIGHT (STR, TAM)
Retorna caracteres a partir da direita para esquerda.
SELECT RIGHT (‘cursodesql’,2)
Ele irá retornar: ‘ql’
FUNÇÃO RPAD (STR, TAM, STRPREENCHE)
Conta o número de caracteres em uma string e se de acordo com o TAM
especificado essa string não estiver preenchida ele preenche com o
STRPREENCHE especificado.
SELECT RPAD (‘cursodesql’,14,’A’)
Ele irá retornar: ‘cursodesqlAAAA’.
FUNÇÃO LPAD
Faz função contrária ao RPAD.
SELECT LPAD (‘cursodesql’,14,’A’)
Ele irá retornar: ‘AAAAcursodesql’.
FUNÇÃO SUBSTRING (STR, POS)
Irá retornar a String a partir de uma dada POS especificada.
SELECT SUBSTRING (‘cursodesql’,8)
Ele irá retornar: ‘desql’
Outra forma:
SELECT SUBSTRING (‘cursodesql’,8,1)
Ele irá retornar ‘s’, pois o representa o número de caracteres que será
mostra após a POS 8.
FUNÇÃO UCASE (STR) OU UPPER (STR)
Transforma os caracteres para maiúsculo.
SELECT UCASE (‘cursodesql’)
Ele irá retornar: ‘CURSODESQL’.
FUNÇÕES MATEMÁTICAS
FUNÇÃO ABS
Retorna o valor absoluto de um número.
SELECT ABS (-3)
Ele irá retornar somente o ‘3’.
24
FUNÇÃO SIGN (X)
Retorna o sinal do argumento (-1 se o número é Negativo, 0 se o Número é
Nulo e 1 se o Número for Positivo).
SELECT SIGN (-3)
Ele irá retornar: -1 (Negativo).
FUNÇÃO MOD (N,M)
Retornará o resto da divisão entre dois números.
SELECT MOD (5,3)
Ele irá retornar: 2, o resto da divisão.
FUNÇÃO FLOOR (X)
Retorna o maior valor inteiro não maior que X.
SELECT FLOOR (5.185)
Ele retornará o número 5 que é o maior número, mas não maior que o
5.185.
FUNÇÃO CEILING (X)
Retornará o menor valor inteiro, não menor que X.
SELECT CEILING (8.185)
Ele irá retornar o 9.
FUNÇÃO ROUND (X,D)
Retornará o argumento X, arredondando para o número mais próximo.
SELECT ROUND (1.5951,1)
Ele irá retornar o número 1.6.
FUNÇÃO DIV
Retorna o quociente da divisão
SELECT 5 DIV 2
Ele irá retornar: 2, que é o quociente da divisão.
FUNÇÃO POW (X,Y)
Retornará o valor de X elevado a potência Y.
SELECT POW (2,5)
Ele irá retornar 32.
25
FUNÇÃO SQRT (X)
Retornará a Raiz Quadrada de X.
SELECT SQRT (9)
Ele irá retornar: 3.
FUNÇÃO RAND
Retorna um valor de ponto flutuante na faixa de 0 a 1.0
SELECT RAND (4)
Ele irá retornar números aleatórios entre 1 e 4.
Se fosse para retornar valores aleatórios de um Banco de Dados:
SELECT * FROM cliente ORDER BY RAND ( )
Ele irá retornar registros de forma aleatória.
SELECT * FROM cliente ORDER BY RAND ( ) LIMIT 1
Sempre irá aparecer um registro por vez de forma aleatória.
FUNÇÃO TRUNCATE (X,D)
Retorna um número X, truncado para D casas decimais.
SELECT TRUNCATE (1.5841,1)
Ele irá retornar: 1.5.
FUNÇÕES DE DATA E HORA
FUNÇÃO DATE
Extrai a parte da data da expansão Date ou DateTime.
SELECT DATE (‘2008-12-12 07:26:00’)
Ele irá retornar apenas: ‘2008-12-12’.
FUNÇÃO TIME
Extrai a parte da hora da expressão Time ou DateTime.
SELECT TIME (‘2008-12-12 07:26:00’).
Ele irá retornar apenas: ’07:26:00’.
FUNÇÃ TIMESTAMP
SELECT TIMESTAMP (‘2008-12-12’).
Ele irá retornar: ‘2008-12-12 00:00:00’.
FUNÇÃO DAYOFWEEK
Retorna o índice do dia da semana para data (1 – Domingo, 2 – Segunda, 3 –
Terça, 4 – Quarta, 5 – Quinta, 6 – Sexta, 7 – Sábado).
SELECT DAYOFWEEK (‘2008-12-12’).
Ele irá retornar: 6, que equivale à Sexta – Feira.
26
INICIANDO O ESTUDO DA LINGUAGEM SQL (MYSQL FRONT)
COMANDO SELECT:
O comando select é dividido em:
SELECT Especifica os campos da tabela.
FROM Especifica as tabelas.
WHERE Especifica as linhas (condições).
EX:
SELECT cliente FROM cliente
Seleciona todos os clientes da tabela cliente.
SELECT * FROM cliente
Seleciona todos os campos da tabela cliente.
Se quiser que seja renomeando “endereco” para “Endereço”, use essa cláusula: as
novo_nome.
SELECT endereco as Endereço FROM cliente.
Para selecionar, por exemplo, um cliente que inicie com a letra p, utilize (like ‘p*’),
ficaria:
SELECT * FROM cliente WHERE cliente like ‘p*’.
Agora se você quiser que ele encontre onde há o ‘p’ em qualquer lugar, utilize (like
‘*p*’.
E se for apenas que termine com ‘p’, utilize (like ‘*p’).
Para ordenar a tabela pelo campo que quiser utilize (order by nomedocampo),
ficaria:
SELECT * FROM cliente order by cliente asc (em ordem crescente, desc se for
em ordem decrescente). Dessa forma irá ordenar os campos clientes da tabela
cliente em ordem alfabética.
EXERCICIO 01
Quais clientes têm prazo de entrega superior a 15 dias e pertencem aos Estados de
São Paulo (SP) ou Rio de Janeiro (RJ) ?
SELECT C.CLIENTE, C.UF, P.PRAZO_ENTREGA FROM CLIENTE C, PEDIDO P
WHERE C.ID_CLIENTE = P.ID_CLIENTE AND C.UF IN(‘SP’, ‘RJ’) AND
P.PRAZO_ENTREGA > 15
27
FUNÇÕES AGREGADAS
FUNÇÃO MAX
Retorna o maior valor.
SELECT MAX (nomedocampoqueseráverificado) FROM nomedatabela
FUNÇÃO MIN
Retorna o menor valor.
SELECT MIN (nomedocampoqueseráverificado) FROM nomedatabela
FUNÇÃO COUNT
Irá retornar o número de registros cadastrados na tabela definida.
SELECT COUNT (*) FROM produto
FUNÇÃO SUM
Serve para somar valores.
SELECT SUM (valor_unit) FROM produto
FUNÇÃO AVG
Calcula a média de determinados valores.
SELECT AVG (valor_unit) FROM produto
FUNÇÃO DISTINCT
Irá retornar valores distintos, diferentes.
SELECT DISTINCT nome_do_campo FROM nome_da_tabela
Agrupando número de pedidos que determinado cliente fez.
SELECT id_cliente, COUNT (id_cliente) FROM pedido GROUP BY id_cliente
Ele irá retornar o código do cliente e ao lado a quantidade de pedidos
que esse cliente realizou.
Agrupando valores em que o ID_Cliente seja maior que 200, faça:
SELECT id_cliente, COUNT (id_cliente) FROM pedido GROUP BY id_cliente
HAVING id_cliente > 200
EXERCICIO 02
Mostrar os clients e seus respectivos prazos de entrega, ordenados do maior para
o menor.
SELECT C.CLIENTE, P.PRAZO_ENTREGA FROM CLIENTE C, PEDIDO P WHERE
C.ID_CLIENTE = P.ID_CLIENTE ORDER BY P.PRAZO_ENTREGA DESC
28
INSERT, UPDATE E DELETE.
SINTAXE PARA INSERIR CAMPOS:
INSERT INTO nome_tabela (campo1,campo2) VALUES (valor1,valor2)
EX:
INSERT INTO vendedor (id_vendedor, vendedor, salario, comissão)
VALUES (‘721’,’CursodeSQL’,1000,’A’)
SINTAXE PARA ATUALIZAR CAMPOS:
UPDATE nome_tabela SET coluna = valor WHERE e condição.
EX:
UPDATE vendedor SET vendedor = ‘modificado’ WHERE id_vendedor =
721
SINTAXE PARA DELETAR CAMPOS:
DELETE FROM nome_tabela WHERE e condição.
EX:
DELETE FROM vendedor WHERE id_vendedor IN (‘721’,’722’,’723’)
JOIN
Junções deTabela:
EX:
SELECT pedido.num_cliente, pedido.prazo_entrega, cliente.cliente,
cliente.endereco, cliente.cidade FROM pedido, cliente WHERE pedido.id_cliente =
cliente.id_cliente
Com isso estaremos fazendo uma junção de duas tabelas (CLIENTE e
PEDIDO) retornando os valores dos campos selecionados.
Utilizando o JOIN
SELECT pedido.num_pedido, pedido.prazo_entrega, cliente.cliente
FROM cliente INNER JOIN pedido ON pedido.id_cliente = cliente.id_cliente.
EXERCICIO 04
Quantos clientes fizeram pedido com o vendedor João?
SELECT COUNT (C.ID_CLIENTE) FROM CLIENTE C, PEDIDO P, VENDEDOR V
WHERE C.ID_CLIENTE = P.ID_CLIENTE AND P.ID_VENDEDOR =
V.ID_VENDEDOR AND V.VENDEDOR = ‘JOAO’
E dessa forma, mostrará o nome dos clientes:
SELECT C.CLIENTE, V.VENDEDOR FROM CLIENTE C, PEDIDO P, VENDEDOR V
WHERE C.ID_CLIENTE = P.ID_CLIENTE AND P.ID_VENDEDOR =
V.ID_VENDEDOR AND V.VENDEDOR = ‘JOAO’
29
Quais os clientes fizeram pedido com o vendedor João e quais os produto
compraram ?
SELECT C.CLIENTE, PR.PRODUTO FROM CLIENTE C, PEDIDO P, VENDEDOR V,
ITEM_PEDIDO I, PRODUTO PR WHERE C.ID_CLIENTE = P.ID_CLIENTE AND
P.ID_VENDEDOR = V.ID_VENDEDOR AND P.NUM_PEDIDO = I.NUM_PEDIDO
AND I.ID_PRODUTO = PR.ID_PRODUTO AND V.VENDEDOR = ‘JOAO’
EXERCICIO 05
Mostre a quantidade total de cada pedido tirado por vendedor.
SELECT V.VENDEDOR, COUNT (P.NUM_PEDIDO) FROM PEDIDO P, VENDEDOR
V WHERE P.ID_VENDEDOR = V.ID_VENDEDOR GROUP BY V.VENDEDOR
ORDER BY V.VENDEDOR
EXERCICIO 06
Quais produtos participam de qualquer pedido cuja quantidade seja 10?
SELECT PRODUTO FROM PRODUTO WHERE ID_PRODUTO IN (SELECT
ID_PRODUTO FROM ITEM_PEDIDO WHRE QUANTIDADE = 10)
EXERCICIO 07
Quais os vendedores ganham um salário abaixo da média?
SELECT VENDEDOR FROM VENDEDOR WHERE SALARIO < (SELECT AVG
(SALARIO) FROM VENDEDOR)
EXERCICIO 08
Quais os produtos que não estão presentes em nenhum pedido?
SELECT PRODUTO FROM PRODUTO WHERE ID_PRODUTO NOT INT (SELECT
ID_PRODUTO FROM ITEM_PEDIDO)
EXERCICIO 09
Quais clientes estão presentes em mais de três pedidos?
SELECT C.CLIENTE COUNT (P.ID_CLIENTE) AS QTDE FROM PEDIDO P, CLIENTE
C WHERE P.ID_CLIENTE = C.ID_CLIENTE GROUP BY C.CLIENTE HAVING QTDE >
3