Linguagem SQL - DDL

Propaganda
Universidade de Passo Fundo
Tecnologia em Sistemas de Informação
TSI109- Fundamentos de Banco
de Dados
Prof. Alexandre Tagliari Lazzaretti
[email protected]
vitoria.upf.tche.br/~lazzaretti
SQL
SQL “structured query language”
– linguagem padrão comercial e completa de
definição e manipulação de banco de dados relaconais
• SQL1: aprovado pelo grupo ANSI, em 1986
• SQL2: aprovado em 1992
• SQL3: aprovado em 1999
• SQL4: em andamento
• Linguagens
– DDL (Data Definition Language)
– DML (Data Manipulation Language)
2
DDL
3
SQL - DDL
 Criação do banco de dados
CREATE DATABASE <CAMINHO E ARQUIVO>
[USER ‘usuario’ PASSWORD ‘senha’]
Exemplo:
create database ‘c:\dados\teste.gdb’
user ‘SYSDBA’ PASSWORD ‘masterkey’
Observação: para alterar o usuário de senha padrão,
primeiramente deve-se cadastrá-los no SGBD
4
SQL - DDL
Criação de tabelas
O comando CREATE TABLE: cria a tabela
solicitada
CREATE TABLE <nome da tabela>
( <descrição_das_colunas> )
( <descrição_das_restrições> )
• <tabela>: nome da nova tabela a ser criada
• <descrição_das_colunas> : lista de colunas (campos) e
seus
respectivos tipos de dados ( char, integer, decimal, date, ...)
• <descrição_das_restrições>: restrições de chaves,
integridade, domínio
5
SQL
Exemplo: criação da tabela de
diagnósticos
CREATE TABLE DIAGNOSTICOS(
CODIGODIAGNOSTICO INTEGER
NOT NULL,
DESCRICAO
VARCHAR(150)
NOT NULL,
CONSTRAINT "PKDIAGNOSTICOS" PRIMARY KEY
(CODIGODIAGNOSTICO)
);
6
SQL

Definição de chaves

Chave primária:
[constraint Pkdiagnostico] PRIMARY KEY (codigodiagnostico)

Chave estrangeira:
FOREIGN KEY (campo tabela atual) references <tabela referenciada>
(chave primaria na tabela referenciada) [cláusula]
Cláusulas:
- Delete: on delete restrict (default), on delete cascade, on delete
set null
- Update: on update restrict, on update cascade
7
SQL
Modelo Lógico
Cidades
# codigo – integer, not null
Nome – varchar(50), not null
UF – varchar(2), not null
Pessoas
# codigo – integer, not null
nome – varchar(50), not null
@cidade – integer
Modelo Físico (SQL)
Create table cidades(
Codigo integer not null,
Nome varchar(50) not null,
Uf varchar(2) not null,
Primary key (codigo));
Create table pessoas(
Codigo integer not null,
Nome varchar(50) not null,
Cidade integer,
Primary key (codigo),
Foreign key (cidade) references
cidades (codigo));
8
SQL

Exclusão de tabelas


DROP table <nome_tabela>
Alteração de tabelas:

alter table <tabela> <cláusula de coluna>

Cláusulas de colunas:
–
–
–
–
ADD – adiciona um novo atributo
ALTER – altera um atributo
DROP [COLUMN] – apaga um atributo
DROP CONSTRAINT – apaga uma constraint
9
SQL

Cláusulas de exclusões de chave
– DROP PRIMARY KEY <nome da chave primária>
– DROP FOREIGN KEY <nome da chave estrangeira>
Exemplos:

ADD
ALTER TABLE PACIENTE ADD ENDERECO VARCHAR(50);
– adiciona nova coluna com valor vazio para todas as linhas
– não pode ter especificação NOT NULL

ALTER
ALTER TABLE PACIENTE ALTER ENDERECO TYPE VARCHAR(70)

DROP
ALTER TABLE PACIENTE DROP ENDERECO;
ALTER TABLE PACIENTE DROP constraint fkpaciente
10
SQL

Cláusula check
A cláusula CHECK especifica restrições de integridade, ou
testes, que as linhas novas ou atualizadas devem atender
para uma operação de inserção ou de atualização
completar. Cada restrição deve ser uma expressão que
produza um resultado booleano. Uma condição declarada
na definição da coluna deve fazer referência apenas ao
valor desta coluna, enquanto uma condição declarada como
restrição da tabela pode fazer referência a várias colunas.
Atualmente, as expresões de CHECK não podem conter
subconsultas, nem fazer referência a variáveis que não
sejam colunas da linha atual.
– check (expressão)
11
SQL

Cláusula check
Exemplos:
01. CREATE table cidades (cod_cid integer not null,
nome_cid varchar(50) not null,
uf varchar(2) not null,
check(uf='RS' or uf='SC'));
02. ALTER table cidades add check(uf='RS' or uf='SC' or
uf='PR')
12
SQL

Cláusula domain

Compreende uma enumeração dos valores para o domínio
em questão.
– CREATE domain (expressão)
Exemplos:
CREATE domain dnome varchar(30)
CREATE table funcionarios(cod_fun integer not null,
nome_fun dnome not null)
13
SQL

Índices

Criar índice

CREATE [unique] INDEX <nomeindice> on <nometabela>
(<coluna(s)>)
 Exemplo:
Create unique index nomepac on pacientes (nome_pac)

Remover índice

DROP index <nomeindice>
 Exemplo:
DROP index nomepac
14
Alguns exemplos
== INSERÇÃO DE UM NOVO ATRIBUTO ===
ALTER TABLE PESSOAS ADD PESCID INTEGER NOT NULL;
== CRIAÇÃO DE CHAVE ESTRANGEIRA ==
ALTER TABLE PESSOAS ADD CONSTRAINT "FKPESSOA" FOREIGN KEY
(PESCID) REFERENCES CIDADES (CODCID);
== CRIAÇÃO DE CHAVE PRIMÁRIA ===
ALTER TABLE PESSOAS ADD CONSTRAINT "PKPESSOA" PRIMARY KEY
(CODPES);
15
Download