29
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

Curso de Mysql

Embed Size (px)

Citation preview

Page 1: Curso de Mysql

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

Page 2: Curso de Mysql

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 */

Page 3: Curso de Mysql

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;

Page 4: Curso de Mysql

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

Page 5: Curso de Mysql

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.

Page 6: Curso de Mysql

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

Page 7: Curso de Mysql

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

Page 8: Curso de Mysql

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.

Page 9: Curso de Mysql

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

Page 10: Curso de Mysql

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:

Page 11: Curso de Mysql

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:

Page 12: Curso de Mysql

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.

Page 13: Curso de Mysql

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.

Page 14: Curso de Mysql

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”.

Page 15: Curso de Mysql

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

Page 16: Curso de Mysql

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.

Page 17: Curso de Mysql

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.

Page 18: Curso de Mysql

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)

Page 19: Curso de Mysql

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.

Page 20: Curso de Mysql

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.

Page 21: Curso de Mysql

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’.

Page 22: Curso de Mysql

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.

Page 23: Curso de Mysql

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’.

Page 24: Curso de Mysql

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.

Page 25: Curso de Mysql

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.

Page 26: Curso de Mysql

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

Page 27: Curso de Mysql

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

Page 28: Curso de Mysql

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’

Page 29: Curso de Mysql

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