Sei sulla pagina 1di 33

Reviso de

Structured Query Language


(SQL)

Profa. Georgia Gomes

20123.1Pg. 1 de 38

Introduo
SQL

uma linguagem padro de construo,consulta e atualizao de SGBDs relacionais;

Profa. Georgia Gomes

20123.1Pg. 2 de 38

Componentes da Linguagem

DDL (Data Definition Language ) - linguagem de definio de dados (criao,alterao e excluso de tabelas, ndices,vises,... ) DML (Data Manipulation Language ) - linguagem de manipulao de dados (consultas, atualizaes e excluses)

Profa. Georgia Gomes

20123.1Pg. 3 de 38

Principais Comandos
DDL: Create tipoobjeto nome_ objeto Alter tipoobjeto nome_objeto Drop tipoobjeto nome_objeto onde objeto: tabela, ndice,view, stored-procedure, DML: Select * From tabela where condio Insert into tabela (atrib1,atrib2,atrib3) values (xxx,1233,111) Update tabela set atributo1=** where condio Delete tabela where condio

Profa. Georgia Gomes

20123.1Pg. 4 de 38

Tabelas
No modelo relacional toda informao representada na forma de tabelas. Cada tabela possui um nmero definido de colunas (atributos) que detalham a informao . Cada atributo possui: um nome, um tipo de dado, um tamanho (opcional), uma caracterstica de nulidade e, possivelmente, regras

Profa. Georgia Gomes

20123.1Pg. 5 de 38

Tipo de dados
Numrico

Inteiro - int, smallint, tinyint, bigint Decimal - Numeric(i,j), decimal (i,j), onde i o nmero total de digitos e j o numero de digitos aps o ponto caracter char(n) varchar(n) text Data datetime - data e hora

Profa. Georgia Gomes

20123.1Pg. 6 de 38

Exemplo de criao de tabela


Aluno

Nome de atributos deve seguir padro !!!!

Matric Nome Endere Curso ula o 1 Joo Rua 1, BD 102 2 Marco Rua 2, CA a identificao da tabela no Cr s 202 sistema. Deve seguir um padro Create table aluno 3 Maria Rua 3, RED (nrmatricula int, 250 nmaluno varchar(60) , 4 Antni Rua BD dsendereco varchar(120) , o 4,401 cdcurso char(3))
20123.1Pg. 8 de 38

Profa. Georgia Gomes

Padronizao de Nomes
Nomes nomes concisos mas representativos. Nome de tabela Nunca usar preposio, mas, se preciso, formar nomes compostos, exemplo : aluno, detalhe_venda, estoque, fornecimento, Nome de colunas iniciar com dois caracteres definidores da classe do atributo. Demais caracteres descrevem seu significado.

Profa. Georgia Gomes

20123.1Pg. 9 de 38

Padronizao nome de atributos


nm - nome . Ex:nmaluno,nmcandidato, nr - nmero. Ex: nrnotafiscal,nrtelefone, in - indicador. Ex:inbomcliente,insaude, dt - data. EX: dtfechamento, dtcompra, id - identificador. Ex: idremessa, idpessoa, ds - descrio. Ex: dsendereco, dstempo, cd - cdigo. Ex: cdproduto, cdcliente,... vl - valor. Ex: vlcompra,vlitem, pc - percentual. Ex: pcvendames, pccrescimento, im,tx - imagem, texto. Ex: imfoto,txcontrato qt - quantidade. Ex: qthoras
20123.1Pg. 10 de 38

Profa. Georgia Gomes

Chave Primria (PK)


Conjunto de colunas que identificam, unicamente, cada uma das linhas nas tabelas. nrmatricula - tabela aluno cdcliente - tabela cliente nrcnpj, nrnotafiscal - tabela nota-fiscal cdmatricula,cddisciplina, cdturma - tabela nota So as grandes candidatas para buscas de informaes em tabelas. Qual a mdia do aluno de matrcula 1? Qual o nome do cliente cujo cdigo 123?

Profa. Georgia Gomes

20123.1Pg. 11 de 38

Chave Primria (PK)


Aluno

Matric Nome Endere ula o

curso

Rua 1, 102 2 Marco Rua 2, s 202 Create table 3aluno Maria Rua 3, (nrmatricula int primary key, 250 nmaluno varchar(60) , dsendereco 4 varchar(120) Antni, Rua cdcurso varchar(4)) o 4,401
Profa. Georgia Gomes

Joo

BD CA
O SGBD garante que no haver dois alunos com mesmo nrmatricula !!!

RED BD

20123.1Pg. 12 de 38

Chave Primria (PK)


Endere o 1 Joo Rua 1, 102 2 Marcos Rua 2, 202 Create table aluno 3 Maria Rua 3, (nrmatricula int, 250 nmaluno varchar(60) , dsendereco varchar(120) ,Rua 4 Antnio cdcurso varchar(4) 4,401
Aluno
Profa. Georgia Gomes

Matricul a

Nome

curso BD CA
Utilizado quando CP composta !!!!

RED BD

constraint pk_aluno primary key (nrmatricula))


