Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Projeto fsico
(SQL)
Professor: Douglas Paulesky Juliani
converso
Modelagem de dados
Implementao do modelo
SQL
O que SQL ?
Structured Query Language (linguagem de consulta estruturada)
Liguagem para acesso, manipulao e estrututurao de banco de dados
Verses do SQL
Sistema R Base da linguagem SQL desenvolvido na dcada de 70 pela IBM Sql 86 primeira especificao desenvolvida a partir de um esforo conjunto do ISO e ANSI Sql 92 (sql 2) aperfeioamentos da primeira verso entre 1989 e 92 Sql 99 (sql 3) implementao de novos comandos e estruturas, incorporao de novo tipos de dados (complexos) Sql 2003 reviso do padro sql 3 e adicionado o tratamento de XML
Sub-linguagens SQL
Linguagem de definio de dados (DDL): Criao estruturas das tabelas, atributos e seus tipos, alterao e excluso das tabelas criadas Linguagem de controle de dados (DCL): Controlar os aspectos de autorizao de dados e licenas de usurios para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados Linguagem de manipulao de dados (DML): Incluir de dados nas tabelas; Desenvolver consultas simples; Desenvolver com a clusula WHERE; Atualizar dados nas tabelas; Excluso de linhas (registros) Linguagem de Consulta de Dados (DQL): Agrupar dados; Desenvolver funes agregadas; Realizar operaes artimticas; Aplicar funes; Eliminar repeties; Ordenar resultados; Desenvolver o conceito de junes; Implementar subconsultas;
Tipos em SQL
char(n). Cadeia de caracteres de comprimento fixo n. varchar(n). Cadeia de caracteres de comprimento varivel, com o mximo n especificado pelo utilizador. int. inteiro (um subconjunto finito dos inteiros, dependente da mquina). smallint. Inteiro pequeno (um subconjunto do tipo int). numeric(p,d). Nmero de vrgula fixa, com preciso de p dgitos e com n casas decimais. real, double precision. Nmeros de vrgula flutuante, com precio dependente da mquina. float(n). Nmero de vrgula flutuante, com um mnimo de preciso de n dgitos. Os valores nulos so permitidos em todos os tipos de dados. A declarao de um atributo como not null probe os valores nulos para esse atributo.
Exemplos (execute mais de uma vez a instruo abaixo): insert into estado (cod_estado,nome,uf) values (1,Santa Catarina',SC'); insert into estado values (1,Santa Catarina',SC');
create table estado (cod_estado int (5), nome varchar(50), uf char(2), primary key (cod_estado));
A declarao primary key num atributo garante automaticamente not null em verses posteriores ao SQL-92. Deve ser explicitado em SQL-89
Instruo Select
O comando select permite visualizar os dados contidos na tabela. select * from estado;
create table estado (cod_estado int (5) auto_increment, nome varchar(50), uf char(2), primary key (cod_estado));
O campo de auto-incremento deve ser primary key. Somente 1 campo de auto-incremento por tabela
Instruo Select
O comando select permite visualizar os dados contidos na tabela. select * from estado;
Excluindo as tabelas...
O comando drop table remove da base de dados toda a informao sobre a tabela.
drop table estado
As chaves primrias e estrangeiras podem ser especificadas na instruo SQL create table:
A clusula primary key da instruo create table inclui a lista de dos atributos que formam a chave primria. A clusula foreign key da instruo create table inclui a lista de atributos que constituem a chave estrangeira e o nome da tabela referenciada pela chave estrangeira. ATRAVS DA INTEGRIDADE REFERENCIAL QUE DEVEMOS ESTABELECER O RELACIONAMENO ENTRE AS TABELAS
create table estado (cod_estado int (5) auto_increment, nome varchar(50), uf char(2), primary key (cod_estado)); create table cidade (cod_cidade int (5) auto_increment, cod_estado int (5), nome varchar(50), primary key (cod_cidade) , foreign key (cod_estado) references estado (cod_estado) on delete restrict );
Excluindo as tabelas...
O comando drop table remove da base de dados toda a informao sobre a tabela.
drop table cidade; drop table estado;
EXCLUIREMOS AS TABELAS PARA REIMPLEMENT-LAS USANDO OPERAES EM CASTATA. ISSO PERMITIR DELETAR UM ESTADO MESMO TENDO CIDADES VINCULADAS A ELE !...
nome varchar(50), uf
create table cidade (cod_cidade int (5) auto_increment, cod_estado int (5), nome varchar(50), primary key (cod_cidade) , foreign key (cod_estado) references estado (cod_estado ) on delete cascade on update cascade);
Com as clusulas on delete cascade, se a remoo de um registro na tabela estado resulta na violao da restrio da integridade referencial, a remoo propaga-se em cascata para a tabela cidade, removendo o registro que referia o estado que tinha sido eliminado. Atualizaes/edies em cascata so semelhantes.
Valores nulos em atributos de chaves estrangeiras complicam a semntica de integridade referencial da SQL, devendo-se evitar recorrendo a not null
Se algum atributo de uma chave estrangeira nulo, o tuplo satisfaz automaticamente a restrio de integridade referencial!
Testando ao em cascata
Tente excluir o estado de SC. Use a seguinte instruo: delete from estado where cod_estado=1;
Observe o resultado !
DEFAULT [permite definir um valor padro para um atributo no momento da insero de um registro]
Create table aluno (matricula varchar(12), nome varchar(30), sexo char(1) DEFAULT M, primary key (matricula));
SET [set um objeto mysql do tipo string que armazena apenas valores pr-definidos na criao da tabela, valores diferentes daqueles pr-definidos so desconsiderados no momento da insero de um registro]
Create table aluno (matricula varchar(12), sexo SET (M,F), nome varchar(30), primary key (matricula));
Relembrando
Linguagem de manipulao de dados (DML): Incluir de dados nas tabelas; Desenvolver consultas simples; Desenvolver com a clusula WHERE; Atualizar dados nas tabelas; Excluso de linhas (registros)
Inserindo dados
Insert into TABELA (col1,col2,..) values (val_col1, val_col2,..); Insert into estado (nome,uf) values (Mato Grosso,MT); Insert into livro (codigo,titulo,valor,datalancamento) values (0012,SQL o livro,123,2004-04-28);
Alterando dados
update TABELA set col1=val_col1, col2=val_col1,.. WHERE (OPCIONAL) cod3=val;
Se o WHERE no for utilizado todos os registros da tabela sero alterados
update estado set nome=Paran,uf=PR; update livro set titulo=SQL NOSSo livro,valor=300 where codigo=0012;
Deletando dados
delete from TABELA WHERE (OPCIONAL) cod3=val;
Se o WHERE no for utilizado todos os registros da tabela sero excludos
Consultando dados
select col1,col2,.. from TABELA WHERE (OPCIONAL) cod3=val;
Se o WHERE no for utilizado todos os registros da tabela apresentados Para visualizar todos os atributos utilize *
Select * from estado; select titulo, valor from livro where codigo=0012;
Consultando dados
WHERE sempre seguido de uma expresso lgica, a qual pode conter operadores de comparao (>, <, =, >=, <=, <>), operadores lgicos (AND, OR e NOT), e predicados prprios da linguagem SQL: LIKE, IN, EXISTS,
Consultando dados
Consultando livros cujo valor menor que 100 reais
select titulo, valor from livro where valor < 100;
Consultando livros cujo valor menor que 100 reais e cujos ttulos terminam com a palavra livro
select titulo, valor from livro where valor < 100 and titulo like %livro;
Consultas - JUNES
Como consultar dados relacionados? Constantes em mais de uma tabela? Ex: Listar os todas as cidades do estado de santa catarina? select * from cidade, estado where cidade.cod_estado = estado.cod_estado and estado.nome=santa catarina;
Consultas - JUNES
Ex: Listar as UFs e suas respectivas cidades select estado.uf, cidade.nome from cidade, estado where cidade.cod_estado=estado.cod_estado ; OU select estado.uf, cidade.nome from cidade JOIN estado ON (cidade.cod_estado=estado.cod_estado) ;
EXEMPLO COMPLETO