projeto de banco de dados -introduÇÃo ao sqlfrozza/2012.2/tsi12/...introducaosql-ddl.pdf · sql...
TRANSCRIPT
INTRODUÇÃO AO SQL
Ferramentas a serem usadas nessa etapa
Ferramenta Case brModelo (versão 2.0)
Sistema Gerenciador de Banco de Dados (SGBD) SQLite 3 (executa via Pen Driver) PostgreSQL versão 9 ou superior
SQL – STRUTURED QUERY LANGUAGE
Em 1986, o American Nacional Standard Institute (ANSI) publicou e padronizou a linguagem SQL;
SQL estabeleceu-se como linguagem padrão do Modelo Relacional;
“Deveria” ser padrão para todos os gerenciadores de Banco de Dados: 1º versão 1989 2º versão 1992 (SQL-92) 3º versão 1999 (SQL:1999) 4º versão 2003 (SQL:2003)
SQL – STRUTURED QUERY LANGUAGE
Os comandos SQL podem ser agrupados em 5 classes: DDL – Data Definition Language
Comandos para a Definição de Dados (create, alter e drop)
DML – Data Manipulation Language Comandos para a Manipulação de Dados (insert, select, update e delete)
DCL – Data Control Language Comandos para o Controle do Gerenciador, Conexão e Usuário
DTL – Data Transaction Language Comandos para o Controle de Transações
DQL – Data Query Language Comando para o consulta a dados (select)
SQL – STRUTURED QUERY LANGUAGE
Exemplos de objetos manipuláveis em um Banco de Dados: Database (Base de Dados)
Table (Tabelas)
Index (Indíces)
View (Visões)
Stored Procedures (Procedimentos)
Triggers (Gatilhos)
Domain (Domínios)
Generator (Variáveis Globais)
Exception (Excecões)
User (Usuários)
Role (Grupos de Usuários)
SQL – STRUTURED QUERY LANGUAGE
Comandos básicos da Linguagem de Definição dos Dados (DDL):
CREATE ALTER DROP
SQL – STRUTURED QUERY LANGUAGE
Objeto Database (Base de Dados) -Definição
Arquivo que contém a descrição dos dados, metadados, esquema do banco de dados;
Contém todos os objetos criados; Contém os dados; Detém a segurança da estrutura completa;
Sintaxe:
Create database nome_banco
SQL – STRUTURED QUERY LANGUAGE
Objeto Domínio – Definição
São tipos de dados criados para evitar redundâncias de tipos e facilitar a manutenção do Banco de Dados;
SQL – STRUTURED QUERY LANGUAGE
Criando objetos Domínio CREATE DOMAIN d_logradouro VARCHAR(40);
CREATE DOMAIN d_numero VARCHAR(6);
CREATE DOMAIN d_cep VARCHAR(8);
CREATE DOMAIN d_bairro VARCHAR(30);
CREATE DOMAIN d_complemento VARCHAR(20);
CREATE DOMAIN d_fone VARCHAR(10);
CREATE DOMAIN d_cpf VARCHAR(11);
CREATE DOMAIN d_rg VARCHAR(15);
CREATE DOMAIN d_email VARCHAR(50);
SQL – STRUTURED QUERY LANGUAGE
Criando objetos Domínio
CREATE DOMAIN d_logico VARCHAR(1) CHECK (VALUE IN (‘S’, ‘N’));
CREATE DOMAIN d_sexo VARCHAR(1) CHECK (VALUE IN (‘M’, ‘F’));
CREATE DOMAIN d_estado_civil VARCHAR(15) CHECK (VALUE IN (‘CASADO’, ‘SOLTEIRO’, ‘DESQUITADO’, ‘SEPARADO’, ‘OUTROS’));
CREATE DOMAIN d_data_atual AS DATE DEFAULT 'NOW‘ NOT NULL;
CREATE DOMAIN d_comentarios AS BYTEA NOT NULL;
SQL – STRUTURED QUERY LANGUAGE
Alterando um objeto Domínio
ALTER DOMAIN d_logico SET DEFAULT ‘S’;
ALTER DOMAIN nome{ SET DEFAULT expressão | DROP DEFAULT }
ALTER DOMAIN nome{ SET | DROP } NOT NULL
ALTER DOMAIN nomeADD restrição_de_domínio
ALTER DOMAIN nomeDROP CONSTRAINT nome_restrição [ RESTRICT | CASCADE ]
ALTER DOMAIN nomeOWNER TO novo_dono
SQL – STRUTURED QUERY LANGUAGE
Eliminando um objeto Domínio
DROP DOMAIN d_logico;
DROP DOMAIN d_email;
SQL – STRUTURED QUERY LANGUAGE
Objeto Table – Definição
É o local onde armazenamos os dados;
Regras para definição do objeto TABLE: Primeiro criar as tabelas que não possuem chave
estrangeira; A chave primária sempre será um campo não nulo; Criar Constraints (dar nomes às chaves primárias e
estrangeiras); Constraints são restrições criadas para manter a
consistência da base de dados; Não podem existir Contraints com mesmo nome na mesma
base de dados;
Ex: A definição de uma chave primária é uma restrição; A definição de uma chave estrangeira é uma restrição;
SQL – STRUTURED QUERY LANGUAGE
Criando um Objeto Table
Tabela Municipio
CREATE TABLE municipio (id_municipio INTEGER NOT NULL,nome VARCHAR(35) NOT NULL,uf VARCHAR(2) NOT NULL,CONSTRAINT pk_municipio PRIMARY KEY
(id_municipio));
SQL – STRUTURED QUERY LANGUAGE
Criando um Objeto TableCREATE TABLE contador (
id_contador INTEGER NOT NULL,nome VARCHAR(50) NOT NULL,logradouro D_LOGRADOURO,nr D_NUMERO,complemento D_COMPLEMENTO,cep D_CEP,bairro D_BAIRRO,fone D_FONE,fax D_FONE,email D_EMAIL,id_municipio INTEGER NOT NULL,CONSTRAINT pk_contador PRIMARY KEY (id_contador), CONSTRAINT fk_contador_municipio
FOREIGN KEY (id_municipio) REFERENCES municipioOn Update Cascade On Delete no Action
);
SQL – STRUTURED QUERY LANGUAGE
Alterando a estrutura de um objeto Table
- Adicionar o campo data do cadastro na tabela contador:Alter Table Contador add Data D_DataAtual;
- Adicionar o campo teste do cadastro na tabela contador:Alter Table Contador add Teste Varchar(10);
- Alterando o tipo de um atributo na entidade contador;Alter Table Contador alter nome type varchar(50) not
null;
- Eliminando um atributo na entidade contador;Alter Table Contador drop teste;
SQL – STRUTURED QUERY LANGUAGE
Eliminando um objeto Table
Drop Table Municipio; Não vai aceitar, pois existe a tabela contador
relacionada;
1o) Drop Table Contador;
2o) Drop Table Municipio;
SQL – STRUTURED QUERY LANGUAGE
Integridade referencial
Integridade referencial é um conjunto de regras e de consistências entre os registros de duas tabelas que se relacionam;
Como foi visto no modelo relacional: quando duas tabelas se relacionam, a chave primária de uma é
copiada para a outra; se esses dados forem alterados ou excluídos da tabela original é
necessário verificar o que será feito com os dados e registros duplicados na outra tabela;
SQL – STRUTURED QUERY LANGUAGE
Integridade referencial
Quando se define uma integridade referencial, está se definindo o procedimento que será tomado quando esses processos ocorrerem;
Sejam duas tabelas “A” e “B” que se relacionam através de uma coluna “c” que é a chave primária de “A” e, portanto, foi repetida em “B” para se fazer o relacionamento;
Quando se define uma integridade referencial para esse relacionamento, está se definindo que a coluna “c” da tabela “B” só pode conter valores já cadastrados na coluna “c” da tabela “A”;
SQL – STRUTURED QUERY LANGUAGE
Integridade referencial
Existem três formas de se manter essa regra quando registros da tabela “A” são excluídos:
Restrict: define que, se o valor da coluna “c” de “A” existir em algum registro de “B”, o registro não poderá ser excluído e uma mensagem de erro retornará para a aplicação;
Cascade: define que, se o valor da coluna “c” de “A” existir em algum registro de “B”, todos os registros que possuírem esse valor serão também excluídos;
Set Null: define que, se o valor da coluna “c” de “A” existir em algum registro de “B”, os valores de “c” em todos os registros serão transformados para “Null”;
SQL – STRUTURED QUERY LANGUAGE
Integridade referencialCREATE TABLE contador (
id_contador INTEGER NOT NULL,nome VARCHAR(50) NOT NULL,logradouro D_LOGRADOURO,nr D_NUMERO,complemento D_COMPLEMENTO,cep D_CEP,bairro D_BAIRRO,fone D_FONE,fax D_FONE,email D_EMAIL,id_municipio INTEGER NOT NULL,CONSTRAINT pk_contador PRIMARY KEY (id_contador), CONSTRAINT fk_contador_municipio
FOREIGN KEY (id_municipio) REFERENCES municipio On Update Cascade On Delete no Action
);
SQL – STRUTURED QUERY LANGUAGE
Exemplo geral:
CREATE TABLE example (id_example INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL,inteiro_opcional INTEGER,inteiro_obrigatorio INTEGER NOT NULL,real_opcional NUMBER(15,2),real_obrigatorio NUMBER(15,2) NOT NULL,texto_opcional VARCHAR(30),texto_obrigatorio VARCHAR(30) NOT NULL,texto_unico VARCHAR(30) UNIQUE,data DATE,hora TIME,logico BOOLEAN
);