Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sql básico - Teoria e prática: Um grande resumo

9,725 views

Published on

Workshop ministrado na empresa Hipcom Informática. Apanhado geral sobre SQL.

Published in: Education

Sql básico - Teoria e prática: Um grande resumo

  1. 1. SQL Básico: Teoria e Prática Um grande resumo...
  2. 2. Um pouco de história
  3. 3. Características básicas
  4. 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. 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. 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
  7. 7. Modelos lógicos Image: FreeDigitalPhotos.net Aluno Matrícula Nome Endereço Data Nascimento ● Um modelo é formado por: ○ Entidades ○ Atributos Atributo identificador (Chave Primária)
  8. 8. Modelos lógicos Image: FreeDigitalPhotos.net Aluno: #Matrícula Nome Endereço Data Nascimento Outra maneira de representar
  9. 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. 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. 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. 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. 13. Exemplos ● DER: Exemplo Cliente Cliente Pedido N Produto 1 1 1 Faz Detalhe Pedido Forma NN Compõe
  14. 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. 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. 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. 17. Modelos Físicos ● Tipos de campos ○ Char(N) ○ Varchar(N) ○ Numeric(N,P) ○ Integer ○ Date ○ Time ○ TimeStamp N = Tamanho P = Precisão decimal
  18. 18. Modelos Físicos
  19. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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;
  33. 33. O SQL - Exemplo prático
  34. 34. O SQL - Exemplo prático
  35. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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!

×