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

Documentos relacionados
Instrução Create Table

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

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

Linguagem de Definição de Dados (DDL)

Bases de Dados. DDL Data Definition Language

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

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

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

Banco de Dados. Linguagem SQL

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

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

SQL Linguagem de Definição de Dados

Definição de Dados com SQL

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

SQL Básica. Andre Noel

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

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

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

Tarefa Orientada 8 Criação de tabelas

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

Modelagem Física e SQL

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

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

Banco de Dados I Introdução SQL

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

Modelagem Física e SQL

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

A linguagem SQL

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

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

Modelo Relacional + SQL (DDL) Material elaborado pela Prof. Karin Becker

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

BCD29008 Banco de dados

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

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

Tabelas. Banco de Dados I MySQL

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Introdução a SQL (parte 2)

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

mod._1_teoria_sistemas de bancos de dados.doc

Conceito de Campos e Tabelas

Linguagem de Consulta Estruturada (SQL)

Bancos (Bases) de Dados

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

Manipulação de Dados com SQL

SQL DDL. Frederico D. Bortoloti

BANCO DE DADOS TIPOS DE VARÁVEIS SQL. Professor Carlos Muniz

A linguagem SQL

Banco de Dados. Professora: Luciana Faria

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

BANCO DE DADOS PARA NINJAS

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

SQL (Tópicos) Structured Query Language

Conceitos de Modelo Relacional Restrições de um Banco de Dados

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

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

Linguagem SQL (Parte II)

Tipos de Dados. Banco de Dados I Prof. Erinaldo Nascimento

Teste Exemplo Revisão da tentativa 1

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

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

Revisão de Bancos de Dados

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

Comandos SQL. Exercícios com o MySQL ou MaridaDB. Prof. Emiliano S. Monteiro

Comandos DDL. id_modulo = id_m odulo

Projecção Generalizada

UNIVERSIDADE FEDERAL DO MARANHÃO - UFMA. Banco de Dados II. Integridade. Carlos Eduardo Portela Serra de Castro

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

Banco de Dados. Módulo 7 - Modelo Relacional. Definição do Esquema Relacional em SQL. modulo07.prz 1 10/09/01

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)

Importar e Exportar Dados

Introdução ao Banco de Dados. Banco de Dados

UFG - Instituto de Informática

Introdução ao PostgreSQL

BDII SQL DDL Revisão 9

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

INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO

Linguagem SQL Restrições, Triggers e Views

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

Fábio Borges de Oliveira. MySQL

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

Banco de dados. Linguagens de Banco de Dados II. Wedson Quintanilha da Silva -

INF1383 -Bancos de Dados

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

BANCO DE DADOS GERENCIAL 1 A U L A 2

MYSQL: TIPOS DE DADOS. Gilvan Vieira Moura

Restrições do modelo relacional

SQL - Criação de Tabelas

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

Informática I. Aula 8. Aula 8-25/09/2006 1

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

SQL. Prof. Roger Cristhian Gomes

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

O Modelo Relacional. Criando relações em SQL

Transcrição:

Exemplos de Vistas SQL Considere-se a vista (com o nome todososconsumidores) contento os nomes das agências e seus clientes CREATE VIEW todososclientes As Π nomebalcao,nomecliente (temconta conta) Π nomebalcao,nomecliente (tememprestimo emprestimo) Pode-se assim encontrar todos os clientes da agência de Penacova através de: Π nomebalcao (σ nomebalcao= Penacova (todososclientes)) Linguagem de Definição dos Dados Tipos em SQL Manipular Tabelas (relações) Integridade e Segurança Linguagem de Manipulação dos Dados Estrutura básica Operações com conjuntos Funções de agregação Valores nulos Junções Sub-consultas embebidas Relações derivadas Vistas Modificação da Base de Dados Embedded SQL 149 / 299 150 / 299 Linguagem de Definição de Dados (DDL) Linguagem para especificar a informação acerca de cada relação, incluindo: O esquema de cada relação O domínio de valores associados com cada atributo Restrições de integridade O conjunto de índices a manter para cada relação Informação de segurança e autorização para cada relação As estruturas de armazenamento físico em disco de cada relação 151 / 299 Tipos em SQL char(n): cadeia de caracteres de comprimento fixo n varchar(n): cadeia de caracteres de comprimento variável, com o máximo n especificado pelo utilizador int: inteiro (um subconjunto finito dos inteiros, dependente da máquina) smallint: inteiro pequeno (um subconjunto do tipo int) numeric(p,d): número de vírgula fixa, com de p dígitos no total e com d casas decimais real, double precision: Números de vírgula flutuante, com precisão dependente da máquina float(n): número de vírgula flutuante, com um mínimo de precisão de n dígitos Os valores nulos (NULL) são permitidos em todos os tipos de dados A declaração de um atributo como NOT NULL proíbe os valores nulos para esse atributo 152 / 299

