Aula 09 - SQL DDL

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 28

SQL

como Linguagem de Definição de Dados (DDL)


(Linguagem de criação do esquema)

Lidiane Visintin
[email protected]

Banco de dados
Linguagens envolvidas no projeto de um banco de
dados

 DDL - “Data Definition Language”


Linguagem usada para descrever (implementar) o
modelo lógico no SGBD
• Trabalha com os meta-dados

 DML - “Data Manipulation Language”


Linguagem usada para escrever instruções que
trabalham sobre a base de dados (acesso e
alteração de dados) Integrada com a DDL.
• Trabalha com as instâncias
Modelos Lógicos e Linguagens

Modelo Linguagem

Relacional SQL
Orientado a Objeto OQL
Objeto-Relacional SQL3
XML XQuery
Assim...
Primeiros passos

• Create database xxx;

Nome do banco de dados


Primeiros passos

• Create database xxx;

Nome do banco de dados

• Use xxx;
Como implementar

• O esquema relacional:

cidade (codigo, nome, UF)


paciente (codigo, nome, email, fone, codCid#)
codCid REFERENCIA cidade (codigo)
medico (codigo, nome, email, CRM, codCid)
codCid REFERENCIA cidade (codigo)
consulta (data, hora, codPac, codMed)
codPac REFERENCIA paciente (codigo)
codMed REFERENCIA medico (codigo)

Em um SGBD!!
Lembrem:
cidade (codigo, nome, UF)

paciente (codigo, nome, email, fone, codCid#)


codCid REFERENCIA cidade (codigo)
Indica
medico (codigo, nome, email, CRM, codCid#)
codCid REFERENCIA cidade (codigo)
Chave primária

consulta (data, hora, codPac#, codMed#)


codPac REFERENCIA paciente (codigo) Indica
codMed REFERENCIA medico (codigo)
Chave estrangeira
medicamento (codigo, descricao)

cons_medicame (data, hora, codPac#, codMedica#)


codMedica REFERENCIA medicamento (codigo)
(data, hora, codPac) REFERENCIA consulta (data, hora, codPac)
SQL como DDL
• SQL como linguagem de definição de esquemas
de dados – DDL

– Comando para definição de esquema de dados


• CREATE

– Comando para alteração de esquema de dados


• ALTER

– Comando para remoção de esquema de dados


• DROP
SQL como DDL
• Instruções para definição do esquema da base
de dados:

– CREATE TABLE
• Cria uma nova tabela na base de dados, especificando
nome, atributos e restrições
– ALTER TABLE
• Altera definições de uma tabela
– DROP TABLE
• Remove uma tabela, quando suas definições não são
mais necessárias
Criação de tabelas

• CREATE TABLE
– Colunas são especificadas primeiro
– Depois chaves

CREATE TABLE cidade


( codigo integer NOT NULL, Criar todos os atributos
nome varchar(40) NOT NULL,
UF char(2), Dos atributos criados, qual
é chave primária
PRIMARY KEY (codigo)
);
Criação de tabelas
Informar se o atributo pode ter valor nulo
Nome do atributo Tipo do atributo ou não. Se não pode, colocar NOT NULL.
Caso contrário, deixar sem nada.

CREATE TABLE cidade


( codigo integer NOT NULL,
nome varchar(40) NOT NULL,
UF char(2),
PRIMARY KEY (codigo)
);
Assim...
• Para o modelo relacional:
cidade (codigo, nome, UF)

• SQL correspondente é:

CREATE TABLE
(
codigo INTEGER NOT NULL,
nome varchar(40),
UF char(2),
PRIMARY KEY (codigo)
);
Tipos mais comuns
• Manipulação de inteiros. O parâmetro t indica o tamanho máximo.
integer(t)
int(t)
smallint(t)
tinyint(t)

• Manipulação de números fracionários


decimal(t, nr. de dígitos depois da vírgula)
numeric(t, nr. de dígitos depois da vírgula)

• Manipulação de strings
char(t) – string de tamanho exato t
varchar(t) – string de tamanho máximo t

• Data e hora
date
time
Criação de tabelas
com chave estrangeira
medico (codigo, nome, email, CRM, codCid#)
codCid REFERENCIA cidade (codigo)

CREATE TABLE medico


( codigo integer NOT NULL,
nome varchar(40) NOT NULL,
email varchar(10),
CRM integer NOT NULL,
codCid integer NOT NULL,
PRIMARY KEY (codigo),
FOREIGN KEY (codCid) REFERENCES cidade (codigo)
);
Criação de tabelas
chave alternativa
CREATE TABLE medico
( codigo integer NOT NULL,
nome varchar(40) NOT NULL,
email varchar(10),
CRM integer NOT NULL UNIQUE,
codCid integer NOT NULL,
PRIMARY KEY (codigo),
FOREIGN KEY (codCid) REFERENCES cidade (codigo)
);
Criação de tabelas
definição de chave primária composta
consulta (data, hora, codPac#, codMed#)
codPac REFERENCIA paciente (codigo)
codMed REFERENCIA medico (codigo)

CREATE TABLE consulta


( data DATE NOT NULL,
hora TIME NOT NULL,
codPac integer NOT NULL,
codMed integer NOT NULL,
PRIMARY KEY (data, hora, codPac),
FOREIGN KEY (codPac) REFERENCES paciente (codigo),
FOREIGN KEY (codMed) REFERENCES medico (codigo)
);
Criação de tabelas
referência à chave primária composta
cons_medicame (data, hora, codPac#, codMedica#)
codMedica REFERENCIA medicamento (codigo)
(data, hora, codPac) REFERENCIA consulta (data, hora, codPac)

CREATE TABLE cons_medicame


( data DATE NOT NULL,
hora TIME NOT NULL,
codPac integer NOT NULL,
codMedica integer NOT NULL,
PRIMARY KEY (data, hora, codPac, codMedica),
FOREIGN KEY (codMedica) REFERENCES medicamento (codigo),
FOREIGN KEY (data, hora, codPac)
REFERENCES consulta (data, hora, codPac)
);
Criação de tabelas
definição de restrição de chave primária
medico (codigo, nome, email, CRM, codCid#)
codCid REFERENCIA cidade (codigo)

CREATE TABLE medico


( codigo integer NOT NULL,
nome varchar(40) NOT NULL,
email varchar(10),
CRM integer NOT NULL UNIQUE,
codCid integer NOT NULL,
CONSTRAINT chaveMedico
CONSTRAINT chaveMedico PRIMARY KEY (codigo),
FOREIGN KEY (codCid) REFERENCES cidade (codigo)
);
Criação de tabelas
definição de restrição de chave estrangeira

CREATE TABLE medico


( codigo integer NOT NULL,
nome varchar(40) NOT NULL,
email varchar(10),
CRM integer NOT NULL UNIQUE,
codCid integer NOT NULL,
CONSTRAINT chaveMedico PRIMARY KEY (codigo),
CONSTRAINT moradia FOREIGN KEY (codCid)
REFERENCES cidade (codigo)
);
Criação de tabelas
definição de valores default

CREATE TABLE cidade


( codigo integer NOT NULL,
nome varchar(40) NOT NULL,
UF char(2) DEFAULT ‘RS’,
PRIMARY KEY (codigo)
);
Remoção de tabelas
• DROP TABLE
– Elimina completamente a tabela (vazia ou não)

• Ex.:
– DROP TABLE Cidade;

• Não há como recuperar a tabela removida


Alteração de tabelas
adicionar coluna

ALTER TABLE Paciente


ADD telefoneCelular VARCHAR(30);

ALTER TABLE Cidade


ADD regiao VARCHAR(30) DEFAULT 'Centro‘,
ADD pais VARCHAR(30);

cidade (codigo, nome, UF, regiao, pais)


Alteração de tabelas
alterar definição de coluna
• Nome da coluna
– Intebase/Firebird
ALTER TABLE Paciente
ALTER nome TO nomePaciente;
– Mysql
ALTER TABLE paciente CHANGE nome nomepaciente
varchar(40);

• Tipo da coluna
ALTER TABLE Paciente MODIFY nomePaciente
varchar(60);
Alteração de tabelas
excluir coluna

ALTER TABLE Paciente


DROP COLUMN nome;
Alteração de tabelas

• Apagar a definição de default de uma coluna:

ALTER TABLE cidade


ALTER uf DROP DEFAULT;

• Especificar nova definição de default:

ALTER TABLE cidade


ALTER uf SET DEFAULT 'DF';
Não funcionam no
Interbase/Firebird
DICA na criação de tabelas
Evita referências a tabelas ainda não criadas

1. Cria todas as tabelas sem chaves estrangeiras


 Escrever todos os comandos de

CREATE TABLE nomeTabela


(

);

2. Alterar todas as tabelas que possuem referencias a


outras tabelas, adicionando chaves estrangeiras
 Escrever todos os comandos de

ALTER TABLE nomeTabela


ADD CONSTRAINT nome
FOREIGN KEY(nomeChaveEstrangeira)
REFERENCES tabela(nomeChavePrimaria);
Utilizar nomes de CONSTRAINT
Exercícios

• Fazer exercícios

Você também pode gostar