ULTI RESUMOS AMBIENTES COMPUTACIONAIS ULTIRESUMOS.COM.BR _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Sistema Operacional Sistema Computacional = hardware + software Tipos de Software: Programas do sistema: gerenciam a operação do computador Programas de aplicação: programas de usuário Sistema Operacional: principal programa do sistema, que controla todos os recursos do computador (dispositivos físicos e funções de software). DEFINIÇÃO • É um programa de controle do computador. O Sistema Operacional é responsável por alocar recursos de hardware e escalonar tarefas. Ele também deve prover uma interface para o usuário - ele fornece ao usuário uma maneira de acesso aos recursos do computador. Sobell. • Um Sistema Operacional pode ser definido como um gerenciador dos recursos que compõem o computador (processador, memória, I/O, arquivos, etc). “Os problemas centrais que o Sistema Operacional deve resolver são o compartilhamento ordenado, a proteção dos recursos a serem usados pelas aplicações do usuário e o interfaceamento entre este e a máquina.” Stemmer. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais PRINCIPAIS ATRIBUTOS • Abstração de Hardware Máquina Virtual apresenta ao usuário uma máquina mais simples • S.O. é a porção de software que roda em modo kernel ou modo supervisor protege o hardware da ação direta do usuário • Estabelecer critérios de uso dos recursos e ordem de acesso aos mesmos, impedindo violação de espaço de memória de processos concorrentes e tentativas de acesso simultâneo a um mesmo recurso gerência e proteção dos dispositivos. Ferramentas IDE (ambiente integrado de desenvolvimento) Delphi O Delphi nada mais é que um simples IDE, IDE você já deve saber é um ambiente integrado para desenvolvimento composto por compilador, editor de texto, ferramenta de depuração e algumas frescurinhas a mais. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais O Delphi é RAD, isto é, a medida em que os componentes vão sendo selecionados, o Delphi escreve o código fonte para você. Os componentes em geral, incluem classes e propriedades muito utilizadas e que se relacionam com outros objetos. Tudo que nele existe foi pensando em velocidade de desenvolvimento. Possui um compilador extremamente rápido Possui um ambiente intuitivo e amigável de desenvolvimento Gera executável isolado (não há necessidade de distribuição de runtime) Possibilita entender sua biblioteca através de criação de novos componentes Possibilita a criação de DLLs (Dinamic Link Library) Possui um depurador de progama integrado (Integrated Debugger) Possibilita a criação de aplicações multi-threads Microsoft Visual Studio Express O Microsoft Visual Studio Express é um conjunto de ambientes de desenvolvimento integrados que incluem diversas linguagens de programação: Visual Basic Visual Web Developer Visual C# Visual C++ SQL Server Express DBdesigner Tela Principal do DBDesigner _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Na área de trabalho são inseridas as tabelas e seus respectivos relacionamentos. a paleta de Ferramentas contém os componentes mais utilizados na criação e manutenção das tabelas. A navegação permite o controle da visualização da área de trabalho possibilitando navegar no diagrama. Os tipos de dados mostram os tipos possíveis de dados e o db model apresenta as tabelas com seus campos e os relacionamentos com outras tabelas. Fragmento de modelo de dados de uma Locadora Para demonstrar as funcionalidades da DBdesigner, é apresentada a construção de um fragmento do modelo de dados de uma locadora, representando suas tabelas com atributos e relacionamentos, não tendo o objetivo de ser um exemplo completo e complexo. O fragmento é composto pelas tabelas categoria, filme, estrela, ator, dvd, locação e cliente, com seus relacionamentos. Inserindo as tabelas _____________________________________________________________________________ UltiResumos - Ambientes Computacionais A primeira etapa para construir o estudo de caso deste artigo é inserir as tabelas e seus atributos. O primeiro passo é criar a tabela curso. Deve-se inserir na área de trabalho uma tabela (ícone new table localizado na tools palette). Para definir as propriedades como nome da tabela e seus atributos, dentre outras características de uma tabela, deve-se clicar duas vezes sobre o objeto criado. Feito isto, uma janela para a alteração de propriedades da tabela é aberta. O DBdesigner é uma ferramenta para a construção de modelos de dados, fácil de usar, com um aprendizado relativamente rápido, e que proporciona uma boa produtividade na sua utilização. Tudo isto com a vantagem de ser uma ferramenta gratuita e com o código fonte aberto. A possibilidade de sincronismo entre o modelo e o banco é de grande importância para o sucesso desta ferramenta. Isso faz com que manutenções futuras no banco sejam feitas de maneira rápida e eficiente. E o fato de salvar e recuperar arquivos no padrão xml é importante para a possibilidade de comunicação entre diferentes ferramentas. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais MySQL O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface. É atualmente um dos bancos de dados mais populares, com mais de 10 milhões de instalações pelo mundo. Entre os usuários do banco de dados MySQL estão: NASA, Friendster, Banco Bradesco, Dataprev, HP, Nokia, Sony,Lufthansa, U.S. Army, U.S. Federal Reserve Bank, Associated Press, Alcatel, Slashdot, Cisco Systems, Google e outros Características Portabilidade (suporta praticamente qualquer plataforma atual) Compatibilidade (existem drivers ODBC,JBDC e .NET e módulos de interface para diversas linguagens de programação, como Delfhi, Java, C/C++, C#, Visual Basic Studio, Python, Perl,PHP, ASP e Ruby) Excelente desempenho e estabilidade Pouco exigente quanto a recursos de hardware Facilidade de uso _____________________________________________________________________________ UltiResumos - Ambientes Computacionais É um Software livre com base na GPL Contempla a utilização de vários Storage Engines como MyISAM, InnoDB, Falcon, BDB, Archive, Federated, CSV, Solid… Suporta controle transacional; Suporta Triggers; Suporta Cursors (Non-Scrollable e Non-Updatable); Suporta Stored Procedures e Functions; Replicação facilmente configurável; Interfaces gráficas (MySQL Toolkit) de fácil utilização cedidos pela MySQL Inc. Wamp Wamp é um completíssimo pacote de software que serve para instalar e configurar facilmente no seu sistema o famoso servidor Apache, juntamente com a linguagem de programação PHP e o servidor de base de dados MySQL. Tudo o que você precisa para montar uma base de dados web em uma única aplicação. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais BANCO DE DADOS É uma coleção de dados inter-relacionados, representando informações sobre um domínio específico Exemplos: Lista Telefônica Fichas do acervo de uma biblioteca Sistema de Banco de Dados Consiste em uma coleção de dados inter-relacionados e uma coleção de programas para prover o acesso a esses dados. O objetivo principal de um sistema de banco de dados é possibilitar um ambiente que seja adequado e eficiente para uso na recuperação armazenamento de informações. Sistemas de Gerenciamento de Banco de Dados (SGBD) Consistem em uma coleção de dados inter-relacionados e de um conjunto de programas para acessá-los Contém Informações sobre um empreendimento particular Coleção de Dado Banco de Dado Objetivo dos SGBD Prover um ambiente que seja conveniente e eficiente para recuperar e armazenar informações de Bancos de Dados Eliminar ou Reduzir Redundância e inconsistência de dados Dificuldade no acesso aos dados Isolamento dos dados Eliminar ou reduzir (Cont.) Anomalias de acesso concorrente Problemas de segurança Abstração de dados Simplifica a interação do usuário com o sistema _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Vantagens da utilização de Banco de Dados Rapidez na manipulação e no aceso a informação Redução do esforço humano (desenvolvimento e utilização) Disponibilização da informação no tempo necessário Controle integrado de informação distribuído fisicamente Redução de redundância e de inconsistência de informações Compartilhamento de dados Desvantagens da utilização de Banco de Dados Complexos, difíceis e demorados de projetar Custos iniciais de software e hardware altos Danos no banco de dados afetam virtualmente todos os programas Necessidade de segurança Custos altos para conversão de sistemas baseados em arquivos para banco de dados Treinamento inicial necessário aos programadores e usuários. Abstração de Dados A característica que permite a independência entre programa e dados e independência entre programa e operação. Um SGBD fornece aos usuários uma representação conceitual de dados que não inclui muitos detalhes relativo ao modo como os dados estão armazenados ou como operações são implementadas. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Modelagem de dados Principal objetivo: o desenvolvimento de um modelo que contenha entidades e relacionamentos, e com isso seja possível representar as especificações das informações do negócio. Ajuda a organizar a forma de pensamento sobre os dados, demonstrando o significado e a aplicação prática deles Deve fornecer ao desenvolvedor: Representar o ambiente Documentar e normalizar Fornecer processos de validação Observar processos de relacionamentos entre objeto Tipos de modelagem de dados Modelo conceitual: é a forma mais natural dos fatos e está mais próxima da realidade do ambiente do cliente.O cliente deverá ser envolvido a fim de obter o levantamento de dados que darão o suporte à construção do modelo. Construção do diagrama de dados chamado Diagrama de Entidade e relacionamento, no qual deverão ser identificados todas as entidades e relacionamentos entre elas. Modelo Lógico: Leva em conta algumas limitações e implementa recursos como adequação de padrão e nomenclatura. Define as chaves primárias e estrangeiras. Deve ser criado à partir do modelo conceitual. Modelo físico: Fazemos a modelagem física do modelo de bando de dados, levam-se em conta as limitações do SGBD. Descreve como os dados serão armazenados, estruturas complexas de baixo nível. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Entidade O conceito fundamental da abordagem ER é o conceito de entidade entidade = conjunto de objetos 1 da realidade modelada sobre os quais deseja-se manter informações no banco de dados Uma entidade representa, no modelo conceitual, um conjunto de objetos da realidade modelada. Como o objetivo de um modelo ER é modelar de forma abstrata um BD, interessam-nos somente os objetos sobre os quais deseja-se manter informações. Vejamos alguns exemplos. No sistema de informações industrial que usamos no Capítulo 1, alguns exemplos de entidades poderiam ser os produtos, os tipos de produtos, as vendas ou as compras. Já em um sistema de contas correntes, algumas entidades podem ser os clientes, as contas correntes, os cheques e as agências. Observe que uma entidade pode representar tanto objetos concretos da realidade (uma pessoa, um automóvel), quanto objetos abstratos s (um departamento, um endereço²). Em um DER, uma entidade é representada através de um retângulo que contém o nome da entidade. Pessoa Departamento Como dito acima, cada retângulo representa um conjunto de objetos sobre os quais deseja-se guardar informações. Assim, no exemplo, o primeiro retângulo designa o conjunto de todas as pessoas sobre as quais se deseja manter informações no banco de dados, enquanto o segundo retângulo designa o conjunto de todos departamentos sobre os quais se deseja manter informações. Caso seja necessário referir um objeto particular (uma determinada pessoa ou um determinado departamento) fala-se em ocorrência de entidade (alguns autores usam também o anglicismo “instância” de entidade). _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Atributos Toda entidade possui atributos, ou seja, características que informam sobre a entidade. A entidade Inquilino contém informações sobre Nome, Endereço, Cidade, Data de Nascimento de cada Inquilino, identificado entre os outros por uma chave primária, no caso pode ser um atributo Código. Tipos de atributos Atributo Simples Atributo Concatenado Chave Primária Chave Estrangeira Um único atributo representa uma característica Mais de um atributo representam uma característica Um atributo que é sempre único dentro de uma Entidade Atributo que se identifica com a chave primária em outra Entidade Exemplo: Rg do Inquilino Exemplo: Endereço (Logradouro, Número,Cidade, Cep, UF) Exemplo: CPF – atributo que não se repete entre os Inquilinos Exemplo: Codigo do Inquilino na Entidade Aluguel. Relacionamento Relacionamento é a interação entre os objetos que indicam a dinâmica dos negócios. Os Relacionamentos são identificados por verbos porque representam as ações que uma entidade exerce sobre outra. Como exemplo, O Inquilino aluga imóvel. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais MER – Sistema de Imobiliária Diagrama Entidade-Relacionamento (DER) O Diagrama Entidade-Relacionamento descreve toda estrutura lógica do banco de dados. É possível construí-lo a partir de um MER, identificando assim a partir de um conceito do mundo real como os dados serão armazenados de fato. O DER tem como ênfase os dados e os relacionamentos. Sua representação utiliza os símbolos: – Retângulos – representam as entidades; – Elipses – representam os atributos; – Losangos – representam os relacionamentos entre as entidades; – Linhas – unem os atributos aos conjuntos de entidades e os conjuntos de entidades aos conjuntos de relacionamentos; – Elipses duplas – atributos multivalorados. Na construção de um projeto de banco de dados é necessário saber quais são os objetos e os relacionamentos para elaborar o DER , ou seja, descobrir quais os atributos que compõem as tabelas (objetos). _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Atributo Composto Exemplo: Endereço. Seu conteúdo poderá ser dividido em vários outros atributos, como: Rua, Número, Complemento, Bairro, Cep e Cidade. Este tipo de atributo é chamado de atributo composto. Veremos mais de sua aplicação no post sobre normalização de dados. Funcionário (RG, Nome, Sexo, CIDADE, UF) RG UF SEXO Funcionário CIDADE Local NOME Atributos Multivalorados Criamos uma nova relação R que inclui o atributo multivalorado A mais a chave primária K da relação que representa a entidade (ou relacionamento) que tem A como atributo A chave primária de R é a combinação de A e K Se o atributo multivalorado é composto => incluir seus componentes atômicos RG Nome Sexo Funcionários _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Fone Funcionário (RG, Sexo, Nome) Telefones_func (RG, Fone) Atributos Derivados Resumo Representações de Atributos _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Atributos de Conjunto de Relacionamentos Exemplos de diagramas ER exceto atributo _____________________________________________________________________________ UltiResumos - Ambientes Computacionais MER – entidade fracas _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Cardinalidade A cardinalidade é um conceito importante para ajudar a definir o relacionamento, ela define o número de ocorrências em um relacionamento. Para determinar a cardinalidade, deve-se fazer a pergunta relativa ao relacionamento em ambas as direções. Um departamento possui quantos empregados? - no mínimo 1 e no máximo N. Um empregado está alocado em quantos departamentos? - no mínimo em 1 e no máximo em 1 Somando-se as cardinalidades, definimos o resultado final do relacionamento, ou seja, 1:N Tipos de relacionamento Existem três tipos de relacionamento entre entidades: um-para-um um-para-muitos muitos-para-muitos Relacionamento um-para-um O relacionamento um-para-um é usado quando uma entidade A se relaciona com uma entidade B e vice-versa. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Este relacionamento é representado pelo sinal: 1:1 Relacionamento um-para-muitos O relacionamento um-para-muitos é usado quando uma entidade A pode se relacionar com uma ou mais entidades B. Este relacionamento é representado pelo sinal: 1:N Relacionamento muitos-para-muitos O relacionamento muitos-para-muitos é usado quando várias entidades A se relacionam com várias entidades B. Este relacionamento é representado pelo sinal: N:N ou N:M _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Definições e Tipos de dados Numéricos: Existem tipos de dados numéricos, que se podem dividir em dois grandes grupos, os que estão em vírgula flutuante (com decimais) e os que não. TinyInt: é um número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -128 até 127. Sem signo, a margem de valores é de 0 até 255. Bit ou Bool: um número inteiro que pode ser 0 ou 1. SmallInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -32768 até 32767. Sem signo, a margem de valores é de 0 até 65535. MediumInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -8.388.608 até 8.388.607. Sem signo, a margem de valores é de 0 até 16777215. BigInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -9.223.372.036.854.775.808 até 9.223.372.036.854.775.807. Sem signo, a margem de valores é de 0 até 18.446.744.073.709.551.615. Float: número pequeno em vírgula flutuante de precisão simples. Os valores válidos vão desde -3.402823466E+38 até -1.175494351E-38,0 eté desde 175494351E-38 até 3.402823466E+38. xReal, Double: número em vírgula flutuante de dupla precisão. Os valores permitidos vão desde -1.7976931348623157E+308 até 2.2250738585072014E-308, 0 e desde 2.2250738585072014E-308 até 1.7976931348623157E+308. Decimal, Dec, Numeric: Número em vírgula flutuante desempacotado. O número armazena-se como uma cadeia. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Tipo Data: Na hora de armazenar datas, há que ter em conta que MySQL não verifica de uma maneira estricta se uma data é válida ou não. Simplesmente comprova que o mês está compreendido entre 0 e 12 e que o dia está compreendido entre 0 e 31. Date: tipo data, armazena uma data. A margem de valores vai desde o 1 de Janeiro de 1001 ao 31 de dezembro de 9999. O formato de armazenamento é de ano-mes-dia. DateTime: Combinação de data e hora. A margem de valores vai desde o 1 ed Janeiro de 1001 às 0 horas, 0 minutos e 0 segundos ao 31 de Dezembro de 9999 às 23 horas, 59 minutos e 59 segundos. O formato de armazenamento é de ano-mes-dia horas:minutos:segundos TimeStamp: Combinação de data e hora. A margem vai desde o 1 de Janeiro de 1970 ao ano 2037. O formato de armazenamento depende do tamanho do campo: _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Time: armazena uma hora. A margem de horas vai desde -838 horas, 59 minutos e 59 segundos. O formato de armazenamento é 'HH:MM:SS'. Year: armazena um ano. A margem de valores permitidos vai desde o ano 1901 ao ano 2155. O campo pode ter tamanho dois ou tamanho 4 dependendo de se queremos armazenar o ano com dois ou quatro algarismos. Tipos de cadeia: Char(n): armazena uma cadeia de longitude fixa. A cadeia poderá conter desde 0 até 255 caracteres. VarChar(n): armazena uma cadeia de longitude variável. A cadeia poderá conter desde 0 até 255 caracteres. Dentro dos tipos de cadeia pode-se distinguir dois subtipos, os tipo Test e os tipo Blob (Binary Large Object) A diferença entre um tipo e outro é o tratamento que recebem na hora de ordenálos e compará-los. No tipo test ordena-se sem ter importância as maiúsculas e as minúsculas e no tipo blob ordena-se tendo em conta as maiúsculas e minúsculas. Diferença de armazenamento entre os tipos Char e VarChar _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Descrição de tabelas E descrita em um quadro toda a estrutura da tabela a ser criada, especificando todos os seus campos, o tipo de cada campo e o tamanho adotado para cada campo, e uma observação descrevendo o campo da tabela. A Linguagem de Definição de Dados (SQL-DDL) A Linguagem de Definição de Dados da SQL (SQL-DDL) é um conjunto específico de instruções SQL que fornece meios para a definição e modificação de esquemas de relação, remoção de relações e criação de índices. Criando tabelas Uma tabela (ou relação) SQL é definida usando o comando create table: create table r (A1 D1, A2 D2,...,An Dn) onde r é o nome da relação, Ai é o nome de um atributo no esquema da relação r e Di é o tipo do atributo Ai. create table cliente ( nome char(30), sexo char(1), CPF number(11), endereco char(30), cidade char(30) ); Uma relação é criada inicialmente vazia. O comando insert pode ser usado para carregar os dados para a relação. Removendo uma Tabela Para remover uma relação de um banco de dados SQL, usa-se o comando drop table. O comando drop table remove todas as informações sobre a relação. O comando drop table r onde r é o nome de uma relação (tabela) existente. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Alterando uma Tabela O comando alter table é usado para adicionar, excluir ou alterar atributos em uma relação existente. Para inserir um novo atributo em uma tabela é usada a cláusula add. Todas as tuplas na relação são assinaladas como null para o valor do novo atributo. alter table r add ( A1 D1, A2 D2, ... ) onde r é o nome de uma relação existente e A1 D1, A2 D2, ... é uma lista contendo nome do atributo (A) a ser adicionado e o tipo do atributo (D), respectivamente. Para excluir colunas de uma tabela utiliza-se a cláusula drop. drop A1, A2, ... onde r é o nome de uma relação existente e A1, A2, ... é uma lista dos atributos a serem removidos. Para alterar o nome de um atributo de uma tabela utiliza-se a cláusula rename. alter table r rename A N/A onde r é o nome de uma relação existente, A é o nome do atributo a ter o seu nome alterado para NA . Para alterar o tipo de um atributo utiliza-se a cláusula modify. alter table r modify A1 D1, A2 D2, ... onde r é o nome de uma relação existente, A1 D1, A2 D2,... é uma lista contendo o nome do atributo (An) a terá o seu tipo alterado para (Dn). Restrições de Integridade Evitando valores nulos É muito comum definirmos atributos que não podem conter valores nulos. Isto é, o seu preenchimento é obrigatório para que se mantenha a integridade dos dados no sistema. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Para evitar que em algum momento uma coluna de uma tabela possa conter valor nulo (ou não conter valor algum) deve-se utilizar a cláusula NOT NULL após a definição da coluna. Exemplo: create table cliente ( nome char(30) NOT NULL, sexo char(1), CPF number(11), endereco char(40), cidade char(20) ) No exemplo acima, a atribuição de um valor à coluna nome é obrigatório. Caso o usuário se esqueça de preenche-lo, o SGBD apresentará uma mensagem de erro. Mostrar campos de uma tabela Para mostrar os campos de uma tabela, basta usar o comando DESC <TABELA>. Chave Primária A função da chave primária é identificar univocamente uma linha da tabela. Cada tabela deve possuir uma chave primária. Quando se define um atributo como chave primaria, fica impl ícito as cláusulas UNIQUE e NOT NULL para este atributo, não sendo necessária a especificação destas. create table cliente ( codigo number(5) primary key, nome char(30) not null, sexo char(1) , CPF number(11) UNIQUE, endereco char(40), cidade char(20) DEFAULT ‘Maceio’ ) Opcionalmente pode-se definir a chave primária após a especificação de todos os atributos da tabela. Linguagem de Manipulação de Dados A principal estrutura da SQL DML consiste em três cláusulas: select, from e where. select A1, A2, A3, ..., An from r1, r2, ..., rm where P onde Ai representa um atributo r1 é uma tabela _____________________________________________________________________________ UltiResumos - Ambientes Computacionais P é um predicado (condição/critério de seleção). select Fcodigo, status from Fornecedor where cidade = ‘Paris’ A condição (ou predicado) que segue where pode incluir operadores de comparação =, <> (diferente), >, >=, < e <=; os operadores booleanos AND, OR e NOT. Select Fcodigo, nome from Fornecedor where cidade = ‘Paris’ and status > 20 Fcodigo nome 3 Blake A lista A1, A2, ..., An de atributos pode ser substituída por um asterisco (*) para selecionar todos os atributos de todas as relações presentes na cláusula from. select * from Fornecedor O resultado da consulta acima será uma cópia da relação Fornecedor. O resultado de uma consulta SQL é uma relação. select status from Fornecedor Linguagens de consultas formais são baseadas em noções matemáticas de relação. Assim, nunca deveriam aparecem tuplas duplicadas nas relações. Na prática, a eliminação de duplicação é uma relativa perda de tempo. Todavia, a SQL permite duplicações em relações. Nos casos em que queremos forçar a eliminação de duplicações, inserimos a palavra distinct depois de select. select distinct status from Fornecedor comandos Outer Joins com mais de duas tabelas O funcionamento é o mesmo. O cruzamento será feito na seqüência em que você lista as tabelas na sua consulta. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Consulta: SELECT p.nome, e.nome, l.nome FROM programadores p INNER JOIN empresas e ON p.id_empresa = e.id_empresa INNER JOIN programadores_linguagens pl ON pl.id_programador = p.id_programador INNER JOIN linguagens l ON l.id_linguagens = pl.id_linguagens Como eu quero os programadores e o nome da empresa em que trabalha fiz uma junção entre as duas tabelas: > programadores p INNER JOIN empresas e ON p.id_empresa = e.id_empresa Em seguida, fiz uma junção para saber quais a linguagens que o programador está vinculado: > INNER JOIN programadores_linguagens pl ON pl.id_programador = p.id_programador Finalmente, como preciso do nome das linguagens de programação, vinculei também a tabela linguagens: > INNER JOIN linguagens l ON l.id_linguagens = pl.id_linguagens Resultado: _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Repare que os programadores Gabriel e Pinter não aparecem no resultado, isso acontece por que, ao fazer a junção com a tabela programadores_linguagens eu utilizei a junção INNER JOIN, neste caso, faço com que o programador obrigatoriamente esteja relacionado à pelo menos uma linguagem de programação. Como resolver? Simples basta trocar o INNER JOIN por LEFT JOIN, ou seja, estou dizendo que quero todos os programadores independente se eles estão ou não relacionados a uma linguagem de programação Mas o que irá aparecer no campo nome da programação no resultado da consulta? O retorno será NULL. Veja: SELECT p.nome, e.nome, l.nome FROM programadores p INNER JOIN empresas e ON p.id_empresa = e.id_empresa LEFT JOIN programadores_linguagens pl ON pl.id_programador = p.id_programador LEFT JOIN linguagens l ON l.id_linguagens = pl.id_linguagens Resultado: _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Em ambos os resultados, eu (Paulinha) fui listada duas vezes, isso ocorre por que eu estou vinculada a duas linguagens de programação. É possível eliminar essa repetição usando os comandos GROUP BY e GROUP_CONCAT. SELECT p.nome, e.nome,GROUP_CONCAT(l.nome) FROM programadores p INNER JOIN empresas e ON p.id_empresa = e.id_empresa LEFT JOIN programadores_linguagens pl ON pl.id_programador = p.id_programador LEFT JOIN linguagens l ON l.id_linguagens = pl.id_linguagens GROUP BY p.id_programador HAVING Consulta para listar todos os e-mails duplicados em uma tabela, mas serve para qualquer coluna. SELECT _____________________________________________________________________________ UltiResumos - Ambientes Computacionais email FROM tabela GROUP BY email HAVING count(email) > 1 ORDER BY email DISTINCT Palavra chave que elimina valores duplicados na saída. Ex.: SELECT DISTINCT estado_cli FROM clientes; Estado_cli MG RJ SP LIMIT O comando LIMIT é quase que obrigatório para sistemas que possuem grandes bases de informações. Pois você precisa limitar a quantidade de resultados ao fazer uma consulta no banco. SELECT * FROM nome_da_tabela LIMIT 50 COUNT Estabelece um limite de registros a serem mostrados no resultado de sua consulta. Ex.: SELECT COUNT(*) FROM Clientes; _____________________________________________________________________________ UltiResumos - Ambientes Computacionais COUNT(*) 10 Sum Este comando calcula a somatória de todos os valores de uma coluna Ex: select sum(cli_salario) as valor_total from clientes; select sum(cli_salario) as valor_total from clientes where cli_sexo = 'F'; min Esta função sql retorna o valor mínimo encontrado em uma coluna Ex: select min(cli_salario) as valor_minimo from clientes; select min(cli_salario) as salario_minimo from clientes where cli_codigo in(1,3) max Esta função sql retorna o valor máximo encontrado em uma coluna Ex: select max(cli_salario) as valor_minimo from clientes; select max(cli_salario) as salario_minimo from clientes where cli_codigo in(1,3) avg Este comando calcula o valor médio de uma determinada coluna Ex: select avg(cli_salario) as media_salarial from clientes; ABS(X) Retorna o valor absoluto de determinado valor ou coluna de valores. Ex: select nome _cli, ABS(valor_cli) FROM clientes WHERE valor_cli < 0; ROUND(X,D) Arredonda um valor para o inteiro mais próximo, Pode ser passado como argumento o numero de casas decimal. _____________________________________________________________________________ UltiResumos - Ambientes Computacionais Ex: select nome_cli, ROUND(valor_ped,2) FROM clients JOIN pedidos ON cod_cli = cod_cli_ped WHERE valor_ped > 100; TRUNCATE(X,D) Retorna o número X, truncado para D casas decimais. Se D é 0, o resultado não terá ponto decimal ou parte fracionária: Ex: select nome_cli, truncate(valor_ped,1) from clientes join pedidos on cod_cli = cod_cli_ped where valor_ped > 100 order by nome_cli; _____________________________________________________________________________ UltiResumos - Ambientes Computacionais