• Nenhum resultado encontrado

InserçãoeSeleção-MySQL

N/A
N/A
Protected

Academic year: 2021

Share "InserçãoeSeleção-MySQL"

Copied!
62
0
0

Texto

(1)

MySQL:

Inserção e Seleção em Tabelas

Programação de Servidores Marx Gomes Van der Linden

(2)

http://marx.vanderlinden.com.br/ 2

INSERT INTO

Para inserir novas entradas (linhas) em um

tabela, usa-se INSERT INTO.

Sintaxe:

INSERT INTO

tabela

[(campo1,

campo2...)] VALUES

(valor1,

valor2...)

(3)

http://marx.vanderlinden.com.br/ 3

Exemplo

mysql>

INSERT INTO

usuario

VALUES

('sawyer',

'James', 'Ford', 'masc');

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM usuario;

+---+---+---+---+

| login | primeiro_nome | ultimo_nome | sexo |

+---+---+---+---+

| kate | Katherine Anne Austen | NULL | fem |

| sayid | Sayid Hassan Jarrah | NULL | masc |

| hgale | Benjamin Linus | NULL | masc |

(4)

http://marx.vanderlinden.com.br/ 4

Exemplo

mysql>

INSERT INTO

usuario (ultimo_nome,

login, sexo)

VALUES

('Eko', 'mreko', 'masc');

Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM usuario;

+---+---+---+---+

| login | primeiro_nome | ultimo_nome | sexo |

+---+---+---+---+

| kate | Katherine Anne Austen | NULL | fem |

| sayid | Sayid Hassan Jarrah | NULL | masc |

| hgale | Benjamin Linus | NULL | masc |

(5)

http://marx.vanderlinden.com.br/ 5

INSERT INTO

É possível inserir mais de uma linha em um

mesmo comando INSERT INTO.

Cada linha da tabela deve estar contida em (),

(6)

http://marx.vanderlinden.com.br/ 6

Exemplo

mysql>

INSERT INTO

usuario

VALUES

('hurley', 'Hugo', 'Reyes', 'masc'),

('sun', 'Sun-Hwa', 'Kwon', 'fem');

Query OK, 2 rows affected (0.10 sec)

Records: 2 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM usuario;

+---+---+---+---+

| login | primeiro_nome | ultimo_nome | sexo |

+---+---+---+---+

| kate | Katherine Anne Austen | NULL | fem |

| sayid | Sayid Hassan Jarrah | NULL | masc |

| hgale | Benjamin Linus | NULL | masc |

| sawyer | James | Ford | masc |

(7)

http://marx.vanderlinden.com.br/ 7

INSERT INTO ... SET

A sintaxe INSERT INTO ... SET fornece uma

maneira alternativa de se especificarem os

campos para os quais se querem inserir

valores.

INSERT INTO

tabela

