You are on page 1of 51

SQL Bsico: Teoria e Prtica

Um grande resumo...

Um pouco de histria

Caractersticas bsicas

Caractersticas bsicas
Exemplo de tabela
Nome Bonifcio Cubas Ana Cintra RA 125159 125148 Nota 9,5 8,0

Um banco de dados um conjunto de tabelas. Representa aspectos da vida real.

Modelos lgicos
So modelos de dados uma representao terica de como ser a implementao do banco de dados Deve ser independente de tecnologia

Image: FreeDigitalPhotos.net

Modelos lgicos
Informaes concisas e necessrias para
o negcio

Identifica redundncias Identifica dados no utilizados Permite estabelecer regras de


integridade de dados

Image: FreeDigitalPhotos.net

Modelos lgicos
r do a c tifi ria) n ide rim o t P u rib have t Matrcula A (C

Um modelo formado por: Entidades Atributos

Nome

Aluno

Endereo

Data Nascimento

Image: FreeDigitalPhotos.net

Modelos lgicos
Aluno: #Matrcula Nome Endereo Data Nascimento
de a r i ne tar a a m esen r t Ou repr

Image: FreeDigitalPhotos.net

Relacionamentos
Diagramas de entidas
Utilizaremos a metodologia DER: Diagrama Entidade-Relacionamento DER representa a associao de cada entidade atravs de relacionamentos

Entidade 1

Relacionamento

Entidade 2

Relacionamentos
DER
Entidade 1
Um e somente um Um ou muitos

Entidade 2

Um ou muitos

Um ou nenhum

de to o l n mp ame e Ex ion ac rel

Entidade 3

Exemplos
Exemplo: Cliente
Uma empresa controla os seguintes dados de seus clientes: Cdigo Nome Endereo Telefone Cliente: #Cdigo Nome Endereo Telefone

Exemplos
Exemplo: Cliente
A empresa vende diversos produtos a seus clientes: Cada cliente pode comprar quantos produtos precisar Cada pedido de venda pode ser composto por vrios produtos

Pedido: #Cdigo Cliente Data Valor

Detalhe Pedido: #Cdigo Pedido #Cdigo Produto Quantidade Valor

Produto: #Cdigo Descrio Valor

Exemplos
DER: Exemplo Cliente
Cliente
1

Faz

Pedido
1

Compe

Detalhe Pedido

Forma

Produto

Modelos Fsicos
So modelos de dados uma representao terica de como ser a implementao do banco de dados Deve levar em conta limitaes do SGBD as
Image: FreeDigitalPhotos.net

Modelos Fsicos
Modelo lgico lhe permite a viso de
negcio. O conceito a ser trabalho.

O modelo fsico lhe permite projetar a


implementao do banco de dados.

O modelo fsico pode ser ligeiramente


diferente do modelo lgico (melhorado).

Requer conhecimento tcnico.


Image: FreeDigitalPhotos.net

Modelos Fsicos
Modelo lgico : Entidades e atributos. O modelo fsico : Tabelas e campo. Modelo lgico : Atributo identificador. O modelo fsico : Chave primria. Modelo fsico:
Chave estrangeira Cardinalidade Tipo de campo

Modelos Fsicos
Tipos de campos
Char(N) Varchar(N) Numeric(N,P) Integer Date Time TimeStamp

N = Tamanho P = Preciso decimal

Modelos Fsicos

O SQL
A linguagem SQL (Structured Query Language Linguagem de Consulta Estruturada) uma linguagem declarativa utilizada por Sistemas Gerenciadores de Bancos de Dados Relacionais como: Oracle, SQL Server, MySQL, PostgreSQL, Firebird, e outros. Devido sua ampla utilizao por diversos SGBDs, surgiram vrios dialetos para os comandos, que geraram a necessidade de criao de um padro para a linguagem. Essa tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em 1987. Em 1992, foi realizao uma reviso da linguagem que recebeu o nome de SQL-92.

O SQL
Em 1999 e 2003, ocorreram novas revises. Na reviso de 1999, foram adicionados padres para expresses regulares, consultas recursivas, triggers e algumas caractersticas de orientao a objeto. Na reviso de 2003, foram introduzidas caractersticas relacionadas a XML, sequncias padronizadas e colunas com valores de autonumerao. Uma dificuldade encontrada na utilizao da linguagem SQL por parte dos desenvolvedores ou administradores de bancos de dados a diferena entre os comandos nos diversos SGBDs, mesmo aps a definio dos padres. Porm, as diferenas no so grandes.

O SQL - Tipos de linguagens


DDL (Data Definition Language Linguagem de Definio de Dados). Os comandos DDL so usados para definir a estrutura do banco de dados, organizando em tabelas que so compostas por campos (colunas). Comandos que compem a DDL: CREATE, ALTER, DROP.

O SQL - Tipos de linguagens


DML (Data Manipulation Language Linguagem de Manipulao de Dados). Os comandos DML permitem realizar operaes de insero, alterao, excluso e seleo sobre os registros (linhas) das tabelas. Comandos que compem a DML: INSERT, UPDATE, DELETE e SELECT. Alguns autores definem que o comando SELECT faz parte de uma subdiviso chamada DQL (Data Query Language Linguagem de Consulta de Dados).

O SQL - Tipos de linguagens


DCL (Data Control Language Linguagem de Controle de Dados). Os comandos DCL so usados para gerenciar usurios e permisses de acesso ao Sistema Gerenciador de Banco de Dados. Comandos que compem a DCL: GRANT e REVOKE.

Alguns autores ainda definem uma subdiviso da linguagem SQL chamada DTL (Data Transaction Languagem Linguagem de Transao de Dados). Uma transao pode ser compreendida como um conjunto de comandos que executado de forma atmica, ou seja, ou todos os comandos so executados com sucesso ou nenhum dos resultados obtidos poreles ser mantido no banco de dados.

O SQL - Comandos DDL


CREATE TABLE <nome_da_tabela> ( <nome_do_campo> <tipo_do_campo> <opes>, <nome_do_campo> <tipo_do_campo> <opes>, ... PRIMARY KEY(<nome_do_campo>) INDEX <nome_do_ndice>(<nome_do_campo>), FOREIGN KEY(<nome_do_campo>) REFERENCES <nome_da_tabela_origem> (<nome_do_campo_origem> ) ON DELETE <opo_de_referencia> ON UPDATE <opo_de_referencia>, );
<nome_da_tabela>: Nome da tabela a ser criada, no pode haver espaos e acentuaes. <nome_do_campo>: Nome do campo da tabela, no pode haver espaos e acentuaes. <tipo_do_campo>: Tipo do campo. Existem tipos padres, porm existem tipos de campos especficos de cada SGBD. <opes>: Padronizao do campo (valor padro, auto incremento, limite numrico, etc...). Chave primria: Deve constar o nome do campo (se forma mais de um, separar por vrgula) que compes a chave primria. Caso a tabela no contenha uma chave primria, basta suprimir essa linha. ndices: Deve constar o nome do ndice e o nome do campo (se forma mais de um campo, separar por vrgula) que compes o ndice. Caso a tabela no contenha uma chave primria, basta suprimir essa linha. A tabela pode conter quantos ndices forem necessrios. Chave estrangeira: Deve constar o nome do campo que compes a chave, o nome da tabela de origem e o nome do campo da tabela de origem . Caso a tabela no contenha uma chave primria, basta suprimir essa linha. A opo de referncia define o comportamento entre os registros da tabela (Se apagar na tabela-pai, apaga na tabela-filho, por exemplo).

O SQL - Comandos DDL


CREATE DATABASE Este comando utilizado para criar um banco de dados. Exemplo: CREATE DATABASE loja; USE Sempre que for necessrio manipular as tabelas de um banco de dados no SGBD MySQL, ser necessrio selecionar o banco de dados que se deseja manipular. Para isso, deve ser utilizado o comando USE. Exemplo: USE loja; CREATE TABLE Cria uma tabela de dados. Sintaxe: CREATE TABLE <nome_da_tabela> (definio dos campos); Exemplo: CREATE TABLE clientes( cpf integer unsigned not null, nome varchar(100) not null, data_nascimento date not null, sexo char(1) default M, salario decimal(10,2) default 0, profissao varchar(30), primary key(cpf) ); Clusula DEFAULT A clusula DEFAULT permite definir um valor padro para um campo, que ser utilizado caso no seja informado nenhum valor para esse campo na insero de um registro na tabela. Exemplo: sexo char(1) default M, No exemplo acima, caso o campo sexo da tabela no seja preenchido com um valor durante a insero de um registro, ser assumido o valor M para o campo. Para campos do tipo NUMRICO, o valor DEFAULT escrito sem aspas. Exemplo: salario decimal(10,2) default 0,

O SQL - Comandos DDL


CONSTRAINTS (limitaes, restries) NOT NULL: define que um campo da tabela obrigatrio (deve receber um valor na insero de um registro); PRIMARY KEY: define que um campo ou conjunto de campos para garantir a identidade de cada registro. Quando um campo definido como chave primria, seu valor no pode se repetir em registros diferentes. Cada tabela s pode ter uma nica chave primria. CHAVE PRIMRIA SIMPLES: composta por um nico campo. Exemplo: se for definido que em um sistema de hotis no podem existir dois clientes com o mesmo CPF, portanto este campo dever ser definido como CHAVE PRIMRIA. CHAVE PRIMRIA COMPOSTA: formada por dois ou mais campos. Exemplo: se for definido em um sistema de Agncias bancrias que no podem existir duas contas com o mesmo nmero da mesma agncia, ento esses dois campos formaro uma CHAVE PRIMRIA COMPOSTA, pois a combinao deles no pode se repetir. Sintaxe: Criao de uma chave primria composta Criao de uma chave primria simples CREATE TABLE contas( CREATE TABLE contas( numero integer not null, numero integer not null primary key, saldo integer default 0, saldo integer default 0, agencia_numero integer not null, agencia_numero integer not null primary key(numero,agencia_numero) ); ); Ou CREATE TABLE contas( Ou numero integer not null, saldo integer default 0, CREATE TABLE contas( agencia_numero integer not null, numero integer not null, primary key(numero) saldo integer default 0, ); agencia_numero integer not null, constraint pk_conta primary key (numero, agencia_numero) );

O SQL - Comandos DDL


CONSTRAINTS FOREIGN KEY: Uma chave estrangeira definida quando se deseja relacionar tabelas do banco de dados.

Sintaxe: CREATE TABLE contas( numero integer not null, saldo integer default 0, agencia_numero integer not null, primary key(numero,agencia_numero), foreign key(agencia_numero) references agencias(numero) ); Ou CREATE TABLE contas( numero integer not null, saldo integer default 0, agencia_numero integer not null, primary key(numero,agencia_numero), constraint fk_contaagencia foreign key(agencia_numero) references agencias(numero) );

O SQL - Comandos DDL


CONSTRAINTS UNIQUE: Uma constraint UNIQUE definie que o valor de um campo ou de uma sequncia de campos no pode se repetir em registros da mesma tabela. Essa constraint criada de forma implcita quando definida uma chave primria para uma tabela. Como s possvel ter uma chave primria por tabela, a utilizao de constraints UNIQUE uma soluo quando se deseja restringir valores repetidos em outros campos. Exemplo: CREATE TABLE clientes( cpf integer not null, nome varchar(100) not null, data_nascimento date not null, sexo char(1) default M, salario decimal(10,2) default 0, profissao varchar(30), rg integer not null, estado char(2) not null, primary key(cpf), constraint un_rgestado unique(rg,estado) );

O SQL - Comandos DDL


DROP TABLE O comando DROP TABLE usado para apagar uma tabela do Banco de dados. Sintaxe: DROP TABLE <nome_da_tabela>; ALTER TABLE Para no se apagar uma tabela e recri-la, possvel fazer alteraes em sua estrutura por meio do comando ALTER TABLE. Isso importante pois a execuo do comando DROP TABLE apaga (obviamente) todos os registros da tabela, j a execuo do comando ALTER TABLE no exclui nenhum registro. Adicionar um campo Sintaxe: ALTER TABLE <nome_da_tabela> ADD <nome_do_campo> <tipo_de_dado> <atributos> Exemplo: ALTER TABLE clientes ADD endereco varchar(90) not null; Alterar o tipo de dado de um campo Sintaxe: ALTER TABLE <nome_da_tabela> MODIFY <nome_do_campo> <tipo_de_dado> Exemplo: ALTER TABLE clientes MODIFY endereco varchar(200); Renomear um campo e modificar o tipo Sintaxe: ALTER TABLE <nome_da_tabela> CHANGE COLUMN <nome_do_campo novo_nome> <tipo>;

O SQL - Comandos DDL


ALTER TABLE Exemplo para mudar apenas o nome (o tipo do campo mantido): ALTER TABLE clientes CHANGE COLUMN data_nascimento datanasc date; Exemplo para mudar o nome e o tipo do campo: ALTER TABLE clientes CHANGE COLUMN data_nascimento datahoranasc datetime; Renomear uma tabela Sintaxe: ALTER TABLE <nome_da_tabela> RENAME TO <novo_nome_da_tabela> Exemplo: ALTER TABLE clientes RENAME TO pessoas_fisicas Apagar um campo Sintaxe: ALTER TABLE <nome_da_tabela> DROP COLUMN <nome_do_campo> Exemplo: ALTER TABLE clientes DROP COLUMN endereco;

O SQL - Comandos DDL


ALTER TABLE Adicionar uma PRIMARY KEY Sintaxe: ALTER TABLE <nome_da_tabela> ADD CONSTRAINT <nome_da_constraint> PRIMARY KEY(campo1[,campo2,campo3,..., campoN]) Exemplo: ALTER TABLE clientes ADD CONSTRAINT pk_cpf PRIMARY KEY(cpf)

Apagar uma PRIMARY KEY Sintaxe: ALTER TABLE <nome_da_tabela> DROP PRIMARY KEY Ou ALTER TABLE <nome_da_tabela> DROP CONSTRAINT <nome_da_constraint_da_primary_key>

Exemplo: ALTER TABLE clientes DROP PRIMARY KEY; Ou ALTER TABLE clientes DROP CONSTRAINT pk_cpf;

O SQL - Comandos DDL


ALTER TABLE Adicionar uma FOREIGN KEY Sintaxe: ALTER TABLE <nome_da_tabela> ADD CONSTRAINT <nome_da_constraint> FOREIGN KEY(campo1[,campo2, campo3,...,campoN]) REFERENCES <nome_da_tabela>(campo1[,campo2,campo3,...,campoN]); Exemplo: ALTER TABLE contas ADD CONSTRAINT fk_contaagencia FOREIGN KEY(agencia_numero) REFERENCES agencias (numero); Adicionar uma constraint UNIQUE Sintaxe: ALTER TABLE <nome_da_tabela> ADD CONSTRAINT <nome_da_constraint> UNIQUE(campo1[,campo2,campo3,..., campoN]) Exemplo: ALTER TABLE clientes ADD CONSTRAINT un_rgestado UNIQUE(rg,estado) Apagar uma CONSTRAINT qualquer Sintaxe: ALTER TABLE <nome_da_tabela> DROP CONSTRAINT <nome_da_constraint> Exemplo: ALTER TABLE contas DROP CONSTRAINT fk_contaagencia Comando SHOW TABLES Para visualizar todas as tabelas em um banco de dados, utilize o comando SHOW TABLES. Exemplo: SHOW TABLES; Comando DESC Para visualizar a estrutura de uma tabela, utilize o comando DESC (ou DESCRIBE). Exemplo: DESC clientes;

O SQL - Exemplo prtico

O SQL - Exemplo prtico

O SQL - Exemplo prtico


CREATE TABLE LIVRO ( idLIVRO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, EXEMPLAR VARCHAR(20) NULL, ISBN NUMERIC(20) NULL, TITULO VARCHAR(200) NULL, AUTORES VARCHAR(500) NULL, PRIMARY KEY(idLIVRO) ); CREATE TABLE INSCRICAO ( idINSCRICAO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, NOME VARCHAR(100) NULL, ENDERECO VARCHAR(500) NULL, TELEFONE VARCHAR(15) NULL, DATA_INSCRICAO DATE NULL, PRIMARY KEY(idINSCRICAO) );
CREATE TABLE RESERVA ( idRESERVA INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, LIVRO_idLIVRO INTEGER UNSIGNED NOT NULL, INSCRICAO_idINSCRICAO INTEGER UNSIGNED NOT NULL, DATA_RESERVA DATE NULL, PRIMARY KEY(idRESERVA), INDEX RESERVA_FKIndex1(INSCRICAO_idINSCRICAO), INDEX RESERVA_FKIndex2(LIVRO_idLIVRO), FOREIGN KEY(INSCRICAO_idINSCRICAO) REFERENCES INSCRICAO(idINSCRICAO) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(LIVRO_idLIVRO) REFERENCES LIVRO(idLIVRO) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE REQUISICAO ( idREQUISICAO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, INSCRICAO_idINSCRICAO INTEGER UNSIGNED NOT NULL, LIVRO_idLIVRO INTEGER UNSIGNED NOT NULL, DATA_REQUISICAO DATE NULL, DATA_ENTREGA DATE NULL, PRIMARY KEY(idREQUISICAO), INDEX REQUISICAO_FKIndex1(INSCRICAO_idINSCRICAO), INDEX REQUISICAO_FKIndex2(LIVRO_idLIVRO), FOREIGN KEY(INSCRICAO_idINSCRICAO) REFERENCES INSCRICAO(idINSCRICAO) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(LIVRO_idLIVRO) REFERENCES LIVRO(idLIVRO) ON DELETE NO ACTION ON UPDATE NO ACTION );

O SQL - Manipulando os dados


A subdiviso da linguagem SQL denominada DML (Data Manipulation Language) composta pelos seguintes comandos: INSERT: Inclui registro na tabela. UPDATE: Atualiza registros j existentes na tabela. DELETE: Exclui registros da tabela. SELECT: Recupera registros armazenados na tabela (uma ou mais, simultneamente).

O SQL - Exemplo prtico

INSERT

Sintaxe: INSERT INTO <nome_da_tabela> (<campo1,campo2, campo3,...,campoN>) VALUES (<valor1, valor2, valor3, ..., valorN>);

Exemplo:

INSERT INTO livro (EXEMPLAR, ISBN, TITULO, AUTORES) VALUES ('1', 98012345678, Meu Livro, 'Jos da Silva');

Observaes: 1) Valores do tipo TEXTO devem ser envolvidos por aspas simples ( ); 2) Valores do tipo numricos (INTEGER, NUMERIC, DECIMAL, etc..) no so envolvidos por aspas simples e devem utilizar o ponto decimal para separao das casas decimais no lugar na vrgula. Ex.: 3.25