Tipos Data/Tempo em SQL (cont) Tipos em MySQL date: datas, contendo um ano com (4 dígitos), mês e dia, ( 2001-7-27 ); time: tempo (diário), em horas, minutos e segundos, ( 09:00:3075 ); timestamp: data mais hora, ( 2001-7-27 09:00:3075 ) Interval: período de tempo A subtracção de dois valores de date/time/timestamp devolve um intervalo Os valores de intervalos podem ser adicionados a valores de date/time/timestamp Pode-se extrair campos do valor date/time/timestamp TINYINT[(tamanho)] [UNSIGNED] [ZEROFILL] SMALLINT[(tamanho)] [UNSIGNED] [ZEROFILL] MEDIUMINT[(tamanho)] [UNSIGNED] [ZEROFILL] INT[(tamanho)] [UNSIGNED] [ZEROFILL] INTEGER[(tamanho)] [UNSIGNED] [ZEROFILL] BIGINT[(tamanho)] [UNSIGNED] [ZEROFILL] REAL[(tamanho,decimais)] [UNSIGNED] [ZEROFILL] DOUBLE[(tamanho,decimais)] [UNSIGNED] [ZEROFILL] FLOAT[(tamanho,decimais)] [UNSIGNED] [ZEROFILL] DECIMAL(tamanho,decimais) [UNSIGNED] [ZEROFILL] NUMERIC(tamanho,decimais) [UNSIGNED] [ZEROFILL] CHAR(tamanho) [BINARY ASCII UNICODE] VARCHAR(tamanho) [BINARY] DATE TIME TIMESTAMP DATETIME TINYBLOB BLOB MEDIUMBLOB LONGBLOB TINYTEXT TEXT MEDIUMTEXT LONGTEXT ENUM(value1,value2,value3,) SET(value1,value2,value3,) 153 / 299 154 / 299 Instrução Create Table Uma tabela SQL é definida recorrendo ao comando CREATE TABLE: CREATE TABLE r (A 1 D 1, A 2 D 2,, A n D n, restrição de integridade 1,, restrição de integridade k) r é o nome da relação; A i é o nome de um atributo no esquema de relação r; D i é o tipo de dados dos valores no domínio do atributo A i Exemplo: CREATE TABLE balcao (balcaonome char(15) not null, balcaocidade char(30), depositos integer) Restrições de integridade not null primary key (A 1,, A n ) unique (A 1,, A n ) check (P), em que P é um predicado Exemplo: CREATE TABLE balcao (balcaonome char(15), balcaocidade char(30), depositos integer, PRIMARY KEY (balcaonome), CHECK (depositos >= 0)) 155 / 299 156 / 299

Instrução Drop Table Instrução Alter Table O comando DROP TABLE remove da base de dados toda a informação sobre a relação (e não apenas os dados) DROP TABLE Emprestimo Caso hajam chaves externas deve-se utilizar a declaração cascade constraints DROP TABLE Emprestimo CASCADE CONSTRAINTS O comando ALTER TABLE é utilizado para modificar o esquema, ou as restrições sobre relações já existente Para adicionar novos atributos: ALTER TABLE r ADD A D em que A é o nome do atributo a adicionar à relação r e D o domínio de A Todos os tuplos existentes ficam com NULL no novo atributo Para eliminar atributos de uma relação ALTER TABLE r DROP A em que A é o nome de um atributo na relação r 157 / 299 158 / 299 Instrução Alter Table (cont) Integridade e Segurança Para adicionar novas restrições: ALTER TABLE r ADD CONSTRAINT N R em que N é um nome dado à nova restrição e R define a restrição Por exemplo: ALTER TABLE Conta ADD CONSTRAINT saldo pos CHECK (balanco > 0) Para remover restrições (definidas previamente com um nome): ALTER TABLE r DROP CONSTRAINT N Restrições ao Domínio Integridade Referencial Asserções Segurança e Autorizações por exemplo: ALTER TABLE Conta DROP CONSTRAINT saldo pos 159 / 299 160 / 299