20123.1Pg. 13 de 38

Chave Estrangeira (FK)


Implementa o relacionamento entre tabelas. Exemplos: aluno cdcurso -> curso professor cddepartamento - > departamento A partir desses relacionamentos, pode-se perguntar: Qual o departamento do professor de matrcula 1 ?

Profa. Georgia Gomes

20123.1Pg. 14 de 38

Chave Estrangeira (FK)


Chave Primria Curso
Curso BD CA RED Descrio Banco de Dados Construo de Algoritmos Redes de Computadores
Chave estrangeira estabelece o relacionamento entre as tabelas

Aluno

Matricul a

2
Profa. Georgia Gomes

Endere o Joo Rua 1, 102 Marcos Rua 2, 202

Nome

Curso BD

CA
20123.1Pg. 15 de 38

Implementando Chave Estrangeira


Associao feita com a chave primria da tabela referenciada. Ambas (primria e estrangeira) so de mesmo tipo de dado!!! O SGBD garante que no haver aluno associado a curso que no esteja cadastrado na tabela curso

Create table curso (cdcurso char(3) primary key, dscurso varchar(60) )

Create table aluno (nrmatricula int primary key, nmaluno varchar(60) , dsendereco varchar(120) , cdcurso char(3) constraint fk_aluno_curso foreign key references curso (cdcurso))

Profa. Georgia Gomes

20123.1Pg. 16 de 38

Chave primria composta


Aluno Matricula
Nome
Joo Marcos Maria Antnio

Endereo
Rua 1, 102 Rua 2, 202 Rua 3, 250 Rua 4,401

Curso Curso BD CA
RED

Descrio Banco de Dados Construo de Algoritmos Redes de Computadores


Participao Curso
Curso

1 2 3 4

PK composta
Matricula
1 1 2

BD CA BD

Profa. Georgia Gomes

20123.1Pg. 17 de 38

Chave primria composta


Participao Curso

Curso
BD CA

Matricula
1 1

Create table participacao_curso BD 2 (nrmatricula int, cdcurso char(3), constraint pk_participacao_curso primary key (nrmatricula,cdcurso), constraint fk_participa_curso_curso foreign key(cdcurso) references curso (cdcurso), constraint fk_participa_curso_aluno foreign key (nrmatricula) references aluno (nrmatricula))
Profa. Georgia Gomes 20123.1Pg. 18 de 38

Chave estrangeira composta


Participao Curso Curso BD CA BD Matricula 1 1 2 A chave primria composta das colunas (curso,matricula,prova), onde (curso,matricula) chave estrangeira para participao em curso.

Nota Curso

Curso

Matricula

Prova

Nota 8,0 6,0 7,0


20123.1Pg. 19 de 38

BD BD BD
Profa. Georgia Gomes

1 1 2

P1 P2 P1

Chave estrangeira composta


Nota Curso
Curso Matricula Prova

Nota 8,0

BD

P1

Create table nota_curso BD 1 P2 6,0 (cdcurso char(3), BD 2 P1 7,0 nrmatricula int, cdprova char(2), nota decimal(3,1), constraint pk_nota_curso primary key (nrmatricula,cdcurso,cdprova), constraint fk_nota_part_curso foreign key (nrmatricula ,cdcurso) references participacao_curso (nrmatricula , cdcurso))

Profa. Georgia Gomes

20123.1Pg. 20 de 38

Regras de excluso de FK
Excluir Curso Curso
Curso

Descrio
Banco de Dados Construo de Algoritmos Redes de Computadores

BD CA Create table participacao_curso (cdcurso ..., ., constraint fk_participa_curso foreign key (cdcurso) references curso on delete cascade) RED

Participao Curso

Curso

Matricula
1 1 2

BD CA BD

Profa. Georgia Gomes

20123.1Pg. 21 de 38

Regras de Integridade (em relao ao filho)

excluir

- em cascata os dependentes no alterar - impedir a excluso do material associar o valor nulo aos dependentes associar um valor default aos dependentes excluir o pai e nada fazer aos dependentes

Profa. Georgia Gomes

20123.1Pg. 22 de 38

Regras de Domnio
Restringem os valores admissveis em uma coluna. Detalham a definio de valores especificada pelo tipo de dado Podem exprimir qualquer expresso booleana vlida em SQL. exs: sexo = {M,F} dias_semana = {seg,terc,,dom} notas >= 0 e <=10 tipos de pessoa= {J,F}

Profa. Georgia Gomes

20123.1Pg. 23 de 38

Regras de Domnio
Nota Curso
Curso Matricula Prova

Nota 8,0

BD

P1