[(campo1,

(8)

http://marx.vanderlinden.com.br/ 8

Exemplo

mysql>

INSERT INTO

usuario

SET

login = 'walt',

primeiro_nome = 'Walter', sexo = 'masc';

Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM usuario;

+---+---+---+---+

| login | primeiro_nome | ultimo_nome | sexo |

+---+---+---+---+

| kate | Katherine Anne Austen | NULL | fem |

| sayid | Sayid Hassan Jarrah | NULL | masc |

| hgale | Benjamin Linus | NULL | masc |

| sawyer | James | Ford | masc |

(9)

http://marx.vanderlinden.com.br/ 9

LOAD DATA INFILE

O comando LOAD DATA INFILE insere linhas

em uma tabela de acordo com os valores lidos

a partir de um arquivo-texto externo.

O arquivo deve conter uma entrada por linha,

com campos separados por tabulação.

Valores nulos → \N

Sintaxe:

LOAD DATA [LOCAL]

INFILE

arquivo

INTO TABLE

tabela

;

O parâmentro LOCAL indica que o arquivo

(10)

http://marx.vanderlinden.com.br/ 10

Exemplo: novos.txt

desmond

Desmond

David Hume

masc

paulo

Paulo

\N

masc

(11)

http://marx.vanderlinden.com.br/ 11

Exemplo

mysql>

LOAD DATA LOCAL INFILE

'/home/marx/novos.txt'

INTO TABLE

usuario;

Query OK, 3 rows affected (0.00 sec)

Records: 3 Deleted: 0 Skipped: 0 Warnings: 0

mysql> SELECT * FROM usuario;

+---+---+---+---+

| login | primeiro_nome | ultimo_nome | sexo |

+---+---+---+---+

| kate | Katherine Anne Austen | NULL | fem |

| sayid | Sayid Hassan Jarrah | NULL | masc |

| hgale | Benjamin Linus | NULL | masc |

| sawyer | James | Ford | masc |

| mreko | NULL | Eko | masc |

(12)

http://marx.vanderlinden.com.br/ 12

mysqlimport

A aplicação mysqlimport fornece uma

maneira de importar arquivos de texto em

tabelas.

Sintaxe:

mysqlimport [OPÇÕES] [--local]

nome_bd arquivo

O nome da tabela é deduzido a partir do

nome do arquivo de texto.

As opções de acesso e autenticação são as

(13)

http://marx.vanderlinden.com.br/ 13

Expressões

Expressões SQL são formadas por uma

combinação de operadores, operandos e

funções embutidas.

Operadores aritméticos:

+ - * /

Precedência similar à tipicamente

encontrada em linguagens de

programação.

(14)

http://marx.vanderlinden.com.br/ 14

Expressões

mysql>

SELECT

3+4*5+6;

+---+

| 3+4*5+6 |

+---+

| 29 |

+---+

1 row in set (0.00 sec)

mysql>

SELECT

(3+4)*5+6;

+---+

| (3+4)*5+6 |

+---+

| 41 |

+---+

(15)

http://marx.vanderlinden.com.br/ 15

Operadores

Operadores de comparação de igualdade

=

Serve para todos os tipos de variáveis

Faz as conversões automaticamente,

sempre que possível.

<=>

Funciona como <=>, mas entende

(16)

http://marx.vanderlinden.com.br/ 16

Expressões

mysql>

SELECT

1 = 0 \G

************** 1. row **************

1 = 0:

0

1 row in set (0.00 sec)

mysql>

SELECT

'0' = 0 \G

************** 1. row **************

'0' = 0:

1

1 row in set (0.00 sec)

mysql>

SELECT

'0.0' = 0 \G

************** 1. row **************

'0.0' = 0:

1

(17)

http://marx.vanderlinden.com.br/ 17

Expressões

mysql>

SELECT

NULL

= 0 \G

************** 1. row **************

NULL = 0:

NULL

1 row in set (0.00 sec)

mysql>

SELECT

NULL

=

NULL

\G

************** 1. row **************

NULL = NULL:

NULL

1 row in set (0.00 sec)

mysql>

SELECT

NULL

<=> 0 \G

************** 1. row **************

NULL <=> 0:

0

1 row in set (0.00 sec)

mysql>

SELECT

NULL

<=>

NULL

\G

************** 1. row **************

NULL <=> NULL:

1

(18)

http://marx.vanderlinden.com.br/ 18

Operadores

Operadores de desigualdade:

<>, !=

Operadores de comparação numérica:

<=, <, >, >=

Operadores de comparação com NULL:

IS

[NOT]

NULL

Operadores de comparação com booleano:

IS

[NOT] (TRUE

|

FALSE)

(19)

http://marx.vanderlinden.com.br/ 19

Expressões

expr [NOT] BETWEEN

a AND

b

Retorna 1 se expr >= a e expr <= b; 0 do

contrário

Use NOT para inverter o resultado

IF(cond, expr1, expr2)

Retorna expr1 se cond for verdadeira, expr2,

(20)

http://marx.vanderlinden.com.br/ 20

Expressões

mysql>

SELECT

3+2

BETWEEN

5

AND

10 \G

************** 1. row **************

3+2 BETWEEN 5 AND 10:

1

1 row in set (0.00 sec)

mysql>

SELECT

2*6

BETWEEN

5

AND

10 \G

************** 1. row **************

2*6 BETWEEN 5 AND 10:

0

1 row in set (0.00 sec)

mysql>

SELECT IF

(

4*10<100/2, 'menor', 'maior'

)

\G

************** 1. row **************

IF(4*10<100/2, 'menor', 'maior'):

menor

(21)

http://marx.vanderlinden.com.br/ 21

CASE

A estrutura CASE pode servir para comparar um

valor com vários outros:

CASE

n

WHEN

valor1 THEN

resultado1

[WHEN

valor2 THEN

resultado2 ...]

[ELSE

resultado_padrao]

END;

(22)

http://marx.vanderlinden.com.br/ 22

CASE

mysql>

SELECT CASE

8*9

->

WHEN

70

THEN

'errado'

->

WHEN

71

THEN

'errado também'

->

WHEN

72

THEN

'certo'

->

ELSE

'tente novamente'

->

END

\G

************** 1. row **************

CASE 8*9 WHEN 70 THEN 'errado' WHEN 71 THEN

'errado também' WHEN 72 THEN 'certo' ELSE

'tente novamente' END:

certo

(23)

http://marx.vanderlinden.com.br/ 23

CASE

Também é possível usar CASE sem um valor

de n para comparar. Nesse caso, testam-se

várias expressões.

CASE

WHEN

valor1 THEN

resultado1

[WHEN

valor2 THEN

resultado2 ...]

[ELSE

resultado_padrao]

END;

(24)

http://marx.vanderlinden.com.br/ 24

CASE

mysql>

SELECT CASE

->

WHEN

10<9

THEN

'primeiro'

->

WHEN

7='7'

THEN

'segundo'

->

WHEN

3>2

THEN

'terceiro'

->

ELSE

'tente novamente'

->

END

\G

************** 1. row **************

CASE WHEN 10<9 THEN 'primeiro' WHEN 7='7' THEN

'segundo' WHEN 3>2 THEN 'terceiro' ELSE 'tente

novamente' END:

segundo

(25)

http://marx.vanderlinden.com.br/ 25

Funções usadas em Expressões

LEAST

(valor1, valor2, ...)

GREATEST

(valor1, valor2, ...)

Retorna o menor ou maior valor da lista.

expr IN

(valor1, valor2, ...)

Retorna 1 se a expressão estiver contida na

(26)

http://marx.vanderlinden.com.br/ 26

CASE

mysql>

SELECT LEAST

(5,45,83,18.5) \G

************** 1. row **************

LEAST(5,45,83,18.5):

5

1 row in set (0.06 sec)

mysql>

SELECT GREATEST

('goomba', 'shyguy',

'koopa') \G

************** 1. row **************

GREATEST('goomba

', 'shyguy', 'koopa'): shyguy

1 row in set (0.00 se

c)

mysql>

SELECT

8

IN

(7.8, 7.9, 8.0, 8.1) \G

************** 1. row **************

8 IN (7.8, 7.9, 8.0, 8.1):

1

(27)

http://marx.vanderlinden.com.br/ 27

SELECT

O comando SELECT também serve para extrair

informações armazenadas no banco de dados.

É possivelmente o comando mais complexo e

poderoso da linguagem SQL.

Sintaxe (simplificada):

SELECT

<

campos

> FROM

tabela

[WHERE

condições

]

(28)

http://marx.vanderlinden.com.br/ 28

SELECT

mysql>

SELECT

*

FROM

sgbd;

+----+---+---+---+---+

| id | nome | maxcols | lanc | livre |

+----+---+---+---+---+

| 1 | MySQL | 3398 | 1996 | sim |

| 2 | PostgreSQL | 1600 | 1989 | sim |

| 3 | Oracle | 1000 | 1979 | nao |

| 4 | MS SQL Server | 1024 | 1989 | nao |

| 5 | MS Acess | 255 | 1992 | nao |

| 6 | SQLite | 2000 | 2000 | sim |

+----+---+---+---+---+

(29)

http://marx.vanderlinden.com.br/ 29

SELECT

mysql>

SELECT

nome,lanc

FROM

sgbd;

+---+---+

| nome | lanc |

+---+---+

| MySQL | 1996 |

| PostgreSQL | 1989 |

| Oracle | 1979 |

| MS SQL Server | 1989 |

| MS Acess | 1992 |

| SQLite | 2000 |

+---+---+

(30)

http://marx.vanderlinden.com.br/ 30

SELECT

mysql>

SELECT

livre,lanc,nome

FROM

sgbd;

+---+---+---+

| livre | lanc | nome |

+---+---+---+

| sim | 1996 | MySQL |

| sim | 1989 | PostgreSQL |

| nao | 1979 | Oracle |

| nao | 1989 | MS SQL Server |

| nao | 1992 | MS Acess |

| sim | 2000 | SQLite |

+---+---+---+

(31)

http://marx.vanderlinden.com.br/ 31

SELECT

mysql>

SELECT

livre,lanc,livre,nome

FROM

sgbd;

+---+---+---+---+

| livre | lanc | livre | nome |

+---+---+---+---+

| sim | 1996 | sim | MySQL |

| sim | 1989 | sim | PostgreSQL |

| nao | 1979 | nao | Oracle |

| nao | 1989 | nao | MS SQL Server |

| nao | 1992 | nao | MS Acess |

| sim | 2000 | sim | SQLite |

+---+---+---+---+

(32)

http://marx.vanderlinden.com.br/ 32

SELECT ... WHERE

Após a cláusula WHERE, é possível especificar

uma condição envolvendo uma ou mais

colunas.

Apenas as linhas em que a condição é válida

serão exibidas.

A condição é formatada como uma

(33)

http://marx.vanderlinden.com.br/ 33

SELECT ... WHERE

mysql>

SELECT

nome, lanc

FROM

sgbd

->

WHERE

lanc > 1990;

+---+---+

| nome | lanc |

+---+---+

| MySQL | 1996 |

| MS Acess | 1992 |

| SQLite | 2000 |

+---+---+

(34)

http://marx.vanderlinden.com.br/ 34

SELECT ... WHERE

mysql>

SELECT

*

FROM

sgbd

->

WHERE

lanc

BETWEEN

1980

AND

1989;

+----+---+---+---+---+

| id | nome | maxcols | lanc | livre |

+----+---+---+---+---+

| 2 | PostgreSQL | 1600 | 1989 | sim |

| 4 | MS SQL Server | 1024 | 1989 | nao |

+----+---+---+---+---+

(35)

http://marx.vanderlinden.com.br/ 35

SELECT ... WHERE

mysql>

SELECT

*

FROM

sgbd

->

WHERE

lanc > maxcols;

+----+---+---+---+---+

| id | nome | maxcols | lanc | livre |

+----+---+---+---+---+

| 2 | PostgreSQL | 1600 | 1989 | sim |

| 3 | Oracle | 1000 | 1979 | nao |

| 4 | MS SQL Server | 1024 | 1989 | nao |

| 5 | MS Acess | 255 | 1992 | nao |

+----+---+---+---+---+

4 rows in set (0.00 sec)

(36)

http://marx.vanderlinden.com.br/ 36

Operadores Booleanos

É possível usar operadores booleanos em

expressões:

OR, ||

AND, &&

NOT, !

(37)

http://marx.vanderlinden.com.br/ 37

Operadores Booleanos

mysql>

SELECT

*

FROM

sgbd

->

WHERE

lanc > 1990

AND

livre = 'sim';

+----+---+---+---+---+

| id | nome | maxcols | lanc | livre |

+----+---+---+---+---+

| 1 | MySQL | 3398 | 1996 | sim |

| 6 | SQLite | 2000 | 2000 | sim |

+----+---+---+---+---+

2 rows in set (0.00 sec)

(38)

http://marx.vanderlinden.com.br/ 38

Operadores Booleanos

mysql>

SELECT

*

FROM

sgbd

->

WHERE

maxcols > 2000

OR

livre = 'nao';

+----+---+---+---+---+

| id | nome | maxcols | lanc | livre |

+----+---+---+---+---+

| 1 | MySQL | 3398 | 1996 | sim |

| 3 | Oracle | 1000 | 1979 | nao |

| 4 | MS SQL Server | 1024 | 1989 | nao |

| 5 | MS Acess | 255 | 1992 | nao |

+----+---+---+---+---+

4 rows in set (0.00 sec)

(39)

http://marx.vanderlinden.com.br/ 39

Operadores Booleanos

mysql>

SELECT

*

FROM

usuario

->

WHERE

sexo = 'fem';

+---+---+---+---+ | login | primeiro_nome | ultimo_nome | sexo | +---+---+---+---+ | kate | Katherine Anne Austen | NULL | fem | | sun | Sun-Hwa | Kwon | fem | | rousseau | Danielle | Rousseau | fem | +---+---+---+---+

(40)

http://marx.vanderlinden.com.br/ 40

Operadores Booleanos

mysql>

SELECT

*

FROM

usuario

->

WHERE

sexo = 'fem'

->

AND

ultimo_nome

IS NOT NULL

;

+---+---+---+---+ | login | primeiro_nome | ultimo_nome | sexo | +---+---+---+---+ | sun | Sun-Hwa | Kwon | fem | | rousseau | Danielle | Rousseau | fem | +---+---+---+---+

(41)

http://marx.vanderlinden.com.br/ 41

SELECT ... ORDER BY

Para ordenar os resultados retornados por um

select, basta anexar o parâmentro ORDER BY.

Sintaxe:

SELECT

(...)

ORDER BY

campo1 [

DESC

|

ASC

]

(42)

http://marx.vanderlinden.com.br/ 42

SELECT ... ORDER BY

mysql>

SELECT

*

FROM

usuario

ORDER BY

login;

+---+---+---+---+ | login | primeiro_nome | ultimo_nome | sexo | +---+---+---+---+ | desmond | Desmond | David Hume | masc | | hgale | Benjamin Linus | NULL | masc | | hurley | Hugo | Reyes | masc | | kate | Katherine Anne Austen | NULL | fem | | mreko | NULL | Eko | masc | | paulo | Paulo | NULL | masc | | rousseau | Danielle | Rousseau | fem | | sawyer | James | Ford | masc | | sayid | Sayid Hassan Jarrah | NULL | masc | | sun | Sun-Hwa | Kwon | fem | | walt | Walter | NULL | masc | +---+---+---+---+

(43)

http://marx.vanderlinden.com.br/ 43

SELECT ... ORDER BY

mysql>

SELECT

sexo, login, primeiro_nome

->

FROM

usuario

ORDER BY

sexo;

+---+---+---+ | sexo | login | primeiro_nome | +---+---+---+ | masc | desmond | Desmond | | masc | paulo | Paulo | | masc | walt | Walter | | masc | hurley | Hugo | | masc | mreko | NULL | | masc | sawyer | James | | masc | hgale | Benjamin Linus | | masc | sayid | Sayid Hassan Jarrah | | fem | sun | Sun-Hwa | | fem | rousseau | Danielle | | fem | kate | Katherine Anne Austen | +---+---+---+

(44)

http://marx.vanderlinden.com.br/ 44

SELECT ... ORDER BY

mysql>

SELECT

sexo, login, primeiro_nome

->

FROM

usuario

ORDER BY

sexo

DESC

, login;

+---+---+---+ | sexo | login | primeiro_nome | +---+---+---+ | fem | kate | Katherine Anne Austen | | fem | rousseau | Danielle | | fem | sun | Sun-Hwa | | masc | desmond | Desmond | | masc | hgale | Benjamin Linus | | masc | hurley | Hugo | | masc | mreko | NULL | | masc | paulo | Paulo | | masc | sawyer | James | | masc | sayid | Sayid Hassan Jarrah | | masc | walt | Walter | +---+---+---+ 11 rows in set (0.00 sec)

(45)

http://marx.vanderlinden.com.br/ 45

SELECT ... LIMIT

Para limitar o número de linhas retornadas por

um SELECT, basta utilizar o parâmetro LIMIT.

Sintaxe:

SELECT

(...)

LIMIT

[

atraso

, ]

nlinhas

atraso indica o número de linhas a pular

antes de iniciar a contagem

Padrão: 0

(46)

http://marx.vanderlinden.com.br/ 46

SELECT ... LIMIT

mysql>

SELECT

login, primeiro_nome

->

FROM

usuario

ORDER BY

login;

+---+---+ | login | primeiro_nome | +---+---+ | desmond | Desmond | | hgale | Benjamin Linus | | hurley | Hugo | | kate | Katherine Anne Austen | | mreko | NULL | | paulo | Paulo | | rousseau | Danielle | | sawyer | James | | sayid | Sayid Hassan Jarrah | | sun | Sun-Hwa | | walt | Walter | +---+---+

(47)

http://marx.vanderlinden.com.br/ 47

SELECT ... LIMIT

mysql>

SELECT

login, primeiro_nome

->

FROM

usuario

ORDER BY

login

->

LIMIT

5;

+---+---+

| login | primeiro_nome |

+---+---+

| desmond | Desmond |

| hgale | Benjamin Linus |

| hurley | Hugo |

| kate | Katherine Anne Austen |

| mreko | NULL |

+---+---+

(48)

http://marx.vanderlinden.com.br/ 48

SELECT ... LIMIT

mysql>

SELECT

login, primeiro_nome

->

FROM

usuario

ORDER BY

login

->

LIMIT

5,5;

+---+---+

| login | primeiro_nome |

+---+---+

| paulo | Paulo |

| rousseau | Danielle |

| sawyer | James |

| sayid | Sayid Hassan Jarrah |

| sun | Sun-Hwa |

+---+---+

(49)

http://marx.vanderlinden.com.br/ 49

SELECT DISTINCT

A palavra DISTINCT

indica que o SELECT

deve retornar todos os valores não repetidos de

uma coluna ou combinação de colunas.

Sintaxe:

SELECT DISTINCT

campo1

(50)

http://marx.vanderlinden.com.br/ 50

SELECT ... LIMIT

mysql>

SELECT

*

FROM

exemplo;

+---+---+---+

| x | y | z |

+---+---+---+

| a | b | c |

| a | b | d |

| a | b | e |

| i | j | d |

| i | j | e |

| i | j | k |

| i | z | k |

+---+---+---+

(51)

http://marx.vanderlinden.com.br/ 51

SELECT ... LIMIT

mysql>

SELECT DISTINCT

x

FROM

exemplo;

+---+

| x |

+---+

| a |

| i |

+---+

(52)

http://marx.vanderlinden.com.br/ 52

SELECT ... LIMIT

mysql>

SELECT DISTINCT

x,y

FROM

exemplo;

+---+---+

| x | y |

+---+---+

| a | b |

| i | j |

| i | z |

+---+---+

(53)

http://marx.vanderlinden.com.br/ 53

COUNT, GROUP BY

A função COUNT pode ser usada em um

SELECT para contabilizar a quantidade de

resultados encontrados.

Sintaxe:

SELECT COUNT(

colunas

...)

(...)

(54)

http://marx.vanderlinden.com.br/ 54

SELECT COUNT

mysql>

SELECT COUNT

(*)

FROM

usuario

->

WHERE

sexo = 'masc';

+---+

| COUNT(*) |

+---+

| 8 |

+---+

(55)

http://marx.vanderlinden.com.br/ 55

SELECT COUNT .. GROUP BY

mysql>

SELECT

sexo,

COUNT

(*)

->

FROM

usuario

->

GROUP BY

sexo;

+---+---+

| sexo | COUNT(*) |

+---+---+

| masc | 8 |

| fem | 3 |

+---+---+

(56)

http://marx.vanderlinden.com.br/ 56

Exemplo: Cidades do Brasil

mysql>

SELECT

*

FROM

cidade;

+----+---+---+---+ | id | nome | estado | populacao | +----+---+---+---+ | 1 | Campo Grande | MS | 724524 | | 2 | Porto Alegre | RS | 1420667 | | 3 | João Pessoa | PB | 674762 | | 4 | Fortaleza | CE | 2431415 | | 5 | Belo Horizonte | MG | 2412937 | | 6 | Salvador | BA | 2892625 | | 8 | Teresina | PI | 779939 | | 9 | Natal | RN | 774230 | | 10 | Nova Iguaçu | RJ | 830672 | | 11 | São Bernardo do Campo | SP | 781390 | | 12 | São Paulo | SP | 10886518 | | 13 | Osasco | SP | 701012 | | 14 | Belém | PA | 1408847 | | 17 | Duque de Caxias | RJ | 842686 |

(57)

http://marx.vanderlinden.com.br/ 57

Exemplo: Cidades do Brasil

mysql>

SELECT DISTINCT

estado

FROM

cidade;

+---+ | estado | +---+ | MS | | RS | | PB | | CE | | MG | | BA | | PI | | RN | | RJ | | SP | | PA | | PR | | AM | | PE | +---+

(58)

http://marx.vanderlinden.com.br/ 58

Exemplo: Cidades do Brasil

mysql>

SELECT

estado,

COUNT

(estado)

->

FROM

cidade

GROUP BY

estado;

+---+---+ | estado | COUNT(estado) | +---+---+ | AM | 1 | | BA | 1 | | CE | 1 | | MG | 1 | | MS | 1 | | PA | 1 | | PB | 1 | | PE | 1 | | PI | 1 | | PR | 1 | | RJ | 4 | | RN | 1 | | RS | 1 | | SP | 5 | +---+---+

(59)

http://marx.vanderlinden.com.br/ 59

Exemplo: Cidades do Brasil

mysql>

SELECT

estado,

COUNT

(estado)

->

FROM

cidade

GROUP BY

estado

->

ORDER BY COUNT

(estado)

DESC

;

+---+---+ | estado | COUNT(estado) | +---+---+ | SP | 5 | | RJ | 4 | | PE | 1 | | CE | 1 | | MG | 1 | | BA | 1 | | PI | 1 | | RN | 1 | | PA | 1 | | MS | 1 | | PR | 1 | | RS | 1 | | AM | 1 | | PB | 1 | +---+---+

(60)

http://marx.vanderlinden.com.br/ 60

Exemplo: Cidades do Brasil

mysql>

SELECT

estado,

COUNT

(estado)

->

FROM

cidade

GROUP BY

estado

->

ORDER BY COUNT

(estado)

DESC

;

+---+---+ | estado | COUNT(estado) | +---+---+ | SP | 5 | | RJ | 4 | | PE | 1 | | CE | 1 | | MG | 1 | | BA | 1 | | PI | 1 | | RN | 1 | | PA | 1 | | MS | 1 | | PR | 1 | | RS | 1 | | AM | 1 | | PB | 1 | +---+---+

(61)

http://marx.vanderlinden.com.br/ 61

AVG, SUM

As funções AVG e SUM podem ser usadas em

conjunto com GROUP BY:

AVG(coluna)

Retorna a média dos valores do campo.

SUM(coluna)

(62)

http://marx.vanderlinden.com.br/ 62

Exemplo: Cidades do Brasil

mysql>

SELECT

estado,

COUNT

(estado),

->

SUM

(populacao),

AVG

(populacao)

->

FROM

cidade

GROUP BY

estado

->

ORDER BY COUNT

(estado)

DESC LIMIT

10;

+---+---+---+---+

| estado | COUNT(estado) | SUM(populacao) | AVG(populacao) | +---+---+---+---+ | SP | 5 | 14644409 | 2928881.8000 | | RJ | 4 | 8727461 | 2181865.2500 | | RS | 1 | 1420667 | 1420667.0000 | | BA | 1 | 2892625 | 2892625.0000 | | PE | 1 | 1533580 | 1533580.0000 | | PB | 1 | 674762 | 674762.0000

Referências

Documentos relacionados

Em 1999, publiquei um pequeno texto que, entre outras coisas, abordava as ambiguidades apresentadas pela sentença O ladrão tirou a chave da porta da frente, apresentada na forma

Nesse procedimento metodológico de decomposição do índice de Gini, será analisada a contribuição da cada parcela da renda do trabalho, categorizado inicialmente

considerado sujeito de direito, pois era propriedade do dominus. O trabalho escravo continuava no tempo, de modo indefinido, mais precisamente enquanto o escravo vivesse ou deixasse

Curvas de rarefação (Coleman) estimadas para amostragens de espécies de morcegos em três ambientes separadamente (A) e agrupados (B), no Parque Estadual da Ilha do Cardoso,

CENTROS ECORREGIONAIS: Embrapa Amazônia Ocidental; Embrapa Cerrados; Embrapa Clima Temperado; Embrapa Acre; Embrapa Amapá; Embrapa Rondônia; Embrapa Roraima; Embrapa Meio-Norte;

Em condições em que a temperatura do termômetro globo é menor que a temperatura do termômetro de bulbo seco, o ITEG-500 permite através dessa configuração, realizar uma

autoincriminação”, designadamente através da indicação de exemplos paradigmáticos. Sem prejuízo da relevância da matéria – traduzida, desde logo, no número e

O que nos importa saber ao fi nal deste capítulo inicial é que a educação é o processo por meio do qual o homem tem desenvolvidas as habilidades, nas mais variadas dimensões de