Você está na página 1de 6

SQL = Structured Query Language (Linguagem de Consulta Estruturada) Dialetos SQL: 1986 SQL ANSI (1 Padronizao) 1987 SQL

SQL ISO 1992 SQL-92 1999 SQL-1999 Incluso de Expresses Regulares, Queries Recursivas e Triggers 2003 SQL-2003 XML e Seqncias Sub-Diviso do SQL: DDL = Linguagem de Definio de Dados o Create ESTRUTURA (Criar) o Alter ESTRUTURA (Alterar) o Drop ESTRUTURA (Apagar) o ESTRUTURAS: Database Create database ... ou (no PostegreSQL) Createdb ... Use database; Table Alter Table modify ... (p/ o MySQL) Alter Table alter column type (no Postegre Altera o Tipo de dado) Alter Table ... rename column ... to ... (no Postegre Renomeia uma coluna) Index (ndice) Create index NOME on TABELA Generator Trigger (Gatilho) Domain (Tipo de Dado Personalizado) User (usurio) Role (Regras de Login) Sequence View (viso) Function (Funo) DML = Linguagem de Manipulao de Dados o Insert into TABELA values ... o Update TABELA set CAMPO = VALOR where ... o Delete from TABELA where ... o Truncate NOME DA TABELA (a mesma funo de Delete) o Describe NOME DA TABELA (visualiza a estrutura de uma Tabela) DQL = Linguagem de Consulta de Dados o Select CAMPOS from TABELA where ... o Filtro de Seleo: Where < Condio > DCL = Linguagem de Controle de Dados o Grant (Habilita Acesso) Grant AO on ESTRUTURA to USURIO; o Revoke (Revoga Acesso) Revoke AO on ESTRUTURA from USURIO; o AES: All ; Select ; Insert ; Update ; Delete ; Create ; Alter ; Drop o ESTRUTURAS: Database ; Table ; Index ; User ; View ; Sequence DTL = Linguagem de Transao de Dados o Start Transaction (inicia uma Transao) o Commit (Finaliza a Transao) o Rollback (Anula a Transao) Chave Primria (Primary Key ou PK) Coluna contendo valores nicos (que no podem se repetir) para evitar a redundncia de dados.

Podem ser Simples (apenas 1 coluna: ex. cdigo do cliente) ou Composta (mais de uma coluna, formando uma combinao nica). Chave Estrangeira (Foreign Key ou FK) Coluna de uma tabela que armazena o valor da chave primria de outra tabela indicando que existe um relacionamento entre as tabelas, favorecendo assim a integridade dos dados. Tipos de Relacionamentos: 1 : 1 Cada linha de uma tabela se relaciona com apenas 1 linha de outra tabela. 1 : n Cada linha de uma tabela se relaciona com 1 ou mais linhas de outra tabela, porm no sentido contrrio esse tipo de relacionamento 1:1. n : n Cada linha de uma tabela pode se relacionar com mais de uma linha de outra tabela em ambos os sentidos do relacionamento. Normalizao de Dados: Evita as Anomalias de Dados o Anomalia de Insero impede a incluso de registros devido falta de dados o Anomalia de Excluso impede a excluso de registros devido ao relacionamento com outras tabelas. o Anomalia de Alterao impede a alterao de registros devido ao relacionamento com outras tabelas. Facilita a Manuteno de Dados Maximiza a Performance do Banco de Dados Mantm a Integridade dos Dados 1FN Cada linha da tabela deve representar apenas um nico registro Cada clula da tabela deve conter um nico valor 2FN A tabela deve estar na 1FN Atributos no Chave da Tabela devem Depender de Alguma das Chaves da Tabela 3FN A tabela deve estar na 2FN Atributos no Chave da Tabela devem Depender Exclusivamente da Chave Primria da Tabela 4FN e 5FN A tabela deve estar na 3FN Separar em Novas Tabelas Valores que ainda Estejam Redundantes em uma Mesma Coluna. Tipos de Dados: Boleanos (ou Lgicos): Aceitam apenas V (Verdadeiro) ou F (Falso) Numricos o Tinyint / Smallint (Inteiro: - 128 a 127 ou 0 a 255) o Int (Inteiro) o Bigint o Serial Especfico para o PostegreSQL (Inteiro c/ Auto-Incremento) o Float (Decimal) o Double (Decimal) o Numeric (Decimal) Texto (ou String) o Char (Valor Fixo) o Varchar (Valor Varivel) o Text (Textos Grandes) Data e Hora o Date

o Time o DateTime / Timestamp Customizados o Enum

