Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e...

26
Bases de Dados DDL – Data Definition Language

Transcript of Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e...

Page 1: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Bases de Dados

DDL – Data Definition Language

Page 2: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

SQL

SQL = Structured Query LanguageFoi originalmente criada pela IBM nos anos 70 como parte de um protótipo de sistema relacionalPosteriormente foi implementada em muitos outros produtos comerciaisTornou-se um standard de linguagem de manipulação de dadosÉ utilizada para formular operações relacionais (isto é, operações que definem e manipulam dados de forma relacional)

Page 3: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Características do SQL

É uma linguagem semelhante à linguagem corrente, neste caso a inglesaNão é procedimental, isto é, não se indica como obter informação mas sim que informação se pretendeProcessa um conjunto de registos e não um só registo de cada vez (operações relacionais sobre conjuntos, em que a forma de conjunto de registos mais comum é uma tabela)Possui todos os comandos necessários tanto para a criação das estruturas que armazenam dados como dos próprios dadosExtrai e manipula toda a informação da base de dados recorrendo aos operadores da Álgebra Relacional

Page 4: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Comandos SQL

Dividem-se em dois tipos

Definição de Dados: DDL ou Data DefinitionLanguageManipulação de Dados: DML ou Data Manipulation Language

Page 5: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Comandos da sublinguagem DML

UPDATE categoriaSET nome_categoria = ‘Professor Adjunto Equiparado’WHERE nome_categoria LIKE ‘%adjunto%’

Alterar o nome da categoria Professor adjunto Equiparado para Professor Adjunto Equiparado

INSERT INTO curso VALUES(5, ‘Informatica de Economia’);INSERT INTO curso VALUES(6, ‘Economia e Gestao’);

Inserir dois novos curso que tenham a palavra Economia no no seu nome (utilizar os códigos 5 e 6)

DELETE FROM cursoWHERE nome_cruso LIKE ‘%Economia%’);

Apagar os tuplos inseridos anteriormente.

Page 6: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

DDL – Data Definition Language (1)

Conjunto de instruções SQL destinadas àcriação de objectos numa base de dados:

DomíniosTabelasÍndicesChavesVistasRestrições

Page 7: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

DDL - Data Definition Language (2)

Para permitir a definição de tais objectos a DDL oferece-nos três comandos diferentes:

CREATE : criar objectos na base de dadosALTER : modificar objectos da base de dadosDROP : remover objectos da base de dados

Page 8: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Tipos de Dados SQL – Oracle

Os tipos de dados (mais comuns) a utilizar em SQL na definição das colunas das tabelas são os seguintes:

NUMBER(n)DATEVARCHAR2(n)...

Page 9: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Tipos de Dados SQL – OracleVARCHAR2(n): string de dimensão variável, com dimensão máxima n em bytes. A dimensão máxima permitida é 4000 e a mínima 1.NVARCHAR(n): string de dimensão variável, com dimensão máxima n em caracteres ou bytes, dependente do mapa de caracteres escolhido. A dimensão máxima permitida é4000 e a mínima é 1.NUMBER(p, s): número com precisão p e escala s. A precisão p varia entre 1 e 38 e a escala s de -84 a 127.LONG: dados tipo caracter de dimensão variável até 2Gb.DATE: datas de 1 de Janeiro de 4712 AC até 31 de Dezembro de 4712 DC.RAW(n): dados binários de dimensão n em bytes. A dimensão é de 2000 bytes.LONG RAW: dados binários de dimensao variável até 2 Gb.ROWID: string hexadecimal que representa o endereço único de uma linha numa tabela.CHAR(n): string de dimensão fixa n em bytes. A dimensão máxima permitida é 2000 e a mínima 1.NCHAR(n): string com dimensão fixa n em caracteres ou bytes, dependente do mapa de caracteres escolhido. A dimensão máxima permitida é 2000 e a mínima 1.CLOB: objecto com caracteres de um byte. A dimensão máxima é de 4 Gb.NCLOB: objecto com caracteres de um ou mais bytes. A dimensão máxima é de 4 Gb.BLOB: objecto binário. A dimensão máxima é de 4 Gb.BFILE: contém a localização de um ficheiro binário armazenado fora da base de dados.