Restrições ao Domínio As restrições de integridade impõem-se para garantir que os dados fiquem protegidos contra estragos acidentais Devem asseguram que da actualização dos dados não resulta a perda da consistência Restrições ao domínio são a forma mais elementar de restrição de integridade Testam condições sobre valores a introduzir em atributos Fazem-no, restringindo o domínio do atributo em causa No momento em que se define a tabela A forma mais comum de restrição ao domínio é a proibição do valor NULL (NOT NULL depois do atributo) Podem-se impor outras restrições usando, depois dum nome de atributo A, CHECK(condição(A 1,, A n )) onde condição() denota uma condição imposta sobre os atributos A 1,,A n Exemplos de restrições ao domínio create table alunos( num_aluno number(6) not null, nome varchar(30) not null, local varchar(25), data_nsc date not null, sexo char(1) not null check (sexo in ( F, M )), cod_curso number(3) not null); create table produtos( id_produto number(6) not null, nome varchar2(30) not null, iva number(2) not null check (iva in (5,12,21))); create table balcao(balcaonome char(15), balcaocidade char(30), depositos number check (depositos >= 0)); 161 / 299 162 / 299 Integridade Referencial Chaves Externas (também designadas por estrangeiras ) Garante que um valor que ocorre numa relação para um certo conjunto de atributos também ocorre num outro conjunto de atributos de outra relação Exemplo: Se Coimbra-central é o nome de uma agência que ocorre num dos tuplos da relação Conta, então existe um tuplo na relação Balcao para o balcão Coimbra-central Definição Formal: Sejam r 1 (R 1 ) e r 2 (R 2 ) duas relações com chaves primárias K 1 e K 2 respectivamente O subconjunto α de R 2 é uma chave externa referindo K 1 na relação r 1, se para todo t 2 em r 2 existe um tuplo t 1 em r 1 tal que t 1 [K 1 ] = t 2 [α] Aquando da escrita do modelo relacional as chaves externas são distinguidas colocando-as a sublinhado a tracejado 163 / 299 Modificação da Base de Dados Os testes abaixo devem ser efectuados de modo a preservar-se a seguinte restrição de integridade referencial: Π α (r2) Π K (r1) Inserção: se um tuplo t 2 é inserido em r 2, o sistema tem de garantir que existe um tuplo t 1 em r 1 tal que t 1 [K] = t 2 [α] Ou seja t 2 [α] Π K (r1) Remoção: se um tuplo t 1 é removido de r 1, o sistema deve calcular o conjunto de tuplos em r 2 que referenciam t 1 : σ α=t1 [K](r 2 ) Se este conjunto não é vazio, ou o comando de remoção é rejeitado, ou os tuplos que referenciam t 1 devem ser eles próprios removidos (remoções em cascata são possíveis) 164 / 299

Modificação da Base de Dados (Cont) Actualização Existem duas situações: Se um tuplo t 2 é actualizado na relação r 2 em que é modificado o valor da chave externa α, então é efectuado um teste similar ao da inserção Seja t 2 o novo valor do tuplo t 2 O sistema deve garantir que t 2 [α] Π K (r1) Se o tuplo t 1 é actualizado em r 1, e a operação altera o valor da chave primária (K), então é efectuado um teste semelhante ao da remoção O sistema deve calcular σ α=t1 [K](r 2 ) usando o valor anterior de t 1 (o valor antes da actualização) Se o conjunto é não vazio, a actualização pode ser rejeitado, ou a actualização pode ser propagada em cascata, ou os tuplos podem ser removidos Integridade Referencial em SQL As chaves primárias, candidatas e externas podem ser especificadas na instrução SQL create table: A cláusula primary key inclui a lista dos atributos que formam a chave primária A cláusula unique key inclui a lista dos atributos que formam a chave candidata A cláusula foreign key inclui a lista de atributos que constituem a chave externa assim como o nome da relação referenciada pela chave externa 165 / 299 166 / 299 Integridade Referencial em SQL Exemplo Acções em Cascata em SQL CREATE TABLE cursos(cod_curso number(3) NOT NULL, nome varchar(35) NOT NULL, PRIMARY KEY (cod_curso)); CREATE TABLE cadeiras(cod_cadeira number(3) NOT NULL,, PRIMARY KEY (cod_cadeira)); CREATE TABLE curso_cadeira(cod_curso number(3) NOT NULL, cod_cadeira number(3) NOT NULL, semestre number(2) NOT NULL, PRIMARY KEY (cod_curso, cod_cadeira), FOREIGN KEY (cod_curso) REFERENCES cursos, FOREIGN KEY (cod_cadeira) REFERENCES cadeiras); CREATE TABLE Conta FOREIGN KEY (balcaonome) REFERENCES Balcao ON DELETE CASCADE ON UPDATE CASCADE ) Com as cláusulas ON DELETE CASCADE, se a remoção de um tuplo na relação Balcao resulta na violação da restrição da integridade referencial, a remoção propaga-se em cascata para a relação Conta, removendo o tuplo que referia a agência que tinha sido eliminada Actualizações em cascata são semelhantes 167 / 299 168 / 299

