Linguagem SQL S tructured Q uery L anguage

Post on 24-Jan-2016

36 views 0 download

description

Linguagem SQL S tructured Q uery L anguage. A Linguagem SQL - Introdução. Todo Banco de Dados apresenta uma Linguagem para definição e uma para manipulação de dados. - PowerPoint PPT Presentation

Transcript of Linguagem SQL S tructured Q uery L anguage

Linguagem SQLLinguagem SQL SStructured tructured QQuery uery LLanguageanguage

A Linguagem SQL - IntroduçãoA Linguagem SQL - Introdução

• Todo Banco de Dados apresenta uma Linguagem para definição e uma para manipulação de dados.

• Com relação aos Bancos de Dados Relacionais, a linguagem mais utilizada é a SQL - Structured Query Language, que abrange tanto comandos de definição quanto comandos de manipulação de dados.

• Base– álgebra relacional e cálculo relacional

SQL significa Structured Query Language. SQL é usado para a comunicação com base de dados. É um grupo de facilidade para definição, manipulação e controle de dados em um banco de dados relacional. De acordo com a ANSI (American National Standards Institute), esta é a linguagem padrão para a administração de base de dados relacional.

O que é SQL ?O que é SQL ?

IntroduçãoIntrodução

• Histórico– SEQUEL - Structured English QUEry

Language

– Projetada e implementada no Centro de Pesquisa da IBM como interface de um banco de dados relacional experimental chamado System R

IntroduçãoIntrodução

• Histórico– ANSI (American National Standards Institute)

e a ISO (International Standards Organization) juntaram esforços de pesquisa, originando a versão SQL96, ou SQL1

– SQL2, aprovada em 1992 (SQL92)

– SQL3 aprovada em 1999

IntroduçãoIntrodução

• SQL é mais do que uma linguagem de consulta:– Definição de dados

• Permite a definição da estrutura do banco de dados

– Recuperação de dados• Possibilita a recuperação dos dados do banco

– Manipulação de dados• Permite alterações e exclusões de dados já existentes, bem como a

adição de novos dados

– Controle de acesso• Fornece meios para determinar o controle de acesso de usuários aos

dados do banco

– Compartilhamento de dados• Coordena o acesso concorrente de usuários, assegurando que um não

interfira no trabalho do outro

– Integridade de dados• Permite definir restrições de integridade aos dados do banco

IntroduçãoIntrodução

• SQL como Linguagem de Definição de Dados (DDL)– Linguagem de criação das estruturas

SQL como DDL SQL como DDL

• SQL como linguagem de definição de dados - DDL

– Definição de tabelas - CREATE

– Alteração de tabelas - ALTER

– Remoção de tabelas - DROP

Base de Dados RelacionalBase de Dados Relacional

Uma base de dado relacional é uma coleção de tabelas contendo dados. Uma tabela consiste de colunas (atributos que descrevem a tabela) e linhas (a atual ocorrência de dados). Tais dados, podem ser acessados facilmente e rapidamente em uma base de dados relacional e visualizado em formato tabular.

TabelasTabelas

• No modelo relacional toda informação é representada na forma de tabelas.

• Cada tabela possui um número definido de colunas (atributos) que detalham a informação sendo representada:– Aluno (matrícula, nome, endereço,curso);– Diciplina (código, título, créditos);

Aluno endereçonomematrícula curso12

4

JoãoMarcos

MariaAntônio

Rua 1,102Rua 2,603Rua 2,303

Rua 3,404

BDW

BDWPAW

Rede

3

TabelasTabelas

Tabelas implementam no banco de dados as principais idéias identificados pelo modelo conceitual. São compostas por um conjunto finito bem definido de atributos. Cada atributo possui:

um nome, um tipo de dado, um tamanho (opcional), uma característica de nulidade e, possivelmente, regras

Em BD convencionais os tipos de dados são restritos a tipos pré-definidos primitivo (int,varchar,float, real) e algumas extensões : date, time, Blob, decimal(n,s)

123

4

JoãoMarcos

MariaAntônio

Rua 1,102Rua 2,603Rua 2,303

Rua 3,404

BDW

BDWPAW

Rede

• Uma tabela é populada com linhas (extensão da tabela) todas elas de um mesmo tipo, considerando um tipo o conjunto ordenado de seus atributos

Aluno endereçonomematrícula curso

Linhas ou“tuplas”

SQL como DDL SQL como DDL

• Instruções para definição do esquema da base de dados:

• CREATE TABLE – Cria uma nova tabela na base de dados, especificando

nome, atributos e restrições

• ALTER TABLE– Altera definições de uma tabela

• DROP TABLE– Remove uma tabela, quando suas definições não são

mais necessárias

DDL

(estruturas)

DML

(dados/informações)

Consulta

(extração de dados)

Create Insert Select

Alter Update

Drop Delete

Resumo

Criação de tabelasCriação de tabelas

• CREATE TABLE– Colunas são especificadas primeiro, sob a forma:

<nomeCol> <domínio> <restrição>

– Depois Chaves, integridade referencial e restrições de integridade

