Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Sintaxe SQL: Exemplos e Funções, Notas de estudo de Informática

Os conceitos básicos da sintaxe sql, incluindo seleção de colunas, strings, expressões numéricas, valores nulos, ordenação e agregados. Além disso, fornece exemplos práticos de consultas sql com diferentes funções, como sum, avg, min, max e count.

Tipologia: Notas de estudo

2013

Compartilhado em 28/08/2013

Garoto
Garoto 🇪🇸

4.6

(121)

1 / 14

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Sintaxe simplificada:
o select titulo_de_coluna = nome_de_coluna (,...)
Atenção: A falta de uma vírgula na lista de seleção pode causar que a seguinte coluna
seja tratada como um título de coluna ao invés de um nome de coluna.
Exemplo:
o select CPF = au_id, SOBRENOME = au_lname
from authors
where state = ‘CA’
Strings de caracteres nos resultados da query
Adicionando strings de caracteres à cláusula select.
Exemplo:
o select ‘O NOME DA LOJA É’, stor_name
from stores
where stor_id = ‘7067’
o select ‘TOTAL DE VENDAS’, total_sales, ‘DO LIVRO’, title_id
from titles
where type ‘psychology’
o select ‘O NOME DO EDITOR’, pub_id ‘É ‘, pub_name
from publishers
Expressões numéricas
Operadores aritméticos
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Pré-visualização parcial do texto

Baixe Sintaxe SQL: Exemplos e Funções e outras Notas de estudo em PDF para Informática, somente na Docsity!

Sintaxe simplificada: o select titulo_de_coluna = nome_de_coluna (,...)

Atenção: A falta de uma vírgula na lista de seleção pode causar que a seguinte coluna seja tratada como um título de coluna ao invés de um nome de coluna.

Exemplo: o select CPF = au_id, SOBRENOME = au_lname from authors where state = ‘CA’

Strings de caracteres nos resultados da query

Adicionando strings de caracteres à cláusula select.

Exemplo: o select ‘O NOME DA LOJA É’, stor_name from stores where stor_id = ‘7067’ o select ‘TOTAL DE VENDAS’, total_sales, ‘DO LIVRO’, title_id from titles where type ‘psychology’ o select ‘O NOME DO EDITOR’, pub_id ‘É ‘, pub_name from publishers

Expressões numéricas

  • Operadores aritméticos

Símbolo Operação

  • Adição
  • Subtração
  • Multiplicação / Divisão % Módulo
  • podem ser usados em qualquer coluna numérica;
  • usados em qualquer cláusula que permita uma expressão;
  • módulo não pode ser usado em colunas de valores monetário.

o Adição select advance, price, advance + price, title_id from titles where type ‘business’ o Subtração select advance, price, advance - price, title_id from titles where type = ‘business’ o Multiplicação select title, RECEITA = price * total_sales from titles where type = ‘business’ o Multiplicação (expressão usada na cláusula where) select title, RECEITA = price * total_sales from titles where price * total_sales > 8000 o Multiplicação (múltiplas condições) select title, RECEITA = price * total_sales from titles where price * total_sales > 8000 and type = ‘business’ o Divisão select title, VENDAS MENSAIS = total_salles/

Valores nulos

  • um valor nulo implica em um valor desconhecido o um valor nulo não implica em zeros ou brancos, não existe valor designado; o is null ( = nul ) pode ser usado para selecionar colunas que contém valores nulos.
  • Um valor nulo nunca é igual a outro valor nulo.
  • Algumas colunas são definidas para permitir valores nulos.
  • Operações envolvendo nulos resultam em nulos.

Exemplo: o select title, price from titles where type = ‘popular_comp’ and price is null o select title_id, advance from titles where type = ‘popular_comp’ and price = null select title_id, advance from titles where advance is not null o select title_id, advance from titles where advance < 5000 o select title_id, advance from titles where advance < 5000 or advance is null o operação envolvendo nulos resultando nulos select title_id, advance, price, advance / price from titles where type not in (‘business’, ‘psychology’, ‘trad_cook’)

Select / order by

A clausula order by sorteia os resultados da pergunta (em ordem ascendente por default)

  • itens nomeados nessa cláusula não precisam aparecer no select_list;
  • Usando order by, nulos são listados primeiro.

Sintaxe simplificada: o select [distinct] lista_do_select from lista_de_tabelas [where condições_de_pesquisa] [order by {coluna/expressão} [asc/dsc] [,...]]

Exemplo: o select stor_name state from stores order by state, stor_name o select stor_name, state from stores order by state, stor_name desc o ordenando por coluna derivada select ((total_sales / 12) * 1.10), title_id from titles where type = ‘psychology’ order by ((total_sales / l2) * 1.10) o ordenando por coluna não constante no select select title, price from titles where pub_id = ‘0736’ order by pubdate o nulos aparecendo primeiro select title_id, type, price from titles

  • MIN: determina o menor valor o select min (price) from titles
  • SUM: determina a quantidade total de valores em determinada coluna o select sum (total_sales) from titles where type = ‘psychology’
  • AVG: determina a média dos valores em determinada coluna o select avg (advance) from titles
  • mais de uma função agregada pode ser usada na cláusula select Exemplo: o select min (advance), max (advance) from titles
  • Palavra chave distinct o Opcional com SUM, AVG, e COUNT; o Não permitida com MIN, MAX e COUNT(*); o Permitida com COUNT(nome_de_coluna); o Usado somente com nomes de colunas, e não com expressões aritméticas. Exemplo: o select avg (distinct price) from titles where type = ‘business’ Resultado = 11. o select avg (price) from titles Resultado = 13. o select count (distinct type) from titles

