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

PROJETO DE BANCO DE DADOS -INTRODUÇÃO AO SQLfrozza/2012.2/TSI12/...IntroducaoSQL-DDL.pdf · sql – strutured query language resumo:

  • Upload
    votuong

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

PROJETO DE BANCO DE DADOS- INTRODUÇÃO AO SQLProf. Angelo Augusto Frozza, M.Sc.

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

Integridade referencial (SQLite3)

SQL – STRUTURED QUERY LANGUAGE

Integridade referencial (SQLite3)

SQL – STRUTURED QUERY LANGUAGE

Restrições em campos (SQLite 3):

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

);

SQL – STRUTURED QUERY LANGUAGE

Resumo:

Foi visto a criação dos seguintes objetos: Database (Base de Dados)

Table (Tabelas)

Index (Indíces)

Domain (Domínios) Não suportado pelo SQLite 3