Determina o intervalo Create table nota_curso BD 1 P2 6,0 de valores vlidos (cdcurso char(3), para a coluna notas! BD 2 P1 7,0 nrmatricula int, cdprova char(2), nota decimal(3,1) constraint ck_nota_val check (nota >=0 and nota<=10), constraint pk_nota_curso primary key (nrmatricula,cdcurso,cdprova), constraint fk_nota_part_curso foreign key (nrmatricula ,cdcurso) references participacao_curso (nrmatricula , cdcurso))

Profa. Georgia Gomes

20123.1Pg. 24 de 38

Alterao de Tabelas
Alterar qualquer informao em colunas:
alter table nota_curso alter nota numeric (4,2) null Adicionar ou excluir colunas: alter table nota_curso add dtexame smalldatetime alter table nota_curso drop dtexame; Adicionar ou excluir restries: alter table nota_curso drop constraint pk_nota_curso alter table nota_curso add constraint pk_nota_curso primary key (nrmatricula,cdcurso,dtexame)

Profa. Georgia Gomes

20123.1Pg. 25 de 38

Eliminao de Tabelas
Elimina a tabela. Se a tabela contiver dados, esses so perdidos. Caso haja um chave estrangeira apontando para a tabela, tem-se que, primeiramente, eliminar a chave estrangeira (alter table .. Drop ) S pode ser realizado por usurio com autorizao: owner, grupo sysadmin. drop table nometabela

Profa. Georgia Gomes

20123.1Pg. 26 de 38

Exerccio
1. Criar Tabelas
CARGO ( cdigo, descrio) DEPARTAMENTO ( cdigo, descrio, coordenador ) EMPREGADO (matricula, nome, salario, departamento, cargo ) PROJETO (cdigo, descrio, durao, departamento, coodenadorproj) PARTICIPACAO (cdigo_projeto, matricula, horas )

2. Acrescentar os atributos cpf e endereo na tabela empregado, e a foreign key da tabela departamento 3. Excluir a tabela participao

Profa. Georgia Gomes

20123.1Pg. 27 de 38

Exerccio
CARGO ( cdigo, descrio)

Create table Cargo (cdcargo int primary key, dscargo varchar(10))


OU

Create table Cargo (cdcargo int, dscargo varchar(10) constraint pk_cargo primary key (cdcargo))
Profa. Georgia Gomes 20123.1Pg. 28 de 38

Exerccio
DEPARTAMENTO ( cdigo, descrio, coordenador )

Create table Departamento (cddepartamento int primary key, dsdepartamento varchar(20), coorddepartamento int)

Profa. Georgia Gomes

20123.1Pg. 29 de 38

Exerccio
EMPREGADO (matricula, nome, salario, departamento, cargo ) Create table Empregado (nrmatricula int primary key, nmempregado varchar(30), vlsalario decimal(5,2), cddepartamento int, cdcargo int, constraint fk_empregado_departamento foreign key (cddepartamento) references departamento (cddepartamento), constraint fk_empregado_cargo foreign key (cdcargo) references cargo (cdcargo))

Profa. Georgia Gomes

20123.1Pg. 30 de 38

Exerccio
PROJETO (cdigo, descrio, durao, departamento, coodenadorproj)

Create table Projeto (cdprojeto int primary key, dsprojeto varchar(200), duracaoprojeto int, cddepartamento int, coordprojeto int, constraint fk_projeto_departamento foreign key (cddepartamento) references departamento (cddepartamento), constraint fk_projeto_empregado foreign key (coordprojeto) references empregado (nrmatricula))
Profa. Georgia Gomes 20123.1Pg. 31 de 38

Exerccio
PARTICIPACAO (cdigo_projeto, matricula, horas )

Create table Participacao (cdprojeto int, nrmatricula int, hrparticipacao time, constraint pk_participacao primary key (nrmatricula,cdprojeto), constraint fk_participacao_projeto foreign key (cdprojeto) references projeto (cdprojeto), constraint fk_participacao_empregado foreign key (nrmatricula) references empregado (nrmatricula))
Profa. Georgia Gomes 20123.1Pg. 32 de 38

Exerccio
2. Acrescentar os atributos cpf e endereo na tabela empregado e a foreign key da tabela departamento

alter table empregado add nrcpf int alter table empregado add endereco varchar(100) alter table departamento add constraint fk_departamento_empregado foreign key (coorddepartamento) references empregado (nrmatricula)
3. Excluir a tabela participao

Drop table participacao


Profa. Georgia Gomes 20123.1Pg. 33 de 38

Referncias
ELMASRI, Ramez.; NAVATHE, Shamkant B. Sistemas de banco de dados : fundamentos e aplicaes. 3. ed. So Paulo: LTC, c2002. 837 p. ISBN 852161313X
KORTH, Henry F.; SILBERSCHATZ, Abraham. Sistema de bancos de dados. 3. ed. So Paulo: Makron Books do Brasil, 1999 778 p. ISBN 8534610738

Profa. Georgia Gomes

20123.1Pg. 34 de 38

Potrebbero piacerti anche