Instrução Create Table

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

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)

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

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

Bases de Dados. DDL Data Definition Language

Banco de Dados. Linguagem SQL

SQL Linguagem de Definição de Dados

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

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

Definição de Dados com SQL

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

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

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

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)

Tarefa Orientada 8 Criação de tabelas

SQL Básica. Andre Noel

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.

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

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

Banco de Dados I Introdução 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

Modelagem Física e SQL

Conceito de Campos e Tabelas

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

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

Introdução a SQL (parte 2)

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

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

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

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

Tabelas. Banco de Dados I MySQL

Bancos (Bases) de Dados

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

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

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

Linguagem SQL (Parte II)

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

mod._1_teoria_sistemas de bancos de dados.doc

Banco de Dados. Professora: Luciana Faria

Linguagem de Consulta Estruturada (SQL)

BANCO DE DADOS PARA NINJAS

SQL DDL. Frederico D. Bortoloti

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

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

Mysql. Quanto mais informações você busca, mais você evolui. Vitor Ramos. Disciplina de Banco 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

SQL (Tópicos) Structured Query Language

BCD29008 Banco de dados

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

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

Manipulação de Dados com SQL

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)

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

A linguagem SQL

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

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

Comandos DDL. id_modulo = id_m odulo

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

Introdução ao PostgreSQL

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

Revisão de Bancos de Dados

Fábio Borges de Oliveira. MySQL

Teste Exemplo Revisão da tentativa 1

BDII SQL DDL Revisão 9

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

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

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

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

UFG - Instituto de Informática

Restrições do modelo relacional

MYSQL: TIPOS DE DADOS. Gilvan Vieira Moura

SQL - Criação de Tabelas

O Modelo Relacional. Criando relações em SQL

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

Linguagem SQL Restrições, Triggers e Views

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

1. Domínio dos Atributos

INF1383 -Bancos de Dados

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

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

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

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

BCD29008 Banco de dados

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>

Importar e Exportar Dados

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

Professor Leonardo Larback

Transcrição:

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 149 / 308 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: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 150 / 308 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(30), depositos integer) 151 / 308 152 / 308

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), balcaocidade char(30), 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 153 / 308 154 / 308 Instrução Alter Table Instrução Alter Table (cont) 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 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 por exemplo: ALTER TABLE Conta DROP CONSTRAINT saldo pos 155 / 308 156 / 308

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 157 / 308 158 / 308 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)); 159 / 308 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 160 / 308

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) 161 / 308 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 162 / 308 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 Exemplo 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); 163 / 308 164 / 308

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 165 / 308 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 166 / 308 Integridade Referencial em SQL (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 167 / 308 168 / 308

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 169 / 308 170 / 308 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 Administrador 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 1 U 2 U 3 U 4 U 5 171 / 308 DML SQL Linguagem a que o utilizador recorre para obter informação a partir da base de 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 União, Diferença, Divisão em SQL 172 / 308