O SQL - Exemplo prtico

Outra sintaxe do comando INSERT permite ocultar os campos e escrever somente os valores que sero inseridos. Exemplo:

INSERT INTO livro VALUES ('1', 98012345678, Meu Livro, 'Jos da Silva');

possvel usar o INSERT para mltiplos registros. Exemplo:

INSERT INTO livro_backup SELECT * FROM livro;

Observaes: Para a execuo do comando acima necessrio que os tipos de dados dos campos da tabela cidades_backup estejam na mesma ordem dos tipos de dados dos campos da tabela cidades.

O SQL - Exemplo prtico

UPDATE

Sintaxe: UPDATE <nome_da_tabela> SET <campo1 = valor1>, <campo2 = valor2>, <campo3 = valor3>, ..., <campoN = valorN> [ WHERE condies]

Exemplo: UPDATE livro SET titulo = O Alienista;


O comando UPDATE acima altera o campo titulo de todas os livros para O Alienista.

O SQL - Exemplo prtico

Para restringir a alterao dos registros a um subconjunto deles, utilizada a clusula WHERE, que permite processar uma ou mais condies. Exemplo:

UPDATE livro SET titulo = O Alienista, Autor = Machado de Assis WHERE isbn = 98012345678;

O SQL - Exemplo prtico