Tipos de Dados Continuao: Arquivos (Imagens, PDF, ...) o Blob Redes o IP o MAC-Address Monetrios (Com Formatao R$) Geomtricos (Formas Geomtricas) Etc Atributos: Null (nulo) / Not Null (no-nulo) Signed (aceita valores negativos) / Unsigned (no aceita valores negativos) Zerofill (preenche com zeros esquerda) Auto_increment (preenche automaticamente o contedo de um campo inteiro, toda vez que um novo registro for inserido na tabela.Utilizado para gerar o campo cdigo (PK) das tabelas) Operadores: Concatenao o Concat (MySQL) ou || (PostegreSQL / Firebird) Relacionais o Igual (=) ; Maior (>) ; Maior ou Igual (>=) ; Menor (<) ; Menor ou Igual (<=) o Is Null (seja nulo) ; Is Not Null (no seja nulo) o Beteween ... and ... (Entre 2 valores) o In (x,y,z,...) Em uma lista / Not In (x,y,z,...) Fora de uma lista o Like %...% Contendo uma seqncia de caracteres (incio, meio, fim ou qualquer lugar) Operadores Lgicos o And (e) ; Or (ou) ; Not (no) Atributos Especiais: Apelido de tabela Select * from Tabela A1 Apelido de Campos Select cli_nome as NOME from clientes Unindo Selees Union (no repete colunas) / Union All (repete colunas) Relacionamentos SQL: Join o Inner Join (Padro) o Equi Join / Non Equi Join o Left Join / Outer Join / Left Outer Join o Right Join / Right Outer Join o Full Join / Full Outer Join o Self Join (Dentro da Mesma Tabela) Funes: Agregao o Count (Conta os registros) Select count(...) ... o Sum (Soma Valores) Select sum(...) ... o AVG (Calcula a Mdia dos Valores) Select avg(...) ... o Max (Calcula o Valor Mximo) Select max(...) ...,

o Min (Calcula o Valor Mnimo) Select min(...) ... Paginao o Distinct (Retorna valores s/ Repetio) Select distinct(...) ... o Order by (Ordena os dados) Select ... order by (Nome da coluna) ASC (Ascendente) ; DESC (Descendente) o Limit (Limita o n de registros retornados) o Offset (Avana registros do resultado)

Funes Continuao: Escalares de Texto o Upper (Retorna todos os caracteres MAISCULOS) Select upper(...) ... o Lower (Retorna todos os caracteres minsculos) Select lower(...) ... Agrupamento o Group by (Agrupa os resultados por determinado campo) o Having < Condio > (Filtro de Seleo para Agrupamentos) Subqueries: Consultas com filtros de seleo baseadas em uma lista (In / Not In) ou em outra seleo Transaes A.C.I.D.: A = Atomicidade Trata o trabalho como parte indivisvel (atmico). A transao deve ter todas as suas operaes executadas em caso de sucesso ou nenhum resultado de alguma operao refletido sobre a base de dados em caso de falha. Ou seja, aps o trmino de uma transao (commit ou abort), a base de dados no deve refletir resultados parciais da transao. Ou todo o trabalho feito, ou nada feito. C = Consistncia Regras de integridade dos dados so asseguradas, ou seja, as transaes no podem quebrar as regras do Banco de Dados. I = Isolamento Tudo se parece como se o trabalho estivesse isolado. O resultado de uma transao executada concorrentemente a outra deve ser o mesmo que o de sua execuo de forma isolada. Operaes exteriores a uma dada transao jamais vero esta transao em estados intermedirios. D = Durabilidade Os efeitos de uma transao em caso de sucesso (commit) devem persistir no banco de dados mesmo em presena de falhas. Stored Procedures Cdigos SQL armazenados no Banco de Dados. Vantagens: Centralizao Segurana Performance / Velocidade Suporte a Transaes Para Criar uma Procedure: Create procedure NOME; Para Executar uma Procedure: Call NOME; Execute NOME; Para Apagar uma Procedure: Drop procedure NOME; Triggers

Cdigos SQL armazenados no Banco de Dados que executado a partir de um evento. Vantagens: As Mesmas das Stored Procedures Execuo (Automtica) Baseada em um Evento Tipos de Eventos Before / After (Insert ; Update ; Delete) Temporais Para Criar uma Trigger: Create trigger NOME TIPO on TABELA; Para Apagar uma Trigger: Drop trigger NOME; Domain: So tipos de Dados criados pelo usurio para que possam ser reaproveitados em outras tabelas. Create Domain NOME as TIPO ATRIBUTOS; (Integer, Not Null, ...) Check: Valida a Entrada de Dados em uma Tabela (Valores Mximos e Mnimos, Formatao, ...) Create Domain DM_Chave as Integer Check (value > 0) Not Null; Generator e Triggers Artifcio para Criar Campos Auto-Incremento no Firebird Generator: Retorna um valor incrementado toda vez que chamado Create generator NOME; Trigger: Set Term ^ Create trigger NOME for TABELA Active before insert position 0 As Begin New.CAMPO (Cdigo) = gen_id(NOME do GENERATOR, 1); End ^ OBS: gen_id (mtodo para pegar o id do generator e incrementar em 1) Replace Substitui (Create or Replace ...) Replicate Repete Valores OBS: JDBC PostgreSQL 1. 2. 3. 4.
5. import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class ConnectionFactory { public static Connection getConexao() throws SQLException { try { Class.forName("org.postgresql.Driver"); returnDriverManager.getConnection("jdbc:postgresql://localhost:5432/TEBD","usuario","senha") ;

6.
7.

8. 9. 10. 11.

12. 13. 14. 15.

} catch (ClassNotFoundException e) { throw new SQLException(e.getMessage()); }

16. } 17. }

Import="java.sql.*; String url = "jdbc:postgresql://localhost/ NOME-DO-BANCO"; String usuario = "USUARIO-DO-BANCO"; String senha = "SENHA-DO-BANCO"; Class.forName("org.postgresql.Driver ").newInstance(); Connection con = DriverManager.getConnection ( url, usuario, senha ); con.close();