Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Documentos relacionados
SQL: Definição de tabelas, Modificações à Base de Dados

Views. uma view é uma tabela virtual. não existe fisicamente na BD. é definida à custa de outras tabelas ou views. CREATE VIEW <nome> AS <query>;

SQL: Vistas, Indices, Autorização, Restrições

SQL. Índices, views e restrições. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Importar e Exportar Dados

SQL. Definição do Esquema da Base de Dados. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

SQL Básica. Andre Noel

Definição de Dados com SQL

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Teste Exemplo Revisão da tentativa 1

A linguagem SQL

Banco de Dados. Professora: Luciana Faria

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

DCC011 Introdução a Banco de Dados SQL gerenciar tabelas e dados

Linguagem de Consulta Estruturada (SQL)

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Banco de Dados I Introdução SQL

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Triggers em SQLite. Fernando Lobo. Base de Dados, Universidade do Algarve

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL (Tópicos) Structured Query Language

PSI Linguagem de Definição de dados. Módulo 15

Bancos (Bases) de Dados

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Introdução a SQL (parte 2)

SQL. Linguagem de Definição de Dados (DDL) Tipos em SQL. Tipos Data/Tempo em SQL (cont.)

SQL: Interrogações simples

BCD29008 Banco de dados

Linguagem SQL (Parte II)

Linguagem SQL. Comandos Básicos

Bases de Dados. DDL Data Definition Language

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 16. Escola Politécnica da Universidade de São Paulo

Banco de Dados. Linguagem SQL

SQL DCC011. SQL gerenciar tabelas e dados. Programa. Introdução. Introdução

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Instrução Create Table

BANCO DE DADOS GERENCIAL 1 A U L A 2

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Linguagem de Definição de Dados (DDL)

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

BANCO DE DADOS PARA NINJAS

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL. Subqueries. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

Banco de Dados Loja Virtual. CLIENTE(ClienteId, PrimNome, UltNome, Endereço, Cidade, Cep, Telefone)

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Fernando Lobo. Base de Dados, Universidade do Algarve 1/19. Professores da disciplina. Fernando Lobo (T e P) Alvaro Barradas (P) 2/19

Manipulação de Dados com SQL

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea


Restrições ao Domínio Integridade Referencial Asserções Triggers Segurança e Autorizações

15 - Introdução às Bases de Dados

SQL Linguagem de Definição de Dados

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)

MySql. Introdução a MySQL. Andréa Garcia Trindade

Disciplina: Banco de Dados Tema: SQL Parte 2

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As

Bases de Dados BDDAD. Oracle SQL Comandos. Nelson Freire (ISEP LEI-BDDAD 2017/18) 1/101

Introdução ao PostgreSQL

Revisão de Bancos de Dados

GBC043 Sistemas de Banco de Dados

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

L Q S m e g a u g n Li A

Professor Leonardo Larback

A linguagem SQL

MODELAGEM DE DADOS MODELO FÍSICO

Sistemas de Informação e Bases de Dados 2012/2013. Restrições de Integridade em SQL

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

Discussão exercício aula 18. SQL Linguagem de Manipulação de Dados. Discussão exercício aula 18. Discussão exercício aula 18 SQL.

Programação SQL. Introdução

SQL. Autor: Renata Viegas

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Transacções. Vitor Vaz da Silva

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Álgebra relacional. Fernando Lobo. Conjunto de operadores que permitem manipular relações: produtos cartesianos e joins.

Subsistema de Integridade Semântica

Linguagem de Consulta - SQL

Bases de Dados. Parte V: A Linguagem SQL. Parte V

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

Comandos DDL. id_modulo = id_m odulo

Structured Query Language (SQL) Aula Prática

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