DELETE

Sintaxe: DELETE FROM <nome_da_tabela> [WHERE condies]; Exemplo: DELETE FROM livro;

O comando acima exclui todos os registros da tabela livro. Para excluir apenas um subconjunto dos registros, necessrio utilizar a clusula WHERE. Exemplo:

DELETE FROM livro WHERE isbn = 98012345678;

O SQL - Exemplo prtico

SELECT

Sintaxe:
SELECT <campo1>, <campo2>, ..., <campoN> FROM <tabela1>, <tabela2>, ..., <tabelaN> [ JOIN <tabela> ON condies] [ WHERE condies ] [ORDER BY <campos>];

Exemplos:

Exibir todos os campos de uma tabela

SELECT * FROM livro;


Exibir um campo de uma tabela

SELECT titulo FROM livro;


Exibir mais de um campo de uma tabela

SELECT titulo, autor FROM livro;

O SQL - Exemplo prtico

SELECT

Apelidando campos

SELECT titulo as nome_livro, isbn as isbn_livro FROM livro;


Apelidando tabelas

SELECT titulo, isbn FROM livro as acervo;


Selecionando campos a partir do nome da tabela

SELECT livro.titulo, livro.isbn FROM livro;


Selecionando campos a partir do apelido da tabela

SELECT acervo.titulo, acervo.isbn FROM livro as acervo;

