INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf ·...

29
INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL Prof. C ´ elio Guimar ˜ aes IC - Unicamp Marc ¸o 2003

Transcript of INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf ·...

Page 1: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

INF 314Projeto de Bases de Dados

Relacionais e Linguagem SQL

Prof. Celio Guimaraes

IC - UnicampMarco 2003

Page 2: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL A linguagem SQL

�� �� �� ���� �� �� �� �� �� �� �� �� � � �� �� �� ���� �� �� �� �� � � �� � � �� � � �� �� �� ���� �� �� �� �� � � �� � � �� � � �� �� �� ���� �� �� �� �� � � �� � � �� � �

Modelo Relacional: Codd, 1970, definiu 2meta-linguagens:

� Algebra Relacional

� Calculo Relacional de Tuplas

� implementam os conceitos basicos domodelo.

� grande influencia no desenvolvimento deprototipos do Modelo Relacional

© Célio Cardoso GuimarãesUNICAMP

Page 3: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Historico

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

SQL (“Structured Query Language):

� linguagem de Definicao e Manipulacao dedados relacionais

� 1973: SEQUEL - IBM Research Center NY

� SEQUEL/2 - Sistema R - IBM San Jose

� 1983: SQL/DS - IBM

� 1986 - hoje: padronizada pelos comitesISO/ANSI.

– 1992: SQL2

– 1999: SQL:1999 (antes SQL3)

© Célio Cardoso GuimarãesUNICAMP

Page 4: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL SGBDs Relacionais

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

� Oracle

� IBM DB2

� SQL Server (MS)

� Postgres (OpenSource)

� MySql (Open Source)

� Firebird (Open Source)

� SAP DB (Open SOurce - antigo ADABAS)

© Célio Cardoso GuimarãesUNICAMP

Page 5: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL SQL:1999

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

Facilidades marcantes:

� consultas recursivas

� “triggers”

� tabelas aninhadas

� orientacao a objetos:

– “tipos abstratos de dados”

– “metodos”definidos pelo usuario

© Célio Cardoso GuimarãesUNICAMP

Page 6: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Programacao em SQL

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

Duas formas principais:

� “SQL direto”ou interativo.

– util para ensino

– tarefas administrativas:criacao, alteracao de tabelas, criacao deusuarios, testes

� “SQL embutido” (embedded SQL)

– embutido via biblioteca em linguagem de3a geracao: Delphi, VB, Cem aplicacoes para Web: Java, Php, Perl,Python

© Célio Cardoso GuimarãesUNICAMP

Page 7: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Caracterısticas Basicas

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

C, Pascal, Java: linguagens algoritmicas

SQL: linguagem “nao procedural” ou “naoalgoritmica”

a sintaxe da linguagem especifica:

� “que resultados se deseja obter”

� e nao: “sequencia de instrucoes para obterresultados”

© Célio Cardoso GuimarãesUNICAMP

Page 8: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Recursos Basicos

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

� “ Definicao de Dados”(DDL):permite especificar esquemas de tabelas

� “ Manipulacao de Dados”(DML):permite modificar e recuperar dados.

� Concessao, revogacao de privilegios deacesso a tabelas por parte de usuarios

� Suporte a “transacoes atomicas”

© Célio Cardoso GuimarãesUNICAMP

Page 9: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL O ambiente de um SGBD relacional

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

� uma ou mais instancias do (programa)SGBD: agente Servidor SQL,

� programas de comunicacao com agentesclientes

� agentes clientes se conectam local ouremotamente ao agente Servidor SQL

� uma ou mais Bases de Dados controladaspelo agente Servidor SQL

� uma colecao de usuarios cadastrados e deprogramas com acesso ao SGBD e as suasBases de Dados.

© Célio Cardoso GuimarãesUNICAMP

Page 10: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Composicao de uma Base de Dados

�� �� �� ���� �� �� �� �� �� �� �� �� � � �� �� �� ���� �� �� �� �� � � �� � � �� � � �� �� �� ���� �� �� �� �� � � �� � � �� � � �� �� �� ���� �� �� �� �� � � �� � � �� � �Base de Dados SQL = catalogo contendo umou mais SQL-schemas.

SQL-schema= colecao de descritores deobjetos criados por um usuario (tabelas,visoes, restricoes, ındices, etc).

Exemplo: catalogo mydbase, usuario scott,tabela mytable:

mydbase.scott.mytable

Information Schema ou Catalogo do Sistema:

tabelas SQL que descrevem todos os objetosdefinidos nos SQL-schemas desse catalogo

.

© Célio Cardoso GuimarãesUNICAMP

Page 11: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Conexao a um SGBD

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

connect nome-servidor e/ou nome-base-dados[as nome-conexao] nome-usuario [senha]

� primeira cadeia pode ser endereco DNS doServidor SQL remoto

� Oracle: endereco DNS do Servidor remotoe um alias no arquivo tnsnames.ora doagente cliente,

� usuario usa o alias no comando connect

