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


51260222 - bd2 - apostila - sql - 2, Notas de estudo de Física

apostila de sql

Tipologia: Notas de estudo

2012

Compartilhado em 27/07/2012

pedro-silva-18
pedro-silva-18 🇧🇷

5

(1)

6 documentos

1 / 46

Toggle sidebar

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

Não perca as partes importantes!

bg1
1
Apostila de SQL
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e

Pré-visualização parcial do texto

Baixe 51260222 - bd2 - apostila - sql - 2 e outras Notas de estudo em PDF para Física, somente na Docsity!

Apostila de SQL

1. Introdução

A primeira versão da linguagem SQL, chamada SEQUEL (Structured Query

English Language), surgiu em 1974 nos laboratórios da IBM (Califórnia).

Entre 1976 e 1977 ela foi revisada e ampliada, tendo então o seu nome

alterado para SQL.

Devido ao sucesso da nova forma de consulta e manipulação de dados dentro

de um ambiente de banco de dados, sua utilização tornou-se cada vez maior.

Vários SGBD’s atuais utilizam o SQL como a linguagem padrão para o acesso

às bases de dados. Entre eles podemos citar:

DB2 da IBM

ORACLE da Oracle Corporation;

RDB da Digital

SYBASE da Sybase INC

SQL Server da Microsoft

Ingres da Computer Associates

Em 1982 o American National Standard Institute (ANSI) tornou a SQL a

linguagem padrão para a manipulação de dados em ambiente relacional.

Linguagem de definição de dados (DDL)

Permite ao usuário a definição da estrutura e organização dos dados

armazenados, e das relações existentes entre eles.

Linguagem de manipulação de dados (DML)

Permite a um usuário, ou a um programa de aplicação, a execução de

operações de inclusão, remoção, seleção ou atualização de dados previamente

armazenados na base de dados.

Controle de acesso

Protege os dados de manipulações não autorizadas.

Integridade dos dados

Auxilia no processo de definição da integridade dos dados, protegendo contra

corrupções e inconsistências geradas por falhas do sistema de computação, ou

por erros nos programas de aplicação.

3. Vantagens e Desvantagens da Linguagem SQL

Podemos apontar as seguintes vantagens no uso da linguagem SQL:

Independência de fabricante

A linguagem SQL é adotada por praticamente todos os SGBD’s relacionais

existentes no mercado, além de ser uma linguagem padronizada (ANSI). Com

isso, pelo menos em tese, posso mudar de SGBD sem me preocupar em alterar

os programas de aplicação.

Portabilidade entre plataformas de hardware e software

Pode ser utilizada tanto em máquinas Intel rodando Windows, passando por

workstations RISC rodando UNIX, até mainframes rodando sistemas

operacionais proprietários.

Redução dos custos com treinamento

Com base no item anterior, as aplicações podem se movimentar de um

ambiente para o outro sem que seja necessária uma reciclagem da equipe de

desenvolvimento.

Usa inglês estruturado de alto nível

O SQL é formado por um conjunto bem simples de sentenças em inglês,

oferecendo um rápido e fácil entendimento.

Permite consultas interativas

Permite aos usuários acesso fácil e rápido aos dados a partir de um front end

que permita a edição e a submissão de comandos SQL.

4. Tabelas dos Exemplos

As tabelas a seguir serão usadas nos exemplos que se seguem:

CLIENTE (cod_cli, nome_cli, endereco, cidade, cep, uf)

VENDEDOR (cod_vend, nome_vend, sal_fixo, faixa_comiss)

PEDIDO ( num_ped, prazo_entr, cd_cli, cd_vend)

ITEM_PEDIDO (no_ped, cd_prod, qtd_ped)

PRODUTO (cod_prod, unid_prod, desc_prod, val_unit)

5. Criação e Destruição de Tabelas

O comando CREATE TABLE é usado para criar uma tabela. A sua forma

geral é:

CREATE TABLE <nome_tabela>

(<descrição das colunas>,

<descrição das chaves>);

onde:

<nome_tabela> dever ser substituído pelo nome da tabela a ser criada.

<descrição das colunas> deve ser substituída pela relação das colunas

da tabela e seus respectivos tipos de dados (por exemplo, smallint, char,

varchar, integer, number, float e etc).

<descrição das chaves> deve ser substituída pela lista das colunas que

são tratadas como chaves estrangeiras.

Algumas colunas podem receber o valor NULL (nulo), e a coluna definida