O SQL - Exemplo prtico


Clusula WHERE
Igual: =
UPDATE livro SET autor = Machado de Assis WHERE isbn = 98012345678;

Diferente: <>
UPDATE INSCRICAO SET endereco = Rua dos Bobos 0 WHERE idINSCRICAO <> 1;

Maior: >
SELECT * FROM INSCRICAO WHERE DATA_INSCRICAO > '2006/07/26';

Menor: <
SELECT * FROM INSCRICAO WHERE DATA_INSCRICAO < '2006/07/26';

Maior ou igual: >=


SELECT * FROM INSCRICAO WHERE DATA_INSCRICAO >= '2006/07/26';

Menor ou igual: <=


SELECT * FROM INSCRICAO WHERE DATA_INSCRICAO <= '2006/07/26';

IN: Comparao de igualdade com mltiplos valores


SELECT * FROM INSCRICAO WHERE nome IN ('Jos','Maria','Silveira');

O SQL - Exemplo prtico

Clusula WHERE
LIKE: Comparao de partes do texto SELECT * FROM INSCRICAO WHERE nome LIKE a%;
Seleciona todos o inscritos cujos nomes iniciam pela letra a.

SELECT * FROM INSCRICAO WHERE nome LIKE %o;


Seleciona todos os inscritos cujos nomes terminam pela letra o.