Acções em cascata em SQL (cont) Se existe uma cadeia de dependências de chaves externas através de várias relações, com um ON DELETE CASCADE especificado em cada dependência, uma remoção ou actualização num dos extremos pode-se propagar através de toda a cadeia Se uma remoção ou actualização em cascata origina uma violação de uma restrição que não pode ser tratada por uma outra operação em cascata, o sistema aborta a transacção Como resultado, todas as alterações provocadas pela transacção e respectivas acções em cascata serão anuladas A integridade referencial é verificada apenas no final da transacção Passos intermédios podem violar a integridade referencial desde que passos posteriores a reponham Caso contrário seria impossível criar alguns estados da base de dados, por exemplos, inserir dois tuplos cujas chaves externas apontam um para o outro Integridade Referencial em SQL (cont) Alternativas às operações em cascata: ON DELETE SET NULL ON DELETE SET DEFAULT Valores nulos em atributos de chaves externas complicam a semântica de integridade referencial da SQL, devendo-se evitar recorrendo a NOT NULL Se algum atributo de uma chave externa é nulo, o tuplo satisfaz automaticamente a restrição de integridade referencial! 169 / 299 170 / 299 Segurança Autorizações Segurança ao contrário das restrições de integridade, que pretendiam proteger a base de dados contra estragos acidentais, a segurança preocupa-se com proteger a base de dados de estragos propositados A nível do sistema operativo A nível da rede A nível físico A nível humano A nível da base de dados Mecanismos de autenticação e autorização para permitir acessos selectivos de (certos) utilizadores a (certas) partes dos dados Diferentes formas de autorização, em dados da bases de dados: Autorização de leitura - permite ler, mas não modificar dados Autorização de inserção - permite inserir novos tuplos, mas não modificar tuplos existentes Autorização de modificação - permite modificar tuplos, mas não apagá-los Autorização de apagar ( delete ) - permite apagar tuplos 171 / 299 172 / 299

Autorizações (Cont) Diferentes formas de autorização, para alterar esquemas: Autorização de índex - permite criar e apagar ficheiros de indexação Atribuição de Privilégios A passagem de privilégios de um utilizador para outro pode ser representado por um grafo de autorizações Os nós do grafo são utilizadores A raiz é o administrador da base de dados Por exemplo: no grafo abaixo um arco U i U j indica que o utilizador U i atribuiu ao utilizador U j um determinado privilégio U 1 U 4 Autorização de recursos - permite criar novas relações Administrador U 2 U 5 Autorização de alteração - permite criar e apagar atributos duma relação Autorização de remoção ( drop ) - permite apagar relações Todos os arcos têm que fazer parte de algum caminho com origem no administrador Um dado utilizador, que não o administrador, só pode atribuir privilégios a outro utilizador se para isso estiver mandatado, isto é, se tiver o privilégio de atribuir privilégios O comando GRANT é o comando usado para atribuir privilégios U 3 173 / 299 174 / 299 DML SQL Esquema Utilizado em Exemplos Linguagem a que o utilizador recorre para obter informação a partir da base de dados Estrutura básica Produtos codproduto nome preco quantidade Operações com conjuntos Funções de agregação Valores nulos Item unidades FornecedorDe Junções Sub-consultas embebidas Relações derivadas Modificação da Base de Dados Encomendas numero data FornecidaPor Fornecedores ncontribuinte nome morada prazo fax tipo 175 / 299 176 / 299