sql – strutured query language

Propaganda
PROJETO DE BANCO DE DADOS
- INTRODUÇÃO AO SQL
Prof. Angelo Augusto Frozza, M.Sc.
INTRODUÇÃO
AO
 Ferramentas

a serem usadas nessa etapa
Ferramenta Case


SQL
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


DML – Data Manipulation Language


Comandos para o Controle do Gerenciador, Conexão e Usuário
DTL – Data Transaction Language


Comandos para a Manipulação de Dados (insert, select,
update e delete)
DCL – Data Control Language


Comandos para a Definição de Dados (create, alter e drop)
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 nome
ADD restrição_de_domínio
ALTER DOMAIN nome
DROP CONSTRAINT nome_restrição [ RESTRICT | CASCADE ]
ALTER DOMAIN nome
OWNER 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 Table
CREATE 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

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 referencial
CREATE 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
Download