SELECT * FROM INSCRICAO WHERE nome LIKE %a%;


Seleciona todos os inscritos cujos nomes possuem a letra a em qualquer posio (incio, meio ou fim).

O SQL - Exemplo prtico


Clusula WHERE
Soma: +
UPDATE funcionarios SET salario = salario + 10;
Acrescenta R$ 10,00 ao salrio dos funcionrios.

Subtrao: UPDATE funcionarios SET salario = salario 5 WHERE salario > 1000;
Subtrai R$ 5,00 do salrio dos funcionrios que ganham mais de R$ 1000,00.

Multiplicao: *
UPDATE funcionarios SET salario = salario*1.1;
Aumenta o salrio dos funcionrios em 10%.

Diviso: /
UPDATE funcionarios SET salario = salario + salario*(10/100);
Aumenta o salrio dos funcionrios em 10%.

IS: Operador especial para comparao de igualdade. Este operador usado para comparao com o valor NULL.
SELECT nome FROM funcionarios WHERE celular IS NULL.

O SQL - Exemplo prtico

Clusula WHERE
AND SELECT * FROM INSCRICAO WHERE nome LIKE a% AND DATA_INSCRICAO <= 1980/01/01;
Seleciona todos os inscritos cujos nomes iniciam pela letra a e cujas datas de inscrio so anteriores a 01/01/1980.