Page 10: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

CREATE

Suponhamos que vamos criar uma tabelaA sintaxe do comando CREATE é a seguinte:

Em que lista_parametros pode conter diversos itens de dois tipos distintos:

Definição de colunasDefinição de restrições sobre a tabela

CREATE TABLE <nome_tabela> (lista_parametros);

Page 11: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Exemplo: CREATE e DROP

CREATE TABLE funcionario (num_funcionario NUMBER(3) NOT NULL,nome_funcionario VARCHAR2(50) NOT NULL,data_nsc_funcionario DATE NOT NULL);

Criar uma tabela funcionario

DROP TABLE funcionario CASCADE CONSTRAINTS;

Apagar a tabela funcionario

Page 12: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Definição de uma coluna/atributo

Cada coluna/atributo aparece na criação da tabela separada por vírgulas e tem a sintaxe seguinte:

nome_atributo data_type [ definicao_default ]

Nome da coluna/atributo

Tipo de dados - Valor por omissão para a coluna- Assume NULL quando nada éespecificado ou não depende de nenhum domínio

Page 13: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Definição de uma Restrição

Uma restrição, também conhecida por constraint pode ser um dos seguintes itens:

candidate keyforeign keycheck constraint

Page 14: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Candidate Keys

Uma candidate key toma geralmente a forma seguinte:

Ou então

Em que a lista de atributos a utilizar em cada um destes tipos de chave não pode em nenhum dos casos ser vazia.Uma dada tabela pode ter diversas unique keys mas em cada instante só terá uma primary keyCada atributo pertencente a estas chaves tem assumidamente um valor diferente de NULL para cada registo!

UNIQUE (lista_atributos_separadas_por_virgulas)

PRIMARY KEY (lista_atributos_separadas_por_virgulas)

Page 15: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Foreign Keys (1)

São as designadas chaves externas, que relacionam cada registo de uma tabela com os registos de outras.Tomam a forma seguinte:

FOREIGN KEY (lista_atributos_separadas_por_virgulas)REFERENCES nome_tabela_destino[ (lista_atributos_destino_separadas_por_virgulas) ][ON DELETE option][ON UPDATE option] Necessária apenas se a

foreign key referencia uma chave candidata que não échave primária na tabela de destino

Page 16: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Foreign Keys (2)

Option pode ter os seguintes valores:

NO ACTION (não fazer nada)

CASCADE (propagar acção às tabelas referenciadas)

SET DEFAULT (utilizar default)

SET NULL (colocar foreign key a NULL)

Page 17: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Check Constraints

Uma check constraint verifica na inserção ou actualização de os valores a guardar respeitam uma determinada condição ou restrição. Toma geralmente a forma:

CHECK (expressao_condicional_a_verificar)

Page 18: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Alterar tabelas

Esta operação efectua-se com o comando ALTER TABLE. Permite-nos efectuar várias operações:

Adicionar e remover atributosMudar, adicionar ou remover valores default de colunas já existentesAdicionar ou remover restrições sobre a tabela

Page 19: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

ALTER TABLE

Adicionar colunas:

Remover colunas:

Modificar colunas...

ALTER TABLE nome_tabelaADD COLUMN nome_atributos_a_adicionar tipo_dadosDEFAULT valor_default;

ALTER TABLE nome_tabela DROP COLUMN nome_atributo_a_remover;

ALTER TABLE nome_tabelaMODIFY [atributo_a_modificar tipo_dados]

[DEFAULT expr] [restricoes_atributo]

Page 20: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Exemplo – Criação de uma tabela (restrições adicionadas no CREATE)

Chave Primária

Check constraint