BANCO DE DADOS 2 SQL (CREATE TABLE, CONSTRAINTS, DELETE, UPDATE

Mysql. Quanto mais informações você busca, mais você evolui. Vitor Ramos. Disciplina de Banco de Dados

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

Transcrição:

Definição do esquema da base de dados o esquema da BD é composto pelas definições de todas as tabelas da BD. existem outros elementos (views, índices, triggers) que também fazem parte do esquema e que veremos mais tarde. 1

Definição de tabelas CREATE TABLE <nome> ( <lista de elementos> ); cada elemento consiste num atributo e no respectivo tipo de dados. os tipos mais comuns são: INTEGER, FLOAT, CHAR(n), VARCHAR(n), DATE, TIME. Exemplo: CREATE TABLE Actores( nome VARCHAR(50), morada VARCHAR(70), sexo CHAR, datanascimento DATE ); 2

DATE e TIME o formato de DATE é yyyy-mm-dd o formato de TIME é hh:mm:ss. Poderá ter ainda fracções de segundo. exemplos: DATE 2003-04-25 (25 de Abril de 2003) TIME 15:32:04.5 (4 segundos e meio depois das 3:32 da tarde) 3

Declaração de chaves um atributo ou lista de atributos pode ser declarado como chave em SQL utilizando PRIMARY KEY ou UNIQUE. exemplo: CREATE TABLE Actores( nome VARCHAR(50) PRIMARY KEY, morada VARCHAR(70), sexo CHAR, datanascimento DATE ); 4

Declaração de chaves (cont.) no caso da chave ser composta, temos de especificar um elemento à parte. exemplo: CREATE TABLE Filmes( nome VARCHAR(50), ano INTEGER, duracao INTEGER, acores BOOLEAN, nomeestudio VARCHAR(30), nomerealizador VARCHAR(50), PRIMARY KEY (nome,ano) ); 5

PRIMARY KEY versus UNIQUE também se pode usar UNIQUE para especificar uma chave. cada tabela só pode ter uma PRIMARY KEY, mas pode ter vários UNIQUEs. os atributos declarados como PRIMARY KEY não podem ser NULL, mas os declarados como UNIQUE podem (e até podem ter vários NULLs). 6

Restrição NOT NULL podemos forçar um atributo a não poder ser NULL. Exemplo: CREATE TABLE Alunos( nome VARCHAR(50) NOT NULL, numero CHAR(6) PRIMARY KEY, bi CHAR(10) UNIQUE, numcontrib CHAR(10) UNIQUE, morada VARCHAR(100) ); -- bi, numcontrib e morada ficam com NULL INSERT INTO Alunos(nome,numero) VALUES ( Tó Tabelas, 23384 ); -- SGBD rejeita porque nome n~ao pode ser NULL INSERT INTO Alunos(numero,bi) VALUES ( 23384, 7986866 ); 7

Chaves estrangeiras (integridade referencial) uma chave estrangeira é um conjunto de atributos que faz referência a um conjunto de atributos de uma outra tabela (eventualmente até poderia ser a própria tabela). os atributos referenciados têm de ser uma chave da outra tabela (declarados como PRIMARY KEY ou UNIQUE), daí o nome chave estrangeira. em SQL: FOREIGN KEY( <lista de atributos> ) REFERENCES <tabela> ( <lista de atributos> ) 8

Exemplo Participa(nomeFilme, anofilme, nomeactor) o valor do atributo nomeactor tem de existir na tabela de Actores. a mesma coisa para o par {nomefilme,anofilme} relativamente à tabela de Filmes. CREATE TABLE Participa( nomefilme VARCHAR(50), anofilme INTEGER, nomeactor VARCHAR(50), PRIMARY KEY (nomefilme,anofilme,nomeactor), FOREIGN KEY (nomeactor) REFERENCES Actores(nome), FOREIGN KEY (nomefilme,anofilme) REFERENCES Filmes(nome,ano) ); 9

Participa: Actores: Forçar a integridade referencial nomefilme anofilme nomeactor......... The Fugitive 1993 Harrison Ford Moulin Rouge 2001 Nicole Kidman Indiana Jones 1981 Harrison Ford......... nome morada............ Nicole Kidman 26 Palm Dr., Hollywood... Harrison Ford 789 Palm Dr., Beverly Hills... Kevin Costner 88 Palm Dr., Hollywood............ vamos substituir Harrison Ford por Fernando Lobo no filme The Fugitive. O que é que vai acontecer? e se apagarmos a Nicole Kidman da tabela de Actores? 10

Forçar a integridade referencial (cont.) um INSERT ou UPDATE na tabela Participa é rejeitado caso o actor não exista. o SGBD rejeita a substituição de Harrison Ford por Fernando Lobo. um DELETE ou UPDATE à tabela de Actores pode fazer com que determindos valores na tabela Participa deixem de fazer sentido. ex: Apagar a Nicole Kidman da tabela de Actores. existem 3 alternativas possiveis de resolver o problema em SQL. 11

Forçar a integridade referencial (cont.) As 3 alternativas são: 1. rejeitar modificações (opção por defeito em SQL). 2. SET NULL: nomeactor em Participa fica com NULL. 3. CASCADE: propagar as alterações. apagar actor da tabela de Actores = SGBD apaga todos os tuplos de Participa que tenham esse actor. actualizar actor na tabela de Actores = SGBD actualiza todos os tuplos de Participa que tenham esse actor. 12

Forçar a integridade referencial (cont.) quando declaramos uma chave estrangeira, podemos especificar SET NULL ou CAS- CADE, quer para DELETEs quer para UPDATEs. se não o fizermos, o SGBD rejeita as modificações. sintaxe: FOREIGN KEY( <lista de atributos> ) REFERENCES <tabela> ( <lista de atributos> ) ON UPDATE [SET NULL CASCADE] ON DELETE [SET NULL CASCADE] 13

Exemplo CREATE TABLE Participa( nomefilme VARCHAR(50), anofilme INTEGER, nomeactor VARCHAR(50), PRIMARY KEY (nomefilme,anofilme,nomeactor), FOREIGN KEY (nomeactor) REFERENCES Actores(nome) ON UPDATE CASCADE ON DELETE SET NULL, FOREIGN KEY (nomefilme,anofilme) REFERENCES Filmes(nome,ano) ); Se actualizarmos o nome de um actor na tabela de Actores, essa modificação é propagada para todos os tuplos da tabela Participa que fazem referência a esse actor. e se apagarmos um actor na tabela de Actores? SET NULL só faz sentido se a chave for declarada como UNIQUE. 14

Modificações à BD existem comandos para alterar o estado da BD. ao contrário dos SELECTs, os comandos de modificação não retornam uma tabela. existem 3 tipos de modificações: 1. INSERT insere um ou mais tuplos. 2. DELETE apaga um ou mais tuplos. 3. UPDATE actualiza os valores de um ou mais tuplos. 15

INSERT para inserir um tuplo: INSERT INTO <tabela> VALUES( <lista de valores> ); exemplo: INSERT INTO Actores VALUES ( Nicole Kidman, 26 Palm Dr., Hollywood, f, 1969-11-14 ); 16

INSERT (cont.) pode-se especificar uma lista de atributos. dois motivos para o fazer: 1. quando não nos lembramos da ordem pela qual os atributos foram definidos na criação da tabela. 2. quando não temos todos os valores e queremos que o SGBD preencha os atributos em falta com NULL (ou com um valor por defeito). para especificar um valor por defeito fazse: <atributo> <tipo> DEFAULT <valor> 17

Exemplo Se a tabela de filmes for definida assim: CREATE TABLE Filmes( nome VARCHAR(50), ano INTEGER, duracao INTEGER, acores BOOLEAN DEFAULT true, nomeestudio VARCHAR(30), PRIMARY KEY (nome,ano) ); e se fizermos, INSERT INTO Filmes(nome,ano,nomeEstudio) VALUES( Lion King,1994, Disney ); duracao fica com NULL. acores fica com true. 18

Inserir vários tuplos de uma vez só pode-se inserir o resultado de uma query numa tabela. INSERT INTO <tabela> ( <subquery> ); exemplo: Inserir na tabela de actores todos os actores que tenham participado nalgum filme. INSERT INTO Actores(nome) ( SELECT DISTINCT nomeactor FROM Participa ); morada dos actores fica com NULL. 19

DELETE para apagar tuplos que satisfaçam uma determinada condição deve fazer-se: DELETE FROM <tabela> WHERE( <condiç~ao> ); exemplo 1: Apagar todos os filmes cuja duração seja inferior a 120 minutos. DELETE FROM Filmes WHERE duracao < 120; exemplo 2: Apagar todos os filmes. DELETE FROM Filmes; 20

UPDATE para actualizar tuplos de uma tabela deve fazer-se: UPDATE <tabela> SET <lista de atribuiç~oes> WHERE( <condiç~ao> ); exemplo 1: Actualizar a duração do King Kong de 1976 para 127 minutos. UPDATE Filmes SET duracao = 127 WHERE nome = King Kong AND ano = 1976; exemplo 2: Passar todos os filmes anteriores a 1970 para preto e branco. UPDATE Filmes SET acores = false WHERE ano < 1970; 21

Modificar a definição de uma tabela retirar a coluna acores da tabela de Filmes. ALTER TABLE Filmes DROP acores; voltar a colocar a coluna acores. ALTER TABLE Filmes ADD acores BOOLEAN; -- acores fica com NULL 22

Eliminar tabelas utilizar DROP TABLE. -- apaga a tabela de filmes DROP TABLE Filmes; qual a diferença entre a DROP TABLE Filmes; e DELETE FROM Filmes; 23