� connect inicia uma sessao SQL para ousuario.

© Célio Cardoso GuimarãesUNICAMP

Page 12: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Tipos de dados

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

� CHAR(n) cadeia com n caracteres,

� VARCHAR(n) cadeia com ate n caracteres,

� BIT(n) cadeia com exatamente n bits,

� VARBIT(n) cadeia com ate n bits,

� INT inteiro com sinal (precisao usualmente32 bits)

� SMALLINT inteiro com sinal (precisao variacom implementacao)

© Célio Cardoso GuimarãesUNICAMP

Page 13: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Tipos de dados (cont)

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

� NUMERIC(p,q) decimal com p dıgitos, sinal,ponto decimal com q dıgitos a partir dadireita.

� DECIMAL(p,q) precisao pode ser maior quep dıgitos.

� FLOAT ponto flutuante (precisao dependeda implementacao)

© Célio Cardoso GuimarãesUNICAMP

Page 14: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Constantes (ou literais)

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

� cadeia de caracteres: ’Rua do Cabral 1500’(sensıvel a maiusculas/minusculas),

� constantes numericas: 4, -95.7, +364.5,+36.5E-5,

� cadeia de bits: B’11001100’, B’0101’,X’0D0A’, X’ffaa’ (binarios e hexadecimais)

� datas e horas: DATE ’1999-12-25’ , TIME’18:45:00’ , TIMESTAMP ’1999-12-2518:45:00’.

© Célio Cardoso GuimarãesUNICAMP

Page 15: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL

Operadores aritmeticos, decomparacao, concatenacao

�� � � �� � ��� �� �� �� �� �� �� �� �� �� �� �� �� � ��� �� �� �� �� �� �� �� �� �� �� �� �� � ��� �� �� �� �� �� �� �� �� �� �� �� �� � ��� �� �� �� �� �� �� �� �� ��

“+”, “-”, “*” e “/”, com o significado usual

� � �� � � � � � � � � � � � � � �

� � � � � � � �� � �

, com o significadousual

concatenador de cadeias:

’Pedro Alvares’

’Cabral’

© Célio Cardoso GuimarãesUNICAMP

Page 16: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Identificadores, palavras reservadas

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

� Nomes definidos pelo usuario e palavrasreservadas nao sao sensıveis a maiusculase minusculas.

� Nos exemplos daremos preferencia ao usode minusculas

