4. Características básicas
● Exemplo de tabela
● Um banco de dados é um conjunto de
tabelas.
● Representa aspectos da vida real.
Nome RA Nota
Bonifácio Cubas 125159 9,5
Ana Cintra 125148 8,0
5. Modelos lógicos
● São modelos de dados
● É uma representação teórica
de como será a implementação
do banco de dados
● Deve ser independente de
tecnologia Image: FreeDigitalPhotos.net
6. Modelos lógicos
● Informações concisas e necessárias para
o negócio
● Identifica redundâncias
● Identifica dados não utilizados
● Permite estabelecer regras de
integridade de dados
Image: FreeDigitalPhotos.net
9. Relacionamentos
● Diagramas de entidas
○ Utilizaremos a metodologia DER: Diagrama
Entidade-Relacionamento
○ DER representa a associação de cada entidade
através de relacionamentos
Entidade 1 Entidade 2Relacionamento
10. Relacionamentos
● DER
Entidade 1 Entidade 2Um ou muitos
Entidade 3
Um e somente
um
Um ou muitos
Um ou nenhum
Exemplo de
relacionamento
11. Exemplos
● Exemplo: Cliente
○ Uma empresa controla os seguintes dados de seus
clientes:
■ Código
■ Nome
■ Endereço
■ Telefone
Cliente:
#Código
Nome
Endereço
Telefone
12. 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
vários produtos
Pedido:
#Código
Cliente
Data
Valor
Detalhe Pedido:
#Código Pedido
#Código Produto
Quantidade
Valor
Produto:
#Código
Descrição
Valor
13. Exemplos
● DER: Exemplo Cliente
Cliente Pedido
N
Produto
1
1
1
Faz
Detalhe
Pedido
Forma
NN
Compõe
14. Modelos Físicos
● São modelos de dados
● É uma representação teórica
de como será a implementação
do banco de dados
● Deve levar em conta as
limitações do SGBD Image: FreeDigitalPhotos.net
15. Modelos Físicos
● Modelo lógico lhe permite a visão de
negócio. O conceito a ser trabalho.
● O modelo físico lhe permite projetar a
implementação do banco de dados.
● O modelo físico pode ser ligeiramente
diferente do modelo lógico (melhorado).
● Requer conhecimento técnico.
Image: FreeDigitalPhotos.net
16. Modelos Físicos
● Modelo lógico : Entidades e atributos.
● O modelo físico : Tabelas e campo.
● Modelo lógico : Atributo identificador.
● O modelo físico : Chave primária.
● Modelo físico:
○ Chave estrangeira
○ Cardinalidade
○ Tipo de campo
17. Modelos Físicos
● Tipos de campos
○ Char(N)
○ Varchar(N)
○ Numeric(N,P)
○ Integer
○ Date
○ Time
○ TimeStamp
N = Tamanho
P = Precisão decimal
19. 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 utilização por diversos SGBDs,
surgiram vários dialetos para os comandos, que geraram a
necessidade de criação de um padrão para a linguagem.
Essa tarefa foi realizada pela American National Standards
Institute (ANSI) em 1986 e ISO em 1987. Em 1992, foi
realização uma revisão da linguagem que recebeu o nome
de SQL-92.
20. O SQL
● Em 1999 e 2003, ocorreram novas revisões. Na revisão de
1999, foram adicionados padrões para expressões
regulares, consultas recursivas, triggers e algumas
características de orientação a objeto. Na revisão de 2003,
foram introduzidas características relacionadas a XML,
sequências padronizadas e colunas com valores de auto-
numeração.
● Uma dificuldade encontrada na utilização da linguagem SQL
por parte dos desenvolvedores ou administradores de
bancos de dados é a diferença entre os comandos nos
diversos SGBDs, mesmo após a definição dos padrões.
Porém, as diferenças não são grandes.
21. O SQL - Tipos de linguagens
● DDL (Data Definition Language – Linguagem de Definição
de Dados).
○ Os comandos DDL são usados para definir a estrutura
do banco de dados, organizando em tabelas que são
compostas por campos (colunas). Comandos que
compõem a DDL: CREATE, ALTER, DROP.
22. O SQL - Tipos de linguagens
● DML (Data Manipulation Language – Linguagem de
Manipulação de Dados).
○ Os comandos DML permitem realizar operações de
inserção, alteração, exclusão e seleção sobre os
registros (linhas) das tabelas. Comandos que compõem
a DML: INSERT, UPDATE, DELETE e SELECT.
○ Alguns autores definem que o comando SELECT faz
parte de uma subdivisão chamada DQL (Data Query
Language – Linguagem de Consulta de Dados).
23. O SQL - Tipos de linguagens
● DCL (Data Control Language – Linguagem de Controle de
Dados). Os comandos DCL são usados para gerenciar
usuários e permissões de acesso ao Sistema Gerenciador
de Banco de Dados. Comandos que compõem a DCL:
GRANT e REVOKE.
● Alguns autores ainda definem uma subdivisão da linguagem
SQL chamada DTL (Data Transaction Languagem –
Linguagem de Transação de Dados). Uma transação pode
ser compreendida como um conjunto de comandos que é
executado de forma atômica, ou seja, ou todos os
comandos são executados com sucesso ou nenhum dos
resultados obtidos poreles será mantido no banco de dados.
24. O SQL - Comandos DDL
CREATE TABLE <nome_da_tabela> (
<nome_do_campo> <tipo_do_campo> <opções>,
<nome_do_campo> <tipo_do_campo> <opções>,
...
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 <opção_de_referencia>
ON UPDATE <opção_de_referencia>,
);
● <nome_da_tabela>: Nome da tabela a ser criada, não pode haver espaços e acentuações.
● <nome_do_campo>: Nome do campo da tabela, não pode haver espaços e acentuações.
● <tipo_do_campo>: Tipo do campo. Existem tipos padrões, porém existem tipos de campos específicos de cada SGBD.
● <opções>: Padronização do campo (valor padrão, auto incremento, limite numérico, etc...).
● Chave primária: Deve constar o nome do campo (se forma mais de um, separar por vírgula) que compões a chave primária.
Caso a tabela não contenha uma chave primária, basta suprimir essa linha.
● Índices: Deve constar o nome do índice e o nome do campo (se forma mais de um campo, separar por vírgula) que compões
o índice. Caso a tabela não contenha uma chave primária, basta suprimir essa linha. A tabela pode conter quantos índices
forem necessários.
● Chave estrangeira: Deve constar o nome do campo que compões a chave, o nome da tabela de origem e o nome do campo
da tabela de origem . Caso a tabela não contenha uma chave primária, basta suprimir essa linha. A opção de referência
define o comportamento entre os registros da tabela (Se apagar na tabela-pai, apaga na tabela-filho, por exemplo).
25. O SQL - Comandos DDL
CREATE DATABASE
Este comando é utilizado para criar um banco de dados. Exemplo: CREATE DATABASE loja;
USE
Sempre que for necessário manipular as tabelas de um banco de dados no SGBD MySQL, será necessário 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> (definição 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)
);
Cláusula DEFAULT
A cláusula DEFAULT permite definir um valor padrão para um campo, que será utilizado caso não seja informado nenhum
valor para esse campo na inserção de um registro na tabela. Exemplo: sexo char(1) default ‘M’,
No exemplo acima, caso o campo “sexo” da tabela não seja preenchido com um valor durante a inserção de um registro, será
assumido o valor ‘M’ para o campo. Para campos do tipo NUMÉRICO, o valor DEFAULT é escrito sem aspas.
Exemplo: salario decimal(10,2) default 0,
26. O SQL - Comandos DDL
CONSTRAINTS (limitações, restrições)
● NOT NULL: define que um campo da tabela é obrigatório (deve receber um valor na inserção 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 primária, seu valor não pode se repetir em registros diferentes. Cada tabela só pode ter uma
única chave primária.
○ CHAVE PRIMÁRIA SIMPLES: composta por um único campo. Exemplo: se for definido que em um sistema de hotéis
não podem existir dois clientes com o mesmo CPF, portanto este campo deverá ser definido como CHAVE
PRIMÁRIA.
○ CHAVE PRIMÁRIA COMPOSTA: formada por dois ou mais campos. Exemplo: se for definido em um sistema de
Agências bancárias que não podem existir duas contas com o mesmo número da mesma agência, então esses dois
campos formarão uma CHAVE PRIMÁRIA COMPOSTA, pois a combinação deles não pode se repetir.
Criação de uma chave primária composta
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero,agencia_numero)
);
Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
constraint pk_conta primary key (numero,
agencia_numero)
);
Sintaxe:
Criação de uma chave primária simples
CREATE TABLE contas(
numero integer not null primary key,
saldo integer default 0,
agencia_numero integer not null
);
Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero)
);
27. 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)
);
28. O SQL - Comandos DDL
CONSTRAINTS
● UNIQUE: Uma constraint UNIQUE definie que o valor de um campo ou de uma sequência de campos não pode se
repetir em registros da mesma tabela. Essa constraint é criada de forma implícita quando é definida uma chave primária
para uma tabela. Como só é possível ter uma chave primária por tabela, a utilização de constraints UNIQUE é uma
solução 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)
);
29. 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 não se apagar uma tabela e recriá-la, é possível fazer alterações em sua estrutura por meio do comando ALTER TABLE. Isso
é importante pois a execução do comando DROP TABLE apaga (obviamente) todos os registros da tabela, já a execução do
comando ALTER TABLE não 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>;
30. 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;
31. 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;
32. 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;
35. O SQL - Exemplo prático
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
);
36. O SQL - Manipulando os dados
● A subdivisão 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, simultâneamente).
37. O SQL - Exemplo prático
● 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');
● Observações:
1) Valores do tipo TEXTO devem ser envolvidos por aspas simples ( ‘ );
2) Valores do tipo numéricos (INTEGER, NUMERIC, DECIMAL, etc..) não são
envolvidos por aspas simples e devem utilizar o ponto decimal para separação das
casas decimais no lugar na vírgula. Ex.: 3.25
38. O SQL - Exemplo prático
● Outra sintaxe do comando INSERT permite ocultar os
campos e escrever somente os valores que serão inseridos.
Exemplo:
INSERT INTO livro VALUES ('1', 98012345678, ’Meu Livro’, 'José
da Silva');
● É possível usar o INSERT para múltiplos registros. Exemplo:
INSERT INTO livro_backup SELECT * FROM livro;
● Observações: Para a execução do comando acima é necessário que os tipos de
dados dos campos da tabela cidades_backup estejam na mesma ordem dos tipos
de dados dos campos da tabela cidades.
39. O SQL - Exemplo prático
● UPDATE
Sintaxe:
UPDATE <nome_da_tabela> SET <campo1 = valor1>,
<campo2 = valor2>, <campo3 = valor3>, ...,
<campoN = valorN> [ WHERE condições]
● Exemplo:
UPDATE livro SET titulo = ‘O Alienista’;
● O comando UPDATE acima altera o campo titulo de todas os livros para ‘O
Alienista’.
40. O SQL - Exemplo prático
● Para restringir a alteração dos registros a um subconjunto
deles, é utilizada a cláusula WHERE, que permite processar
uma ou mais condições.
● Exemplo:
UPDATE livro SET
titulo = ‘O Alienista’,
Autor = ‘Machado de Assis’
WHERE isbn = 98012345678;
41. O SQL - Exemplo prático
● DELETE
Sintaxe:
DELETE FROM <nome_da_tabela> [WHERE condições];
● Exemplo:
DELETE FROM livro;
● O comando acima exclui todos os registros da tabela livro.
Para excluir apenas um subconjunto dos registros, é
necessário utilizar a cláusula WHERE. Exemplo:
DELETE FROM livro WHERE isbn = 98012345678;
42. O SQL - Exemplo prático
● SELECT
Sintaxe:
SELECT <campo1>, <campo2>, ..., <campoN> FROM <tabela1>,
<tabela2>, ..., <tabelaN> [ JOIN <tabela> ON condições]
[ WHERE condições ] [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;
43. O SQL - Exemplo prático
● 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;
44. O SQL - Exemplo prático
● Cláusula 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: Comparação de igualdade com múltiplos valores
SELECT * FROM INSCRICAO WHERE nome IN ('José','Maria','Silveira');
45. O SQL - Exemplo prático
● Cláusula WHERE
● LIKE: Comparação 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 posição (início, meio ou fim).
46. O SQL - Exemplo prático
● Cláusula WHERE
● Soma: +
UPDATE funcionarios SET salario = salario + 10;
Acrescenta R$ 10,00 ao salário dos funcionários.
● Subtração: -
UPDATE funcionarios SET salario = salario – 5 WHERE salario > 1000;
Subtrai R$ 5,00 do salário dos funcionários que ganham mais de R$ 1000,00.
● Multiplicação: *
UPDATE funcionarios SET salario = salario*1.1;
Aumenta o salário dos funcionários em 10%.
● Divisão: /
UPDATE funcionarios SET salario = salario + salario*(10/100);
Aumenta o salário dos funcionários em 10%.
● IS: Operador especial para comparação de igualdade. Este operador é usado para
comparação com o valor NULL.
SELECT nome FROM funcionarios WHERE celular IS NULL.
47. O SQL - Exemplo prático
● Cláusula 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 inscrição são 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.
● Multiplicação: *
UPDATE funcionarios SET salario = salario*1.1;
Aumenta o salário dos funcionários em 10%.
● NOT
SELECT nome FROM funcionarios WHERE NOT(salario < 1000);
Seleciona o nome dos funcionários que não possuem salário menor que 1000.
48. O SQL - Exemplo prático
● Junção de tabelas
● Usando a cláusula WHERE
SELECT * FROM REQUISICAO , LIVRO
WHERE REQUISICAO.LIVRO_idLIVRO = LIVRO.idLIVRO;
Para a junção de tabelas, sempre devem ser escritas as condições entre os campos que estão
relacionados nas tabelas. Geralmente, essas condições envolvem os campos que são chaves
estrangeiras de uma tabela e os que são chaves primárias da outra, porém nada impede de serem feitas
condições entre campos que não são chaves.
● Usando a cláusula JOIN
SELECT * FROM LIVRO INNER JOIN requisicao ON REQUISICAO.
LIVRO_idLIVRO = LIVRO.idLIVRO;
A cláusula INNER JOIN define que serão selecionados somente os registros de uma tabela que possuem
relação com os registros da outra tabela.
49. O SQL - Exemplo prático
● Junção de tabelas
● Usando a cláusula LEFT JOIN
SELECT requisicao.data_requisicao, inscricao.nome
FROM inscricao
LEFT JOIN requisicao ON requisicao.INSCRICAO_idINSCRICAO = inscricao.
idINSCRICAO;
Para interpretar o LEFT JOIN, faz-se a pergunta: qual tabela está à esquerda do JOIN? No comando acima, a tabela que
está à esquerda da cláusula JOIN é a tabela inscricao. Portanto, serão selecionados todos os registros da tabela inscricao
estando ou não relacionados com a tabela requisicao pelo camp o de chave primária.
● Usando a cláusula RIGHT JOIN
SELECT requisicao.data_requisicao, inscricao.nome
FROM inscricao
RIGHT JOIN requisicao ON requisicao.INSCRICAO_idINSCRICAO = inscricao.
idINSCRICAO;
Para interpretar o RIGHT JOIN, faz-se a pergunta: qual tabela está à direita do JOIN? A tabela requisicao. Portanto, serão
selecionados todos os registros da tabela requisicao que estão ou não relacionados com os registros da tabela inscricao.
50. O SQL - Exemplo prático
● Cláusula ORDER BY
Sintaxe:
SELECT ... ORDER BY <campo1>, <campo2>, <campoN> ... [desc|asc]
● Exemplos:
Seleciona os livros cujos títulos iniciam pela letra “a” e ordena a lista primeiramente pelo autor e, em seguida, pelos títulos dos livros.
SELECT * FROM livro WHERE titulo LIKE ‘a%’ ORDER BY autor,
titulo;
Seleciona todos os livros ordenando decrescentemente pelo título e, se houver repetição de valores, obedece à ordem crescente do autor.
SELECT * FROM livro ORDER BY titulo DESC, autor;
Seleciona todos os livros ordenando crescentemente pelo título e, se houver repetição de valores, obedece à ordem decrescente do nome do autor.
SELECT * FROM livro ORDER BY titulo, autor DESC;
51. Concluindo
● É importante possuir uma documentação mínima sobre o
banco de dados para poder se localizar e fazer a
manutenção do mesmo.
● Conhecer pelo menos um tipo de modelo de banco de
dados facilita a interatividade entre ferramentas e a
comunicação com os profissionais envolvidos com o
sistema.
● Decorar comandos não é o importante. O importante é
saber o funcionamento!