Você está na página 1de 21

Linguagem SQL

Prof. Marcelo A. P. Pinheiro

Introduo
O modelo relacional encontra-se padronizado pela indstria de informtica. Ele chamado de padro SQL (Structured Query Language). O padro SQL define precisamente uma interface SQL para a definio de tabelas, para as operaes sobre as mesmas (seleo, projeo, juno, e outras) e para a definio de regras de integridade de bancos de dados. A interface SQL portanto implementada em todos os sistemas de bancos de dados relacionais existentes. Por qu a indstria tem interesse em padronizar os sistemas de bancos de dados? A razo muito simples: a existncia de padres facilita a interoperabilidade (comunicao entre mquinas, entre programas).

Introduo
SQL (Structured Query Language): desenvolvida pela IBM (70) como parte do sistema System R. A SQL foi inicialmente chamada de SEQUEL a linguagem de consulta padro para os SGBDR's J existem padres propostos: ANSI-SQL(SQL-89), SQL-92 e padres mais recentes: SQL:1999 e SQL:2003.

Introduo
A linguagem SQL tem diversas partes: Linguagem de Definio de Dados (DDL): fornece comandos para definies de esquemas de relao, criao/remoo de tabelas, criao de ndices e modificao de esquemas. Linguagem de Manipulao de Dados (DML): inclui uma linguagem de consulta baseada na lgebra relacional e clculo relacional de tupla. Compreende comandos para inserir, consultar, remover e modificar tuplas num BD.

Introduo
Linguagem de Manipulao de Dados Embutida: designada para acessar o BD dentro de linguagens de programao de uso geral como Cobol, C, Pascal, CSP, 4GL, Delphi, Fortran, SQL-J entre outros. Definio de Vises: a SQL DDL inclui comandos para definio de vises. Autorizao: a SQL DDL inclui comandos para especificao de direitos de acesso s relaes/vises.

Introduo
Controle de Transao: algumas implementaes de SQL permitem fazer tratamento de controle de concorrncia e tolerncia falhas (locks explcitos, commit, rollback).

Introduo
Tipos em SQL:1999
Numricos exatos:
INTEGER (INT) e SMALLINT para representar inteiros NUMERIC(p,s): tem uma preciso e uma escala(nmero de dgitos na parte fracionria). A escala no pode ser maior que a preciso. Muito usado para representar dinheiro DECIMAL: tambm tem preciso e escala. A preciso fornecida pela implementao (SGBD).

Numricos aproximados:
REAL: ponto flutuante de preciso simples DOUBLE: ponto flutuante com preciso dupla FLOAT(p): permite especificar a preciso que se quer. Usado para transportar aplicaes

Introduo
Tipos em SQL:1999
Character
CHARACTER(x) (CHAR): representa um string de tamanho x. Se x for omitido ento equivalente a CHAR(1). Se um string a ser armazenado menor do que x, ento o restante preenchido com brancos. CHARACTER VARYING(x) (VARCHAR): representa um string de tamanho x. Armazena exatamente o tamanho do string (tam <= x) sem preencher o resto com brancos. Neste caso x obrigatrio. CHARACTER LARGE OBJECT (CLOB): armazena strings longos. Usado para armazenar documentos.

Introduo
Tipos em SQL:1999
Bit string e Binary Strings (BLOB)
BIT(X): permite armazenar uma quantidade x de bits BIT VARING(X) (VARBIT): permite armazenar uma quantidade varivel de bits at o tamanho X BINARY LARGE OBJECT (BLOB): para armazenar grande quantidades de bytes como fotos, vdeo, udio, grficos, mapas, etc.

Introduo
Tipos em SQL:1999
DATETIMES
DATE: armazena ano (4 digitos), ms (2 digitos) e dia(2 digitos). TIME: armazena hora(2digitos), minuto(2 digitos) e segundo(2digitos, podendo ter fraes 0 a 61.9999) TIMESTAMP: DATE + TIME

Introduo
Tipos em SQL:1999
Collection (Array) User-defined types References ...

SQL - DDL
Os comandos SQL para definio de dados so:
- CREATE - DROP - ALTER

CREATE TABLE: especifica uma nova tabela (relao), dando o seu nome e especificando as colunas(atributos) (cada uma com seu nome, tipo e restries)
Sintaxe: CREATE TABLE tabela_base (colunas tipo_base + constraints)

SQL - DDL
As definies das colunas tm o seguinte formato: coluna tipo[NOT NULL [UNIQUE]][DEFAULT valor] Onde: coluna: nome do atributo que est sendo definido tipo: domnio do atributo NOT NULL: expressa que o atributo no pode receber valores nulos UNIQUE: indica que o atributo tem valor nico na tabela. Qualquer tentativa de se introduzir uma linha na tabela contendo um valor igual ao do atributo ser rejeitada. Serve para indicar chaves secundrias DEFAULT: indica um valor default para a coluna

SQL - DDL
Constraints (Restries de Integridade e de domnio):
Integridade de Chave:
PRIMARY KEY(atributos_chave)

Integridade Referencial:
FOREIGN KEY (atributos) REFERENCES tabela_base(atributos)

Restrio de Integridade:
CHECK(condio)

CREATE TABLE

CREATE TABLE depto( id_depto integer not null, nm_depto varchar(40) not null )

Primary key

CREATE TABLE depto( id_depto integer not null Primary key, nm_depto varchar(40) not null )

Exerccio
Criar as tabelas Genero, Categoria, Estudio, Dir_ator, Cliente, Filme e DVD conforme o modelo Locadora.

SELECT
Seleo de todas os campos (ou colunas) da tabela.
SELECT * FROM [TABELA] SELECT [lista de atributos] FROM [TABELA]

Clusula WHERE
A clusula "where" corresponde ao operador restrio da lgebra relacional. Contm a condio que as tuplas devem obedecer a fim de serem listadas. Ela pode comparar valores em colunas, literais, expresses aritmticas ou funes.

Operadores lgicos
operador = > >= < <= significado igual a maior que maior que ou igual a menor que menor que ou igual a

Exemplos
SELECT NM_NOME, DS_CARGO FROM EMPREGADO WHERE ID_DEPTO > 10; SELECT NM_NOME, DS_CARGO FROM EMPREGADO WHERE DS_CARGO = 'GERENTE';

Você também pode gostar