� Identificador: comeca por letra seguida(qualquer ordem) de outras letras, dıgitosou do caracter ( maximo 128

© Célio Cardoso GuimarãesUNICAMP

Page 17: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Comandos para definicao de dados

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

� CREATE TABLE: define o esquema de umatabela

� ALTER TABLE: altera o esquema de umatabela

� DROP TABLE: remove uma tabela da BD

© Célio Cardoso GuimarãesUNICAMP

Page 18: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Comandos para definicao de dados

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

Esquemas das tabelas da BD “Torneios deTenis da ATP”:

� Jogadores(numj, nome, pnome, pais, ano n,ano p, cid n, cid res, tit s, tit d, vits, derrs,natp)

� Lista Torneios(numt, nomet, pais, cat,quadra, nparts)

� Torneios(numt, ano, numj, premio)

© Célio Cardoso GuimarãesUNICAMP

Page 19: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Definicao das Tabelas

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

Create Table Jogadores(numj numeric(4) not null,nome varchar(16) unique not null,pnome varchar(16) not null,pais char(3) not null,ano n numeric(4) not null,ano p numeric(4) not null,cid n varchar(16) not null,cid res varchar(16) not null,tit s numeric(4),tit d numeric(4) default 0,vits numeric(4),derrs numeric(4),natp numeric(4) unique,primary key(numj))

© Célio Cardoso GuimarãesUNICAMP

Page 20: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Definicao das Tabelas (cont)

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

Create Table Lista torneios(numt numeric(2), not null,nomet varchar(24) not null,pais char(3) not null,cat char(2) not null,quadra char(1) not null,nparts numeric(4), not null,primary key(numt))

© Célio Cardoso GuimarãesUNICAMP

Page 21: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Definicao das Tabelas (cont)

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

Create Table Torneios(numt numeric(2) not null,ano numeric(4) not null,numj numeric(4) not null,premio numeric(4) not null,primary key(numt,ano),foreign key(numt) references Lista torneios(numt),foreign key(numj) references Jogadores(numj))

© Célio Cardoso GuimarãesUNICAMP

Page 22: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Comandos para Dominios

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

create domain, alter domain, drop domain:

nem todos os SGBDs implementam.

Exemplo:

create domain pais default char(3) default’EUA’

no comando create table jogadores anterior, alinha pais char(3) not null, poderia sersubstituıda por:

pais pais default,

© Célio Cardoso GuimarãesUNICAMP

Page 23: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Insercao de linhas numa tabela

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

Exemplos:

insert into jogadores

values(817, ’Courier’, ’Jim’, ’EUA’, 70, 78,’Sanford’, ’Orlando’, 23, 6, 506, 237, NULL)

insert into Lista torneios

values(1, ’Australian Open’, ’AUS’, ’GS’, ’D’,128)

insert into torneios

values(1, 1992, 817, 278)

© Célio Cardoso GuimarãesUNICAMP

Page 24: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Tabela Jogadores

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

numj nome pnome pais ano n ano p cid n cid res817 Courier Jim EUA 70 78 Sanford Orlando29 Agassi Andre EUA 70 86 Las Vegas Las Vegas19 Edberg Stefan SWE 66 83 Vastervik Londres16 Bruguera Sergi ESP 71 88 Barcelna Barcelona

812 Sampras Pete EUA 71 88 Washington Los Angeles102 Muster Thomas AUT 67 85 Leibnitz Monte Carlo

1122 Becker Boris GER 67 84 Leimen Monte Carlo218 Kafelnikov Yevgeny RUS 74 92 Sochi Sochi126 Krajicek Richard HOL 71 89 Rotterdham Monte Carlo910 Kuerten Gustavo BRA 76 95 Florianopolis Florianopolis

1228 Rafter Patrick AUS 72 91 Mount Isa Bermuda123 Korda Petr CHE 68 87 Praga Monte Carlo827 Moya Carlos ESP 76 95 Palma Maiorca Genebra127 Safin Marat RUS 80 97 Moscou Monte Carlo913 Ivanisevic Goran CRO 71 88 Split Monte Carlo324 Johansson Thomas SWE 75 94 Linkoping Monte Carlo625 Costa Albert ESP 75 93 Lerida Barcelona224 Hewitt Lleyton AUS 81 98 Adelaide Adelaide56 Sa Andre BRA 77 96 Belo Horizonte Belo Horizonte

412 Meligeni Fernando BRA 71 90 Buenos Aires Sao Paulo

© Célio Cardoso GuimarãesUNICAMP

Page 25: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Tabela Lista Torneios

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

Lista Torneiosnumt nomet pais cat quadra nparts1 Australian Open AUS GS D 1282 Roland Garros FRA GS S 1283 Wimbledon ING GS G 1284 U.S. Open EUA GS D 1285 Indian Wells EUA MS D 646 Miami EUA MS D 967 Monte Carlo Open MON MS S 648 Roma ITA MS S 649 Hamburgo GER MS S 6410 Toronto CAN MS D 6411 Cincinati EUA MS D 6412 Madri ESP MS T 6413 Paris Open FRA MS T 6414 Tennis Masters Cup 2002 CHN MS D 8

© Célio Cardoso GuimarãesUNICAMP

Page 26: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Tabela Torneios

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

As quatro primeiras linhas da tabela Torneiostem o formato:

Torneios1 1992 817 2782 1992 817 4903 1992 29 5014 1992 19 500... ... ... ...

© Célio Cardoso GuimarãesUNICAMP

Page 27: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Tabela Torneios condensada

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

TorneiosAno Aus Open premio French Open premio

1905 KUS$ 1925 KUS$1992 Courier 278 Courier 4901993 Courier 275 Bruguera 5371994 Sampras 340 Bruguera 5271995 Agassi 341 Muster 6371996 Becker 410 Kafelnikov 6401997 Sampras 457 Kuerten 6441998 Korda 407 Moya 6491999 Kafelnikov 459 Agassi 6682000 Agassi 501 Kuerten 5902001 Agassi 462 Kuerten 5942002 Johansson 520 Costa 718

© Célio Cardoso GuimarãesUNICAMP

Page 28: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Comando Alter Table

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

Exemplos:

Alter Table Torneios add column num vicenumeric(4) default 0

Se quisermos adicionar uma restricao deintegridade poderıamos fazer:

Alter Table Lista Torneios add constraint c1check(cat in (’GS’, ’MS’, ’IS’))

Se agora quisermos remover essa restricao:

Alter Table Lista Torneios drop constraint c1

Para remover uma coluna:

Alter Table Lista Torneios drop columnnum vice© Célio Cardoso Guimarães

UNICAMP

Page 29: INF 314 Projeto de Bases de Dados Relacionais e Linguagem SQL …celio/inf314/slides/6.0.pdf · Fundamentos de bancos de dados Célio Cardoso Guimarães Modelagem, projeto e linguagem

Fundamentos debancos de dados

Célio Cardoso Guimarães

Modelagem, projeto e linguagem SQL Guia para nomes de tabelas, colunas

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

� use nomes para tabelas no plural

� e conveniente um atributo que e ChaveEstrangeira ter o mesmo nome da ChavePrimaria referenciada,

� pois e muito comum usa-lo em juncoes

Exemplo: tabela Torneios

� vencedor recebeu o nome numj

� coluna para torneio recebeu o nome numt

� com frequencia faremos a juncao deTorneios com Jogadores e Lista Torneios,nessas colunas.

© Célio Cardoso GuimarãesUNICAMP