• Nenhum resultado encontrado

BD_11_SQL- Apresentação

N/A
N/A
Protected

Academic year: 2021

Share "BD_11_SQL- Apresentação"

Copied!
23
0
0

Texto

(1)

SQL

23/9/2011 SQL 2

SQL

• Structured Query Language

• Linguagem de Consulta Estruturada

SQL

• Edgar F. Codd

• Proposta em 1970 como uma linguagem

para acessar dados em BD Relacional

• Fundamentação:

Teoria dos Conjuntos Álgebra Relacional

(2)

23/9/2011 SQL 4

SQL

• Linguagem não-procedural

• Ou seja, não existem procedimentos para

acessar o dado, como por exemplo,

open/close, read, etc.

• Apenas se diz o que se deseja!

23/9/2011 SQL 5

SQL

• Possui 3 componentes (ou 3

sub-linguagens):

DDL (Data Definition Language)

DML (Data Manipulation Language)

DCL (Data Control Language)

SQL- DDL

• DDL (Data Definition Language) Linguagem de Definição de Dados

Seus comandos afetam os objetos relacionais (como tabelas, índices, etc.)

(3)

23/9/2011 SQL 7

SQL - DDL

• Principais comandos:

CREATE {objeto} {nome} {parâmetros}

DROP {objeto} {nome} {parâmetros}

ALTER {objeto} {nome} {parâmetros}

23/9/2011 SQL 8

SQL – DDL- CREATE

CREATE TABLE [dbo].GIS_TBEX01_01EXEMPLO ( codigo numeric (5, 0) NOT NULL ,

nome varchar (72) NULL , tipo char (1) NULL , dat_fund datetime NULL , PRIMARY KEY CLUSTERED

(codigo) ) ON [PRIMARY]

SQL – DDL- DROP

(4)

23/9/2011 SQL 10

SQL – DDL- ALTER

ALTER TABLE [dbo].GIS_TBEX01_01EXEMPLO WITH NOCHECK

ADD

CONSTRAINT