Lidando com valores nulos

Tomando um valor nulo a ser contado numa função agregada.

  • isnull (expressão, valor) o select avg (price) from titles o select avg (isnull(price, $9.98)) from titles (para livros que não possuem preço, assumir U$ 9.98) o select price * 2 from titles o select isnull (price, 0) * 2 from titles

Selecto/Group by

A cláusula group by divide dados em grupos

  • Normalmente usado com uma função agregada na lista_de_select.
  • Todos os valores nulos na coluna “group by” são tratados como um grupo.

Sintaxe simplificada: select [distinct] lista_de_select from lista_de_tabelas [ where condições_de_pesquisa] [ group by [all] expressão_agregada [,…]] [ order by coluna/expressão [asc|desc] [,...]]

Exemplos: (uso correto) select type, avg(price) from titles group by type

Exemplo: select title_id, avg(price) from titles where type in (‘business’, ’popularcomp’) group by type

select type, avg(price) from titles where type in (‘business’, ‘popular_comp’) group by all type

A cláusula “having” determina condições para cláusula”group by”

  • Aplica uma condição aos grupos depois que eles foram formados.

Sintaxe simplificada: select [distinct] lista_do_select from lista_de_tabelas [ where condições_de_pesquisa] [ group by [all] expressão_agregada [,...]] [ having condições_de_pesquisa] [ order by {coluna|expressão} [asc|desc] [,...]]

select title_id, pubdate, total_sales, price from titles where total_sales > 4000 having pubdate > 06/12/ (Lista todos os livros publicados depois de 06/12/85 e que venderam mais de 4000 cópias)

ou

select title_id, pubdate, total_sales, price from titles where total_sales > 4000 and pubdate > 06/12/

select title_id, sum(qty) from salesdetail group by title_id having sum(qty) > 50 (Quais os livros que venderam mais de 50 cópias?)

select title_id, sum(qty) from salesdetail where discount > 50 group by title_id having sum(qty) > 50 (Quais os livros com desconto maior que 50% que venderam mais de 50 cópias?)

Operação de união “JOIN”

O “join” é uma operação de multi-tabelas

  • Select: o nome da coluna deve ser precedido pelo nome da tabela, se o nome da coluna for ambíguo, isto é, se mais de uma coluna na tabela especificada na cláusula “from” tiver o mesmo nome.
  • From: duas ou mais tabelas listadas no comando “from” indicam ao SQL server que uma união é desejada.
  • tabelas podem estar localizadas no mesmo BD ou em diferentes BDs.
  • Where: colunas são comparadas; elas devem ter valores similares (valores puxados do mesmo domínio).
  • não precisam ter o mesmo tipo de dados; mas tem de ser de um tipo que o SQL server automaticamente converta.
  • (int, smallint, tinyint, decimal real or float);
  • (char, varchar, datetime and smalldatetime)

(ordenando por coluna derivada) select titles.title_id, qty, price, “PRECO TOTAL” = price * qty from titles, salesdetail where titles.title_id = salesdetail.title_id order by price * qty

Aliases

Função que fornece um modo abreviado para referenciar tabelas num simples comando SQL.

Sintaxe simplificada: select lista_de_select from nome_de_tabela alias_1 , nome_de_tabela alias_ where alias_1 .nome_de_coluna = alias_2 .nome_de_coluna

Exemplo: select t.title_id from titles t.titleauthor ta where t.title_id = ta.title_id and au_id = ‘409-56-7008’ (Quais os livros escritos pelo autor com codigo 409-56-7008?)

“JOINS” não baseados em igualdade

Operadores de comparação usados.

  • maior que

  • < menor que
  • = maior igual que

  • <= menor igual que

Exemplo: select ‘ESTADO DO EDITOR’ = p.state, au_lname, au_fname, a.state from publishers p,authors a where a.state > p.state and pub_name = “New Age Books” (Que autores moram num estado cujo o nome é alfabeticamente maior que o estado da editora “New Age Books”?)

Self-Joins

Unindo uma tabela á ela mesma

  • une linhas de uma tabela a outras (ou à mesma) linhas nessa tabela
  • Mais de um par de colunas pode ser usado para especificar a condição “join”.
  • Existem autores que tenham o mesmo sobrenome?
  • “join” não igual normalmente é feito com um “self_join”
    • Duas colunas são usadas na condição (incompleto)

(incompleto) select au1.au_lname, au1.au_fname, au1.city from authors au1, authors au where au2.au_lname = ‘Karsen’ and au2.au_fname = ‘Livia’ and au1.city = au2.city (Que autores moram na mesma cidade que Livia Karsen?)

(incompleto) select a1.au_lname, a1.au_fname from authors a1, authors a where a1.au_lname = a2.au_lname

select a1.au_lname, a1.au_fname from authors a1, authors a where a1.au_id != a2.au_id