Академический Документы
Профессиональный Документы
Культура Документы
20123.1Pg. 1 de 38
Introduo
SQL
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)
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
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
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
20123.1Pg. 6 de 38
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
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.
20123.1Pg. 9 de 38
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
20123.1Pg. 11 de 38
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
Matricul a
Nome
curso BD CA
Utilizado quando CP composta !!!!
RED BD
20123.1Pg. 14 de 38
Aluno
Matricul a
2
Profa. Georgia Gomes
Nome
Curso BD
CA
20123.1Pg. 15 de 38
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))
20123.1Pg. 16 de 38
Endereo
Rua 1, 102 Rua 2, 202 Rua 3, 250 Rua 4,401
Curso Curso BD CA
RED
1 2 3 4
PK composta
Matricula
1 1 2
BD CA BD
20123.1Pg. 17 de 38
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
Nota Curso
Curso
Matricula
Prova
BD BD BD
Profa. Georgia Gomes
1 1 2
P1 P2 P1
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))
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
20123.1Pg. 21 de 38
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
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}
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))
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)
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
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
20123.1Pg. 27 de 38
Exerccio
CARGO ( cdigo, descrio)
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)
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))
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
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
20123.1Pg. 34 de 38