CK_GIS_TBEX01_01EXEMPLO_tipo CHECK (tipo = 'f' or tipo = 'm' or tipo = 's‘) ,

CONSTRAINT

CK_GIS_TBEX01_01EXEMPLO_adm CHECK (adm = 'p' or (adm = 't'))

23/9/2011 SQL 11

SQL- DML

• DML (Data Manipulation Language) Linguagem de Manipulação de Dados Seus comandos afetam os dados relacionais contidos nas tabelas

SQL - DML

• Principais comandos: INSERT DELETE UPDATE SELECT

(5)

23/9/2011 SQL 13

SQL – DML- INSERT

• O comando INSERT grava 1 linha (ou tupla, ou registro) em 1 tabela

Insert into [dbo].GIS_TBEX01_01EXEMPLO values

(1, 'Alumar', 'm', 'p', NULL, 31, 'MA', 'Alumar', NULL)

23/9/2011 SQL 14

SQL – DML- INSERT

• Notar que, neste caso, cada valor é carregado na coluna correspondente da tabela.

Insert into [dbo].GIS_TBEX01_01EXEMPLO values

(1, 'Alumar', 'm', 'p', NULL, 31, 'MA', 'Alumar', NULL)

SQL – DML- INSERT

• É possível trocar a ordem de carga das colunas em uma tupla.

Insert into [dbo].GIS_TBEX01_01EXEMPLO (nome, código, tipo, dat_fund)

values

('Alumar', 1, 'm', 'p', NULL, 31, 'MA', 'Alumar', NULL)

(6)

23/9/2011 SQL 16

SQL – DML- DELETE

• O comando DELETE elimina uma ou mais linhas (ou tuplas, ou registros) de 1 tabela Delete From [dbo].GIS_TBEX01_01EXEMPLO

[Where Predicados]

23/9/2011 SQL 17

SQL – DML- DELETE

• Se o comando DELETE for emitido sem a cláusula Where, todas as linhas da tabela serão eliminadas

Delete From [dbo].GIS_TBEX01_01EXEMPLO

SQL – DML- DELETE

• Para eliminar apenas algumas linhas de uma tabela, o comando DELETE deve ser emitido com a cláusula Where especificando quais linhas devem ser eliminadas

Delete From [dbo].GIS_TBEX01_01EXEMPLO [Where Predicados]

(7)

23/9/2011 SQL 19

SQL – DML- UPDATE

• O comando UPDATE altera o conteúdo de um ou mais campos em uma ou mais linhas (ou tuplas ou registros) de 1 tabela

Update [dbo].GIS_TBEX01_01EXEMPLO Set coluna1 = novo-valor1

[ , coluna2 = novo-valor2, ...] [Where Predicados]

23/9/2011 SQL 20

SQL – DML- UPDATE

• Se a cláusula Where for omitida, todas as linhas terão os campos alterados.

Update [dbo].GIS_TBEX01_01EXEMPLO Set coluna1 = novo-valor1

[ , coluna2 = novo-valor2, ...] [Where Predicados]

SQL – DML- SELECT

• O comando SELECT recupera uma ou mais linhas (ou tuplas ou registros) de uma ou mais tabelas Select tupla From tabelas [Where predicados] [Order By colunas] [Group By colunas] [Having predicados]

(8)

23/9/2011 SQL 22

SQL – DML- SELECT

• Cláusulas:

From

obrigatória

Where

opcional

Order By

opcional

Group By

opcional

Having

opcional

23/9/2011 SQL 23

SQL – DML- SELECT

• Cláusulas:

Group By

Having

Não serão tratadas no curso

SQL – DML- SELECT

• Formato simples

• Recupera todas as colunas de todas as

linhas da tabela.

Select *

From tabela

(9)

23/9/2011 SQL 25

SQL – DML- SELECT

Select *

From [dbo].GIS_TBEX01_01EXEMPLO

Neste comando são recuperadas todas as

colunas (*) de todas as linhas (não há

cláusula Where para filtrar as linhas)

23/9/2011 SQL 26

SQL – DML- SELECT

• Seleção de funções

Select função

From tabela

SQL – DML- SELECT

• Dentre as funções disponíveis, temos as

Funções de Agregação

Select função_agregação [label]

From tabela

(10)

23/9/2011 SQL 28

SQL – DML- SELECT

• Funções de Agregação

Count(*) conta linhas da tabela

MAX(nome_coluna) seleciona o maior valor da coluna (maximum)

MIN(nome_coluna) seleciona o menor valor da coluna (minimum)

23/9/2011 SQL 29

SQL – DML- SELECT

• Funções de Agregação

SUM(nome_coluna) efetua a somatória dos valores da coluna (summary) AVG(nome_coluna) efetua a média dos valores

da coluna (average)

SQL – DML- SELECT

Função Count (*)

Select count(*)

From [dbo].Gis_Tbex01_01Exemplo

O resultado será o total de linhas que

(11)

23/9/2011 SQL 31

SQL – DML- SELECT

Função Max (coluna)

Select max(salario)

From [dbo].Gis_Tbex01_01Exemplo

O resultado será o maior valor de salário

desta tabela.

23/9/2011 SQL 32

SQL – DML- SELECT

Função Min (coluna)

Select min(salario)

From [dbo].Gis_Tbex01_01Exemplo

O resultado será o menor valor de salário

desta tabela.

SQL – DML- SELECT

Função Sum (coluna)

Select sum(salario)

From [dbo].Gis_Tbex01_01Exemplo

O resultado será a somatória de todos os

(12)

23/9/2011 SQL 34

SQL – DML- SELECT

Função Avg (coluna) Select avg(salario)

From [dbo].Gis_Tbex01_01Exemplo

O resultado será a média de todos os valores de salário desta tabela.

Lembre-se que o valor NULL pode alterar o valor desta média. 23/9/2011 SQL 35

SQL – DML- SELECT

• Seleção de tuplas

Select tupla

From tabela

SQL – DML- SELECT

Select [tab1.] nome_col1 [label1], [ [,tab1.] nome_col2 [label2],

[,tab1.] nome_col3 [label2], ...] From tabela

[Where predicados] [Order By colunas]

(13)

23/9/2011 SQL 37

SQL – DML- SELECT

• Predicados

Colocados na cláusula Where Principais predicados: Igualdade In Between Is Null Like 23/9/2011 SQL 38

SQL – DML- SELECT

• Predicados

nome_coluna [NOT] predicado operando2 and / or

nome_coluna [NOT] predicado operando2

SQL – DML- SELECT

• Predicado de igualdade nome_col1 [NOT] = coluna2

[!] > literal < constante

>= expressão_matemática <= subselect

(14)

23/9/2011 SQL 40

SQL – DML- SELECT

• Predicado IN

nome_coluna [NOT] IN (lista de valores) subselect 23/9/2011 SQL 41

SQL – DML- SELECT

• Predicado IN nome_coluna IN (1, 2, 3, 4) nome_coluna NOT IN (‘m’, ‘,f’,)

SQL – DML- SELECT

• Predicado IN nome_coluna IN (1, 2, 3, 4) • Equivale a: nome_coluna = 1 or nome_coluna = 2 or nome_coluna = 3 or nome_coluna = 4

(15)

23/9/2011 SQL 43

SQL – DML- SELECT

• Predicado BETWEEN

nome_coluna BETWEEN valor1 and valor2 nome_coluna NOT BETWEEN valor1 and valor2 (Observação: o intervalo entre valor1 e valor2 é um

intervalo fechado)

23/9/2011 SQL 44

SQL – DML- SELECT

• Predicado BETWEEN

nome_coluna BETWEEN 100 and 250

SQL – DML- SELECT

• Predicado BETWEEN

nome_coluna BETWEEN 100 and 250

• Equivale a:

nome_coluna >= 100 and nome_coluna <= 250

(16)

23/9/2011 SQL 46

SQL – DML- SELECT

• Predicado IS NULL

nome_coluna IS NULL nome_coluna IS NOT NULL

23/9/2011 SQL 47

SQL – DML- SELECT

• Predicado IS NULL

Atenção: Nenhum valor é igual a nulo

Nulo é o valor dado para a ausência de valor Nulo não é branco. Nulo não é zero.

Ou uma coluna é nula ou é não nula

SQL – DML- SELECT

• Predicado LIKE

nome_coluna LIKE ‘string’ nome_coluna NOT LIKE ‘string’

(17)

23/9/2011 SQL 49

SQL – DML- SELECT

• Predicado LIKE

• 2 caracteres:

% Qualquer conjunto de caracteres (0 a N caracteres)

_ 1 posição com qualquer caracter

23/9/2011 SQL 50

SQL – DML- SELECT

• Predicado LIKE coluna1 like ‘%A’ coluna1 like ‘A%’ coluna1 like ‘%A%’ coluna1 like ‘A_%A’ coluna1 like ‘A_G%A’

SQL – DML- SELECT

• Subselect

É um Select dentro de outro Select

A execução é feita de trás para a frente (ou seja, do último Select para o primeiro Select) (ou do Select mais interno para o Select mais externo)

(18)

23/9/2011 SQL 52

SQL – DML- SELECT

Select codigo 'Código do Continente' From GIS_TBA01_01CONTINENTE

Where ext_km2 =

(Select max(ext_km2)

From GIS_TBA01_01CONTINENTE)

(Em negrito destacamos o subselect)

23/9/2011 SQL 53

SQL – DML- SELECT

• Junção (Join)

É a junção de duas ou mais tabelas

A junção é feita através de uma coluna comum

SQL – DML- SELECT

• A junção (join) pode ser: Natural (ou nativo) Inner Join

(19)

23/9/2011 SQL 55

SQL – DML- SELECT

• Existem outros joins, além do Inner: Outer Join Left Join Right Join 23/9/2011 SQL 56

SQL – DML- SELECT

• Join Natural

Select tab1.col1 [label1] , tab2.col1 [label2] From tab1 [apelido1]

, tab2 [apelido2] Where tab1.PK = tab2.FK

SQL – DML- SELECT

• Join Natural

Select apelido1.col1 [label1] , apelido2.col1 [label2] From tab1 apelido1

, tab2 apelido2

(20)

23/9/2011 SQL 58

SQL – DML- SELECT

• Inner Join

Select apelido1.col1 [label1] , apelido2.col1 [label2] From tab1 apelido1

INNER JOIN tab2 apelido2 ON apelido1.PK = apelido2.FK Where ... 23/9/2011 SQL 59

SQL- DCL

• DCL (Data Control Language) Linguagem de Controle de Dados

Engloba comandos que não são DDL e nem são DML

SQL - DCL

• Principais comandos:

GRANT

(21)

23/9/2011 SQL 61

SQL – DCL- GRANT

GRANT

Concede privilégios (direitos)

Concede autoridade

23/9/2011 SQL 62

SQL – DCL- GRANT

GRANT

privilégio1, ... , privilégion

ON objeto1, ..., objeton

TO user1, ..., usern

With Grant Option

SQL – DCL- GRANT

GRANT

SELECT

ON GIS.TBA01.01CONTINENTE

TO GIS01

(22)

23/9/2011 SQL 64

SQL – DCL- GRANT

GRANT

SELECT

ON GIS.TBA01.01CONTINENTE

TO GIS01

WITH GRANT OPTION

23/9/2011 SQL 65

SQL – DCL- REVOKE

REVOKE

Retira privilégios (direitos) concedidos

Retira autoridade concedida

SQL – DCL- REVOKE

REVOKE

privilégio1, ... , privilégion

ON objeto1, ..., objeton

FROM user1, ..., usern

(23)

23/9/2011 SQL 67

SQL

Referências

Documentos relacionados

Por serem, as informações sobre interna- ções hospitalares nessa faixa etária escassas em São Luís, o presente estudo teve como objetivo conhecer a prevalência de internações

O POTENCIAL de crescimento da produção de soja para 200 mi t até 2030 será sacrificado para menos da metade se não se apostar em maior industrialização no País. A soja cresceu

[...] propostas educacionais surgidas do setor não-formal ou apresentadas em formato de educação não regrada, mas que, no entanto, se localizam na própria escola

« Se pedirmos a um intelectual mediano que nos explique sumariamente “A Interpretação dos Sonhos” (1900), de Freud, ele provavelmente dirá: para Freud, o sonho é a realização

Cty Cp Đầu Tư Kiến Trúc Xây Dựng Toàn Thịnh Phát [email protected] [email protected] .vn C.Ty Tnhh Công Nghệ Và Thương Mại Phương

Para caracterização do ponto pode ser selecionado mais de um item, desde que façam parte de um mesmo ponto ou que seja composto por mais de uma modalidade

O empreendimento VITAL ENGENHARIA S.A., requereu, através de seus representantes legais, a presente Licença de Operação em caráter Corretivo para as suas

Tabela 2 - Valores médios, médias e diferenças mínimas significativas (DMS) da produtividade, do teor de água , do teste de germinação e dos testes de vigor (PC - primeira contagem