como chave primária, além de não poder receber NULL, deve ser uma coluna

UNIQUE (sem repetições; isto é, chave primária)

Script de Criação das Tabelas dos Exemplos

create table cliente ( cod_cli smallint not null, nome_cli varchar(40) not null, endereco varchar(40) null, cidade varchar(20) null, cep char(08) null, uf char(02) null, primary key (cod_cli));

create table vendedor ( cod_vend smallint not null, nome_vend varchar(40) not null, sal_fixo number(9,2) not null,

6. Executando Consultas sobre as Tabelas

6.1 Selecionando Colunas Específicas de uma Tabela

SELECT <lista_de_colunas>

FROM <nome_tabela>;

Problema:

Listar todos os produtos com as respectivas descrições, unidades e valores

unitários.

select desc_prod,unid_prod,val_unit from produto;

DESC_PROD UNI VAL_UNIT

Chapa de Aco kg 2, Cimento kg 4, parafuso 3.0X10.5 mm kg 2 Fio plastico m , Solvente PRW l 5 5 linhas selecionadas.

Problema:

Listar os nomes dos clientes, as cidade e os estados onde eles estão

localizados.

select nome_cli,cidade,uf from cliente;

NOME_CLI CIDADE UF

Supermercado Carrefour rio de janeiro rj Supermercado Baratao rio de janeiro rj Supermercado Arariboia niteroi rj UFF niteroi rj CSN volta redonda rj Pegeout resende rj Ind. Quimicas Paulistas sao paulo sp Ford Caminhoes sao paulo sp Riocel Celulose guaiba rs Elevadores Sur guaiba rs

6.2 Selecionando todas as Colunas de uma Tabela

SELECT *

FROM <nome_tabela>;

Problema:

Listar o conteúdo de todas as tabelas da base de dados dos exemplos.

select * from cliente;

COD_CLI NOME_CLI ENDERECO

CIDADE CEP UF

1000 Supermercado Carrefour Av. das Americas rio de janeiro 20000001 rj 2000 Supermercado Baratao Rua Rolando Lero rio de janeiro 20000002 rj 3000 Supermercado Arariboia Rua Itaoca niteroi 20000003 rj 4000 UFF Cidade Univers. niteroi 20000004 rj 5000 CSN Rua do Aco volta redonda 20000005 rj 6000 Pegeout Rodovia Pres. Dutra resende 20000006 rj 7000 Ind. Quimicas Paulistas Rua Tuiuti sao paulo 11000001 sp 8000 Ford Caminhoes Rua Henry Ford sao paulo 11000002 sp 9000 Riocel Celulose Rua Gen. Arouca guaiba 30000001 rs 10000 Elevadores Sur Rua Planejada guaiba 30000001 rs

select * from produto;

COD_PROD UNI DESC_PROD VAL_UNIT

100 kg Chapa de Aco 2, 200 kg Cimento 4, 300 kg parafuso 3.0X10.5 mm 2 400 m Fio plastico , 500 l Solvente PRW 5

6.3 Selecionando Apenas Alguns Registros da Tabela

SELECT <lista_de_colunas>

FROM <nome_tabela>

WHERE <condição_de_seleção>;

Onde a cláusula WHERE tem a seguinte forma:

WHERE <nome_da_coluna>

6.3.1 Operadores Relacionais:

= igual

<> ou != diferente

< menor que

> maior que

>= maior ou igual a

<= menor ou igual a

Quando a coluna é do tipo caracter , o deve estar entre aspas simples

Exemplo: 'parafuso'

Observação:

Na linguagem SQL existe diferença entre caracteres maiúsculos e minúsculos;

logo, 'PARAFUSO' é diferente de 'parafuso'.

Problema:

Listar o número do pedido, o código do produto e a quantidade pedida dos

itens de um pedido, onde a quantidade pedida seja igual a 500.

select no_ped,cd_prod,qtd_ped from item_pedido where qtd_ped = 500;

NO_PED CD_PROD QTD_PED

5 linhas selecionadas.

Problema:

Quais são os clientes localizados na cidade de Niterói?

select nome_cli from cliente where cidade = 'niteroi';

NOME_CLI

Supermercado Arariboia UFF 2 linhas selecionadas.

6.3.2 Operadores Lógicos

AND conjunção

OR disjunção

NOT negação

Problema:

Quais são os produtos que têm unidade igual a 'kg' e valor unitário maior do

que R$ 2,00?

select desc_prod from produto where unid_prod = 'kg' and val_unit > 2.00;

DESC_PROD

Chapa de Aco Cimento 2 linhas selecionadas.

6.3.3 Operadores BETWEEN e NOT BETWEEN

WHERE <nome_coluna> BETWEEN AND

WHERE <nome_coluna> NOT BETWEEN AND

Este operador possibilita a seleção de uma faixa de valores sem a necessidade

do uso dos operadores >=, <= e AND.

e têm que ter o mesmo tipo de dado que <nome_coluna>.

Problema:

Liste o código e a descrição dos produtos que tenham o valor unitário na faixa

de R$ 0,10 a R$ 3,00.

select cod_prod,desc_prod from produto where val_unit between 0.10 and 3.00;

COD_PROD DESC_PROD

100 Chapa de Aco 300 parafuso 3.0X10.5 mm 400 Fio plastico 3 linhas selecionadas.

6.3.4 Operadores LIKE e NOT LIKE

WHERE <nome_coluna> LIKE

WHERE <nome_coluna> NOT LIKE

Aplicáveis apenas a colunas dos tipos CHAR e VARCHAR.

Funcionam de modo análogo aos operadores = e <>, porém o poder dos

operadores LIKE e NOT LIKE está na utilização dos símbolos % e _ , que

podem fazer o papel de “coringa”:

% substitui uma palavra

_ substitui um caracter qualquer

Exemplos:

'apis%' se aplicaria às seguintes cadeias de caracteres:

'lapis preto'

'lapis cera'

'lapis borracha'

'broca n_' se aplicaria às seguintes cadeias de caractere:

'broca n1'

'broca n9'

'broca n3'

Problema:

Listar todos os produtos que tenham a sua unidade começando por k (lembre-

se de que a coluna unid_prod foi definida como char(03)).

select cod_prod,desc_prod from produto where unid_prod like 'k__';

COD_PROD DESC_PROD

100 Chapa de Aco 200 Cimento 300 parafuso 3.0X10.5 mm 3 linhas selecionadas.

Problema:

Listar todos os vendedores cujos os nome não comecem por 'A'.

A utilização do valor nulo (NULL) é problemática, pois as diversas

implementações da linguagem SQL podem adotar qualquer representação para

o valor nulo.

Problema:

Mostrar os clientes que não tenham endereço cadastrado.

select nome_cli from cliente where endereco is null;

NOME_CLI

0 linhas selecionadas.

6.4 Ordenando os Dados Selecionandos

SELECT <lista_de_colunas>

FROM <nome_tabela>

WHERE <condição_de_seleção>

ORDER BY {<nome_coluna>|<num_col> [ASC|DESC]}

Onde <nome_coluna> se refere à coluna segundo a qual as linhas serão

ordenadas, e <num_col> se refere à posição relativa da coluna na

<lista_de_colunas> projetadas, contada da esquerda para a direita, e não à

posição na tabela original.

As cláusulas ASC e DESC denotam ordenação ascendente e descendente

respectivamente. A forma ascendente de ordenação é assumida caso nenhuma

opção seja informada explicitamente.

Problema:

Mostrar em ordem alfabética a lista de vendedores e seus respectivos salários

fixos.

select nome_vend,sal_fixo from vendedor order by nome_vend;

NOME_VEND SAL_FIXO

Ana Cristina 2100 Armando Pinto 2500 Cassia Andrade 900 Maria Paula 900 Paulo Alberto 1500 5 linhas selecionadas.

Problema:

Listar os nomes, as cidades e os estados de todos os clientes, ordenados por

estado e cidade de forma descendente.

select nome_cli,cidade,uf from cliente order by uf desc,cidade desc;

NOME_CLI CIDADE UF

Ind. Quimicas Paulistas sao paulo sp Ford Caminhoes sao paulo sp Riocel Celulose guaiba rs Elevadores Sur guaiba rs CSN volta redonda rj Supermercado Carrefour rio de janeiro rj Supermercado Baratao rio de janeiro rj Pegeout resende rj Supermercado Arariboia niteroi rj UFF niteroi rj 10 linhas selecionadas.

Problema:

Mostrar a descrição e o valor unitário de todos os produtos que tenham

unidade 'kg' em ordem ascendente de valor unitário.

select desc_prod,val_unit from produto where unid_prod = 'kg' order by 2;

DESC_PROD VAL_UNIT

parafuso 3.0X10.5 mm 2 Chapa de Aco 2, Cimento 4, 3 linhas selecionadas.