OR SELECT * FROM livro WHERE isbn='987123' OR isbn ='987456';


Seleciona os livros cujos os ISBN sejam 987123 ou 987456.

Multiplicao: * UPDATE funcionarios SET salario = salario*1.1;


Aumenta o salrio dos funcionrios em 10%.

NOT SELECT nome FROM funcionarios WHERE NOT(salario < 1000);


Seleciona o nome dos funcionrios que no possuem salrio menor que 1000.

O SQL - Exemplo prtico


Juno de tabelas
Usando a clusula WHERE SELECT * FROM REQUISICAO , LIVRO WHERE REQUISICAO.LIVRO_idLIVRO = LIVRO.idLIVRO;
Para a juno de tabelas, sempre devem ser escritas as condies entre os campos que esto relacionados nas tabelas. Geralmente, essas condies envolvem os campos que so chaves estrangeiras de uma tabela e os que so chaves primrias da outra, porm nada impede de serem feitas condies entre campos que no so chaves.

Usando a clusula JOIN SELECT * FROM LIVRO INNER JOIN LIVRO_idLIVRO = LIVRO.idLIVRO;

requisicao

ON

REQUISICAO.

A clusula INNER JOIN define que sero selecionados somente os registros de uma tabela que possuem relao com os registros da outra tabela.