CREATE TABLE <nome_da_tabela>( <nome_da_col1> <tipo_da_col1> NOT NULL, <nome_da_col2> <tipo_da_col2> NOT NULL,

...PRIMARY KEY <lista_de_nomes_de_col>, FOREIGN KEY <nomes_de_col>REFERENCES <nome_tab_ref>(<nome_da_col_ref>) );

Criação de tabelasCriação de tabelas

• Tipos para a definição de colunas:

SQL Padrão CHAR(tamanho)CHARACTER(tamanho)

INTINTEGER

SMALLINT

NUMERIC(precisão,escala)DECIMAL(precisão,escala) DEC(precisão,escala)

FLOAT(precisão)

REAL

DOUBLE PRECISION

SQL2 = Padrão + :VARCHAR(tamanho)CHAR VARYING(tamanho)CHARACTER VARYING(tamanho)

NCHAR(tamanho)NATIONAL CHAR(tamanho)NATIONAL CHARACTER(tamanho)VARYING(tamanho)

BIT(tamanho)BIT VARYING(tamanho)

DATETIME(precisão)TIMESTAMP(precisão)INTERVAL

Tipos de Dados mais usados no OracleTipos de Dados mais usados no Oracle

• Char(n) : – cadeia de tamanho fixo. default é 1 e o máximo é

2000.

• Varchar2(n): – cadeia de tamanho variável com o máximo de n

(máximo 4000).

• Number(p,e): numérico – p é precisão (max 38) – e é escala (número de casas decimais)

• Date: – data e hora, inclui século, ano, mes, dia, hora, minuto

e segundo.

• Timestamp: – data e horas com maior precisão.

Criação de tabelasCriação de tabelasA partir do modelo relacional, escrevemos o comando em SQL para criarmos a tabela

no banco de dados

Exemplo:

Modelo relacional

Fornecedor(fcod, fnome, status, cidade)

Criamos o esquema físico:

CREATE TABLE Fornecedor

( Fcod INTEGER NOT NULL,

Fnome VARCHAR(30) NOT NULL,

Status INTEGER,

Cidade VARCHAR(20),

primary key (fcod));

• Checando as colunas das tabelas

Desc Fornecedor

EmpregadosIdadeNomeCPF

Telefone (1,N)PlanoSaúde (0,1)

EndereçoCidade

NúmeroRua

Empregados (CPF, Nome, Idade, PlanoSaúde, Rua, Número, Cidade)Telefone(CPF, Número) CPF referencia Empregados (CPF)

MER

Relacional

Esquema Físico

Create table Empregados (CPF number(11) not null, Nome varchar(40) not null, Idade number(3) not null, PlanoSaude varchar2(40), Rua varchar2(50) not null, Número number(4) not null, Cidade varchar2(50), Primary key (CPF) );

Create table Telefone (CPF number(11) not null, NumeroTel varchar2(30) not null, Primary Key (CPF, Numero), Foreign Key (CPF) references Empregados (CPF) );

SQL – DMLSQL – DML• Inserção de dados

insert into nome_tabela [(lista_atributos)] values (lista_valores)

• Exemplos

insert into Fornecedor (Fcod, Fnome,Status, Cidade)

values (10,’Borracharia Prego Amigo Ltda’,1, ‘Nova

Odessa’);

DDL

(estruturas)

DML

(dados/informações)

Consulta

(extração de dados)

Create Insert Select

Alter Update

Drop Delete

Resumo

Structured Query Language - SQLStructured Query Language - SQL

• Instruções da DML (Data Manipulation Language)

– SELECTSELECT <lista de colunas>

FROM <lista de tabelas>

WHERE <critério de seleção>

*** Existem mais opções

• Consulta Simples:Ex.: Recuperar os dados de todos os

fornecedores cadastrados:

select * from Fornecedor;

OU select codproduto, descricao, preco, qtde

from produtos;

Structured Query Language - SQLStructured Query Language - SQL

• Diferença – Varchar2 e Char

• Nome -> char(40)– O DBMS sempre grava/utiliza 40 bytes

• Se o nome for Antonio da Silva (16 bytes). 24 bytes “desperdiçados”

• Nome -> varchar2(40)– O DBMS grava apenas os bytes informados

• Se nome = Antonio da Silva (16 bytes). 24 bytes** “economizados”

– **Bytes de controle

Criação de tabelasCriação de tabelas•Especificação de chaves:

– Primária:

PRIMARY KEY(<nomeColuna>),

– Estrangeira:

FOREIGN KEY(<nomeCol>) REFERENCES <NomeTabRefer (nomeCol)>,

– Alternativa:

UNIQUE KEY(nomeCol) (SQL2)

Criação de tabelasCriação de tabelas

• Exemplo com chave primária:

CREATE TABLE Departamento

( Dcod INTEGER NOT NULL,

Dnome VARCHAR(20) NOT NULL,

Cidade VARCHAR(20),

PRIMARY KEY(Dcod));

Criação de tabelasCriação de tabelas• Exemplo com chave primária composta

CREATE TABLE Empregado( Ecod INTEGER NOT NULL,

Enome VARCHAR(40) NOT NULL,CPF VARCHAR(15) NOT NULL,Salario DECIMAL(7,2),Cod_Dept INTEGER NOT NULL,PRIMARY KEY(Ecod,CPF));