CREATE TABLE sala (cod_sala NUMBER NOT NULL PRIMARY KEY,nome_sala VARCHAR2(50) NOT NULL

CHECK (nome_sala=(UPPER(nome_sala)));

CREATE TABLE sala_disciplina (cod_sala NUMBER NOT NULL,cod_cadeira NUMBER(5) NOT NULL,cod_curso NUMBER(5) NOT NULL,dia DATE NOT NULL,hora_inicio NUMBER(2) NOT NULL CHECK (hora_inicio >=8),hora_fim NUMBER(2) NOT NULL CHECK (hora_fim <= 20),CHECK (hora_fim > hora_inicio + 1));

Page 21: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Exemplo – Adição de Restrições a uma tabela após a sua criação

Nome Restrição

Chave Primária sobre a coluna que representa o número de aluno

Chave primária múltipla (envolve 3 colunas da tabela)

Chave Externa baseada no código da sala que referencia a tabela sala no atributo que representa o mesmo valor!

ALTER TABLE alunoADD CONSTRAINT chave_aluno PRIMARY KEY(num_aluno);

ALTER TABLE sala_disciplina ADD CONSTRAINT pk_sala_disciplinaPRIMARY KEY (cod_sala, dia, hora_inicio);

ALTER TABLE sala_disciplinaADD CONSTRAINT fk_cod_sala FOREIGN KEY (cod_sala) REFERENCES sala(cod_sala);

Chave externa múltipla (envolve 2 colunas da tabela de origem face às duas colunas idênticas na tabela de destino)

ALTER TABLE sala_disciplinaADD CONSTRAINT fk_cod_disciplinaFOREIGN KEY (cod_cadeira, cod_curso)REFERENCES curso_cadeira (cod_cadeira, cod_curso);

Page 22: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Sequências (1)

Uma sequência é um objecto da base de dados sobre o qual múltiplos utilizadores podem aceder de modo a gerar números inteiros únicos.Depois de criada pode ser acedida através de CURRVAL(valor actual) e NEXTVAL(próximo valor)

Page 23: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Sequências (2)

Criar uma sequência

Aceder a uma sequência

Incremento a sofrer cada vez que for utilizado o NEXTVAL

Valor inicial

Tabela de sistema “dummy”

CREATE SEQUENCE seq_sala INCREMENT BY 1 START WITH 1;

SELECT seq_sala.NEXTVAL FROM dual;

Page 24: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Remover Objectos da BD

Para remover um objecto do nosso repositório (base de dados) utilizamos o comando DROP:

Opção pode tomar os seguintes valores:RESTRICT (DROP falha se, no caso de uma remoção de uma tabela, a mesma for referenciada por alguma outra tabela, VIEW ou CONSTRAINT)CASCADE (DROP será bem sucedido, removendo consigo todas as tabelas VIEW’s ou CONSTRAINT’sque referenciem a tabela a remover)

DROP TABLE nome_objecto opcao;

Page 25: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

ROLLBACK e COMMIT

Os comandos ROLLBACK e COMMIT, permitem controlar as transacções efectuadas sobre uma bas de dados.Uma transação é uma sequência de instruções SQL.

ROLLBACK: repõe o estado da base de dados até ao último COMMIT;COMMIT: para acaba uma transação e tornar permanentes todas as alterações efectuadas sobre a base de dados. Note-se que o Oracle garante um COMMIT implicito antes e depois de qualquer instrução da DDL.

Page 26: Bases de Dados - ltodi.est.ips.ptltodi.est.ips.pt/mart/BD2005/laboratorios/aula6.pdf · zExtrai e manipula toda a informação da base de dados ... INSERT INTO curso VALUES(5, ‘Informatica

Referências e Links Úteis

An Introduction to Database Systems – C. J. Date – Addison WesleyThe Practical SQL Handbook – Judith S. Bowman et al – Addison WesleySintaxe de todos os comandos SQL para Oracle

http://www.ss64.com/ora/Tutorial Resumido de comandos Oracle

http://www.engin.umich.edu/caen/technotes/oracletut.pdf