O SQL - Exemplo prtico


Juno de tabelas
Usando a clusula LEFT JOIN
SELECT requisicao.data_requisicao, inscricao.nome FROM inscricao LEFT JOIN requisicao ON requisicao.INSCRICAO_idINSCRICAO idINSCRICAO; = inscricao.

Para interpretar o LEFT JOIN, faz-se a pergunta: qual tabela est esquerda do JOIN? No comando acima, a tabela que est esquerda da clusula JOIN a tabela inscricao. Portanto, sero selecionados todos os registros da tabela inscricao estando ou no relacionados com a tabela requisicao pelo camp o de chave primria.

Usando a clusula RIGHT JOIN


SELECT requisicao.data_requisicao, inscricao.nome FROM inscricao RIGHT JOIN requisicao ON requisicao.INSCRICAO_idINSCRICAO idINSCRICAO; = inscricao.

Para interpretar o RIGHT JOIN, faz-se a pergunta: qual tabela est direita do JOIN? A tabela requisicao. Portanto, sero selecionados todos os registros da tabela requisicao que esto ou no relacionados com os registros da tabela inscricao.

O SQL - Exemplo prtico

Clusula ORDER BY

Sintaxe:
SELECT ... ORDER BY <campo1>, <campo2>, <campoN> ... [desc|asc]

Exemplos:

Seleciona os livros cujos ttulos iniciam pela letra a e ordena a lista primeiramente pelo autor e, em seguida, pelos ttulos dos livros.

SELECT * FROM livro WHERE titulo LIKE a% ORDER BY autor, titulo;


Seleciona todos os livros ordenando decrescentemente pelo ttulo e, se houver repetio de valores, obedece ordem crescente do autor.

SELECT * FROM livro ORDER BY titulo DESC, autor;


Seleciona todos os livros ordenando crescentemente pelo ttulo e, se houver repetio de valores, obedece ordem decrescente do nome do autor.

SELECT * FROM livro ORDER BY titulo, autor DESC;

Concluindo
importante possuir uma documentao mnima sobre o banco de dados para poder se localizar e fazer a manuteno do mesmo. Conhecer pelo menos um tipo de modelo de banco de dados facilita a interatividade entre ferramentas e a comunicao com os profissionais envolvidos com o sistema. Decorar comandos no o importante. O importante saber o funcionamento!

You might also like