Você está na página 1de 18

Structured Query Language (SQL)

Linguagens de SGBD

Durante o desenvolvimento do sistema R, pesquisadores da IBM


desenvolveram a linguagem SEQUEL, primeira linguagem de acesso
para Sistemas Gerenciadores de Banco de Dados Relacionais.
ISO e ANSI lanou em 1986 a primeira verso do padro da linguagem
SQL, o SQL-86.
A linguagem passou por aperfeioamentos em 1989 e, em 1992, foi
lanada a SQL-92 ou SQL2.
Um novo padro, chamado de SQL-99 ou SQL3 foi lanado no ano de
2000. Foi o primeiro padro a estender a linguagem para permitir a
utilizao de tipos de dados complexos e a incorporar caractersticas
da orientao a objetos.
Aps uma grande reviso do padro SQL3 foi lanada a SQL:2003.
Nesta vero foi adicionada uma nova parte ligada ao tratamento de
XML.
2

Linguagens de SGBD

Linguagem de Definio de Dados (DDL):

usada para especificar o esquema conceitual.

Linguagem de Manipulao de Dados (DML):

usada para manipular os dados em um banco de dados. As


manipulaes tpicas so a recuperao, insero, remoo e
modificao dos dados.

Tipos de Dados
(4 GB)
(4 GB)

Modelo Utilizado
Pessoa(CPF, Nome, Sexo)
Piloto (CPF, Cart_Trab)
CPF Referencia Pessoa

Passageiro(CPF, Dieta)
CPF Referencia Pessoa
Voo(Numero, Data, P_CPF)
CPF Referencia Piloto
Reserva(V_Numero, P_CPF)
V_Numero Referencia Voo
P_CPF Referencia Passageiro
Telefone(Numero, P_CPF)
CPF Referencia Pessoa

Linguagem de Definio de Dados (DDL)

Criao de SCHEMA:
CREATE SCHEMA EMPRESA AUTHORIZATION Jsilva;

Objetivo: Agrupar tabela e outras construes que pertencem


mesma aplicao de banco de dados.
Authorization

Usurio ou conta proprietria do schema.

Linguagem de Definio de Dados (DDL)

Criao de Tabelas:
CREATE TABLE NOME_TABELA(
COL1
TIPO_COLUNA [NOT NULL],
COL1
TIPO_COLUNA [NOT NULL],
COL1
TIPO_COLUNA [NOT NULL]
)

Linguagem de Definio de Dados (DDL)

Em geral, o esquema SQL so declarados e


especificados implicitamente no ambiente nas
instrues CREATE TABLE. Como alternativa
podemos declarar explicitamente o nome do
esquema sendo: <nome do esquema>.<nome da
relao>

CREATE TABLE EMPRESA.FUNCIONARIO...


Em vez de

CRETE TABLE FUNCIONARIO ...

Linguagem de Definio de Dados (DDL)

Na criao de tabelas, possvel especificar vrios


tipos de restries:

Chave Primria: PRIMARY KEY ;


Chave Estrangeira: FOREIGN KEY;
Chave Alternativa (ou alternada): UNIQUE;
Restrio de Domnio: CHECK.

Pode-se atribuir nomes s restries de integridade:

CONSTRAINT NOME_RESTRIO TIPO RESTRIO.

FOREIGN KEY (CPF) REFERENCES Pessoa (CPF)

Linguagem de Definio de Dados (DDL)


CREATE TABLE Pessoa(CPF VARCHAR(11)
Nome VARCHAR(30)
Sexo VARCHAR(1)
PRIMARY KEY (CPF));

NOT NULL,
NOT NULL UNIQUE,
NOT NULL,

CREATE TABLE Piloto(CPF


VARCHAR(11) NOT NULL,
Cart_Trab
VARCHAR(13) NOT NULL UNIQUE,
PRIMARY KEY (CPF),
FOREIGN KEY (CPF)
REFERENCES Pessoa (CPF));

10

Linguagem de Definio de Dados (DDL)


CREATE TABLE Passageiro(CPF

VARCHAR(11)

NOT NULL

CONSTRAINT PK_PASSAGEIRO PRIMARY KEY


CONSTRAINT FK_PESSOA REFERENCES Pessoa (CPF),
Dieta VARCHAR(1) CHECK (Dieta IN(S, N)));

CREATE TABLE Voo(Numero

Numeric

NOT NULL

CONSTRAINT PK_VOO PRIMARY KEY,


Data

Date

TIPO

VARCHAR2(15)

P_CPF

VARCHAR(11) NOT NULL

CONSTRAINT FK_PILOTO

NOT NULL,
DEFAULT NACIONAL,
REFERENCES Piloto (CPF));
11

Linguagem de Definio de Dados (DDL)

Deleo de item referenciado:

... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF)


REFERENCES Piloto (CPF)
ON DELETE RESTRICT); -- impede a excluso (default)

... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF)


REFERENCES Piloto (CPF)
ON DELETE SET NULL); -- transforma o valor em nulo
... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF)

REFERENCES Piloto (CPF)


ON DELETE CASCADE); -- exclui a linha da tabela
12

Linguagem de Definio de Dados (DDL)

Alterao de Tabelas:

Incluir novas colunas em uma tabela;


Excluir colunas existentes em uma tabela;
Adicionar a definio de uma restrio em uma tabela;
Excluir a definio de uma restrio existente em uma
tabela;
Modificar uma coluna.

13

Linguagem de Definio de Dados (DDL)


CREATE TABLE Reserva(V_Numero
P_CPF

Numeric
NOT NULL,
VARCHAR(11)
NOT NULL);

CREATE TABLE Telefone(Numero


VARCHAR(15)
P_CPF
VARCHAR(11)
PRIMARY KEY (Numero, P_CPF),
FOREIGN KEY (P_CPF)
REFERENCES Pessoa(CPF));

NOT NULL,
NOT NULL,

14

Linguagem de Definio de Dados (DDL)


ALTER TABLE Telefone
ADD COLUMN TIPO VARCHAR2(5) DEFAULT FIXO NOT NULL;
ALTER TABLE Telefone
DROP COLUMN Tipo;
ALTER TABLE TELEFONE
ADD CONSTRAINT TIPO_TELEFONE
CHECK (TIPO IN(Fixo, Movel));
ALTER TABLE TELEFONE
DROP CONSTRAINT TIPO_TELEFONE;

15

Linguagem de Definio de Dados (DDL)


ALTER TABLE Reserva
ADD CONSTRAINT PK_RESERVA PRIMARY KEY (V_Numero, P_CPF);
ALTER TABLE Reserva
ADD CONSTRAINT FK_RESERVA_VOO FOREIGN KEY (V_Numero)
REFERENCES Voo (Numero);
ALTER TABLE Reserva
ADD CONSTRAINT FK_RESERVA_PASSAGEIRO FOREIGN KEY (P_CPF)
REFERENCES Passageiro (CPF);
ALTER TABLE Reserva ENABLE CONSTRAINT FK_RESERVA_PASSAGEIRO;
ALTER TABLE Reserva DISABLE CONSTRAINT FK_RESERVA_PASSAGEIRO;

16

Linguagem de Definio de Dados (DDL)

Deletar Tabela (estrutura):


DROP TABLE Pessoa;

17

FIM

Você também pode gostar