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

Documentos relacionados
Instrução Create Table

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

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

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

SQL Linguagem de Definição de Dados

Definição de Dados com SQL

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

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

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

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)

Banco de Dados I Introdução SQL

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

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

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem 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

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

A linguagem SQL

Modelagem Física e 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

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

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

Introdução a SQL (parte 2)

Conceito de Campos e Tabelas

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

Tabelas. Banco de Dados I MySQL

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

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

Bancos (Bases) de Dados

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

mod._1_teoria_sistemas de bancos de dados.doc

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

BCD29008 Banco de dados

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

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

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

Linguagem de Consulta Estruturada (SQL)

Banco de Dados. Professora: Luciana Faria

Manipulação de Dados com SQL

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

Linguagem SQL (Parte II)

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

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

BANCO DE DADOS PARA NINJAS

SQL DDL. Frederico D. Bortoloti

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

A linguagem SQL

Comandos DDL. id_modulo = id_m odulo

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

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)

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

Revisão de Bancos de Dados

SQL (Tópicos) Structured Query Language

Teste Exemplo Revisão da tentativa 1

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

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

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

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

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

BDII SQL DDL Revisão 9

MYSQL: TIPOS DE DADOS. Gilvan Vieira Moura

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

Restrições do modelo relacional

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

UFG - Instituto de Informática

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

Importar e Exportar Dados

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

INF1383 -Bancos de Dados

O Modelo Relacional. Criando relações em SQL

Fábio Borges de Oliveira. MySQL

Professor Leonardo Larback

Material Teórico. Organização de Dados. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque

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

O Modelo Relacional. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

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

BCD29008 Banco de dados

Introdução ao PostgreSQL

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

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

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>

SQL - Criação de Tabelas

1. Domínio dos Atributos

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

MODELO RELACIONAL Prof.: Jacson Tiola Técnico em Redes de Computadores

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

Transcrição:

SQL Linguagem de Definição de Dados (DDL) 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 embutidas Relações derivadas Vistas Modificação da Base de Dados União, Diferença, Divisão em SQL SQL Embutido 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. 149 / 311 150 / 311 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. 151 / 311 Tipos Data/Tempo em SQL (cont.) 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:30.75 ); timestamp: data mais hora, ( 2001-7-27 09:00:30.75 ). 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. 152 / 311

Tipos em MySQL 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,...) 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 ( 3 0 ), depositos integer ) 153 / 311 154 / 311 Restrições de integridade Instrução Drop Table not null primary key (A 1,..., A n ) unique (A 1,..., A n ) check (P), em que P é um predicado. 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 Exemplo: CREATE TABLE Balcao ( balcaonome char (15) NOT NULL, balcaocidade char ( 3 0 ), depositos integer, PRIMARY KEY ( balcaonome ), CHECK ( depositos >= 0 ) ) Caso hajam chaves externas deve-se utilizar a declaração cascade constraints. DROP TABLE Emprestimo CASCADE CONSTRAINTS 155 / 311 156 / 311

Instrução Alter Table 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. Instrução Alter Table (cont.) 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 saldopos CHECK ( balanco > 0) Para remover restrições (definidas previamente com um nome): ALTER TABLE r DROP CONSTRAINT N por exemplo: ALTER TABLE Conta DROP CONSTRAINT saldopos 157 / 311 158 / 311 Integridade e Segurança Restrições ao Domínio Integridade Referencial Asserções Segurança e Autorizações 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. 159 / 311 160 / 311

Exemplos de restrições ao domínio create table Alunos ( numaluno number ( 6 ) not null, nome varchar (30) not null, local varchar ( 2 5 ), datansc date not null, sexo char ( 1 ) not null check ( sexo in ( F, M ) ), codcurso number ( 3 ) not null ) ; create table Produtos ( idproduto number ( 6 ) not null, nome varchar2 (30) not null, i v a number ( 2 ) not null check ( i v a in ( 5, 1 2, 2 1 ) ) ) ; create table Balcao ( balcaonome char ( 1 5 ), balcaocidade char ( 3 0 ), depositos number check ( depositos >= 0 ) ) ; 161 / 311 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. 162 / 311 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). 163 / 311 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. 164 / 311

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. Integridade Referencial em SQL Exemplos CREATE TABLE Cursos ( codcurso number ( 3 ) NOT NULL, nome varchar (35) NOT NULL, PRIMARY KEY ( codcurso ) ) ; CREATE TABLE Cadeiras ( codcadeira number ( 3 ) NOT NULL,..., PRIMARY KEY ( codcadeira ) ) ; CREATE TABLE CursoCadeira ( codcurso number ( 3 ) NOT NULL, codcadeira number ( 3 ) NOT NULL, semestre number ( 2 ) NOT NULL, PRIMARY KEY ( codcurso, codcadeira ), FOREIGN KEY ( codcurso ) REFERENCES Cursos, FOREIGN KEY ( codcadeira ) REFERENCES Cadeiras ) ; 165 / 311 166 / 311 Acções em Cascata em SQL 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 / 311 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. 168 / 311

Integridade Referencial (cont.) Segurança 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! 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 169 / 311 170 / 311 Autorizações Autorizações (Cont.) Diferentes formas de autorização, em dados da bases de dados: Diferentes formas de autorização, para alterar esquemas: 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 índex - permite criar e apagar ficheiros de indexação. Autorização de recursos - permite criar novas relações. Autorização de modificação - permite modificar tuplos, mas não apagá-los. Autorização de alteração - permite criar e apagar atributos duma relação. Autorização de apagar ( delete ) - permite apagar tuplos Autorização de remoção ( drop ) - permite apagar relações. 171 / 311 172 / 311