Baixe o app para aproveitar ainda mais
Prévia do material em texto
SQL Básico: Teoria e Prática Um grande resumo... Um pouco de história Características básicas 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 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 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 Modelos lógicos Image: FreeDigitalPhotos.net Aluno Matrícula Nome Endereço Data Nascimento ● Um modelo é formado por: ○ Entidades ○ Atributos Atr ibu to i den tific ado r (Ch ave Pri má ria) Modelos lógicos Image: FreeDigitalPhotos.net Aluno: #Matrícula Nome Endereço Data Nascimento Out ra m ane ira de rep res ent ar 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 Relacionamentos ● DER Entidade 1 Entidade 2Um ou muitos Entidade 3 Um e somente um Um ou muitos Um ou nenhum E xem plo de rela cio nam ent o 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 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 Exemplos ● DER: Exemplo Cliente Cliente Pedido N Produto 1 1 1 Faz Detalhe Pedido FormaNNCompõe 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 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 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 Modelos Físicos ● Tipos de campos ○ Char(N) ○ Varchar(N) ○ Numeric(N,P) ○ Integer ○ Date ○ Time ○ TimeStamp N = Tamanho P = Precisão decimal Modelos Físicos 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. 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. 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. 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). 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. 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). 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, 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) ); 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 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) ); 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>; 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 prático O SQL - Exemplo prático 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 ); O SQL - Manipulando os dados ● A subdivisão da linguagem SQL denominada DML (Data Manipulation Language) é composta pelos seguintes comandos: ○ INSERT: Inclui registrona tabela. ○ UPDATE: Atualiza registros já existentes na tabela. ○ DELETE: Exclui registros da tabela. ○ SELECT: Recupera registros armazenados na tabela (uma ou mais, simultâneamente). 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 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. 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’. 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; 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; 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; 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; 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'); 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). 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. 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. 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. 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. 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; Concluindo ● É importante possuir uma documentação mínima sobre o banco de dados para poder se localizar e fazer a manutenção do mesmo. ● Conhecerpelo 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!
Compartilhar