Baixe o app para aproveitar ainda mais
Prévia do material em texto
PL SQL Básico https://www.techonthenet.com/oracle/exists.php PL SQL - Básico Objetivo: Possuir familiaridade com conceitos básicos e técnicos de PL SQL Data Manipulation Language (DML) Statements DELETE INSERT SELECT UPDATE ----------------- GROUP BY ORDER BY DISTINCT JOINs LIKE UNION UNION ALL SUBQUERIES MINUS BETWEEN EXISTS NOT IS NULL IS NOT NULL HAVING AND e OR DECODE NVL SELECT A declaração Oracle SELECT é usada para recuperar registros de uma ou mais tabelas em um banco de dados Oracle. SELECT [DADOS] FROM [TABELAS] < WHERE [CONDIÇÃO] > INSERT A instrução Oracle INSERT é usada para inserir uma única gravação ou vários registros em uma tabela no Oracle. INSERT INTO <NOME> (COLUNAS) VALUES (VALORES) INSERT INTO table (column1, column2, ... column_n ) VALUES (expression1, expression2, ... expression_n ); DELETE A declaração Oracle DELETE é usada para excluir um único registro ou vários registros de uma tabela no Oracle. DELETE FROM table [WHERE conditions]; Exemplo: DELETE FROM customers WHERE last_name = 'Smith'; UPDATE A instrução UPDATE do Oracle é usada para atualizar registros existentes em uma tabela em um banco de dados Oracle. Existem 2 sintaxes para uma consulta de atualização no Oracle, dependendo se você está realizando uma atualização tradicional ou atualizando uma tabela com dados de outra tabela. UPDATE table SET column1 = expression1, column2 = expression2, ... column_n = expression_n [WHERE conditions]; UPDATE table1 SET column1 = (SELECT expression1 FROM table2 WHERE conditions) [WHERE conditions]; GROUP BY A cláusula GROUP BY do Oracle é usada em uma instrução SELECT para coletar dados em vários registros e agrupar os resultados por uma ou mais colunas. SELECT category, COUNT(*) AS "Number of suppliers" FROM suppliers WHERE available_products > 45 GROUP BY category; ORDER BY A cláusula Oracle ORDER BY é usada para ordenar os registros em seu conjunto de resultados. A cláusula ORDER BY só pode ser usada em instruções SELECT SELECT supplier_city FROM suppliers WHERE supplier_name = 'Microsoft' ORDER BY supplier_city ASC; DISTINCT A cláusula Oracle DISTINCT é usada para remover duplicidades do conjunto de resultados. A cláusula DISTINCT só pode ser usada com instruções SELECT. SELECT DISTINCT city, state FROM customers WHERE total_orders > 10 ORDER BY city; JOINs Oracle JOIN é usado para recuperar dados de várias tabelas. Um Oracle JOIN é executado sempre que duas ou mais tabelas são unidas em uma instrução SQL. Existem 4 tipos diferentes de junções Oracle: Oracle INNER JOIN (ou às vezes chamado de junção simples) Oracle LEFT OUTER JOIN (ou às vezes chamado LEFT JOIN) Oracle RIGHT OUTER JOIN (ou às vezes chamado RIGHT JOIN) Oracle FULL OUTER JOIN (ou às vezes chamado FULL JOIN) INNER JOIN É o tipo de associação mais comum. Oracle INNER JOIN retorna todas as linhas de várias tabelas onde a condição de junção é atendida. SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column; LEFT OUTER JOIN Esse tipo de associação retorna todas as linhas da tabela ESQUERDA especificada na condição ON e apenas as linhas da outra tabela em que os campos da junção são iguais (a condição de junção é atendida). SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date FROM suppliers LEFT OUTER JOIN orders ON suppliers.supplier_id = orders.supplier_id; RIGHT OUTER JOIN Este tipo de união retorna todas as linhas da tabela DIREITA especificada na condição ON e apenas as linhas da outra tabela em que os campos da junção são iguais (a condição de junção é atendida). SELECT orders.order_id, orders.order_date, suppliers.supplier_name FROM suppliers RIGHT OUTER JOIN orders ON suppliers.supplier_id = orders.supplier_id; FULL OUTER JOIN Esse tipo de associação retorna todas as linhas da tabela ESQUERDA e da tabela DIREITA com nulos no lugar onde a condição de junção não é atendida. SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date FROM suppliers FULL OUTER JOIN orders ON suppliers.supplier_id = orders.supplier_id; LIKE Enquanto o operador de igualdade (=) corresponde exatamente a um valor de caractere para outro, as condições LIKE combinam uma parte de um valor. SELECT last_name FROM customers WHERE last_name LIKE 'Ap%'; SELECT supplier_name FROM suppliers WHERE supplier_name LIKE 'Sm_th'; SELECT * FROM suppliers WHERE account_number LIKE '92314_'; UNION Usado para combinar os conjuntos de resultados de 2 ou mais instruções Oracle SELECT. Ele remove as linhas duplicadas entre as várias instruções SELECT. Cada instrução SELECT dentro do operador UNION deve ter o mesmo número de campos nos conjuntos de resultados com tipos de dados semelhantes. SELECT supplier_id FROM suppliers UNION SELECT supplier_id FROM order_details; UNION ALL O operador Oracle UNION ALL é usado para combinar os conjuntos de resultados de 2 ou mais instruções SELECT. Ele retorna todas as linhas da consulta e não remove as linhas duplicadas entre as várias instruções SELECT. SELECT supplier_id FROM suppliers UNION ALL SELECT supplier_id FROM order; SUBQUERIES No Oracle, uma subconsulta é uma consulta dentro de uma consulta. Você pode criar subconsultas dentro de suas instruções SQL. Essas subconsultas podem residir na cláusula WHERE, na cláusula FROM ou na cláusula SELECT. WHERE SELECT * FROM all_tables tabs WHERE tabs.table_name IN (SELECT cols.table_name FROM all_tab_columns cols WHERE cols.column_name = 'SUPPLIER_ID'); SUBQUERIES FROM SELECT suppliers.name, subquery1.total_amt FROM suppliers, (SELECT supplier_id, SUM(orders.amount) AS total_amt FROM orders GROUP BY supplier_id) subquery1 WHERE subquery1.supplier_id = suppliers.supplier_id; SUBQUERIES SELECT SELECT tbls.owner, tbls.table_name, (SELECT COUNT(column_name) AS total_columns FROM all_tab_columns cols WHERE cols.owner = tbls.owner AND cols.table_name = tbls.table_name) subquery2 FROM all_tables tbls; MINUS É usado para retornar todas as linhas na primeira instrução SELECT que não são retornadas pela segunda instrução SELECT. SELECT supplier_id FROM suppliers MINUS SELECT supplier_id FROM orders; BETWEEN A condição Oracle BETWEEN é usada para recuperar valores dentro de um intervalo em uma instrução SELECT, INSERT, UPDATE ou DELETE. SELECT * FROM order_details WHERE order_date BETWEEN TO_DATE ('2014/02/01', 'yyyy/mm/dd') AND TO_DATE ('2014/02/28', 'yyyy/mm/dd'); EXISTS É usada em combinação com uma subconsulta e é considerada "a ser atendida" se a subconsulta retornar pelo menos uma linha. SELECT * FROM customers WHERE EXISTS (SELECT * FROM order_details WHERE customers.customer_id = order_details.customer_id); NOT A condição Oracle NOT (também chamada de Operador NOT) é usada para negar uma condição em uma instrução SELECT, INSERT, UPDATE ou DELETE. SELECT * FROM customers WHERE customer_name NOT IN ( 'IBM', 'Hewlett Packard', 'Microsoft' ); IS NULL A condição Oracle IS NULL é usada para testar um valor NULL. Você pode usar a condição Oracle IS NULL em uma instrução SQL ou em um bloco de código PLSQL. INSERT INTO suppliers (supplier_id, supplier_name) SELECT account_no, name FROM customers WHERE city IS NULL; IS NOT NULL A condição Oracle IS NOT NULL é usada para testar um valor NOT NULL. Você pode usar a condição Oracle IS NOT NULL em uma instrução SQL ou em um bloco de código PLSQL. INSERT INTO suppliers (supplier_id, supplier_name) SELECT account_no, name FROM customers WHERE city IS NOT NULL; HAVING A cláusula Oracle HAVING é usada em combinação com a cláusula GROUP BY para restringir osgrupos de linhas retornadas a apenas aqueles cuja condição é VERDADEIRA. SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE salary < 49500 GROUP BY department HAVING COUNT(*) > 10; AND e OR A condição Oracle AND e OR podem ser combinadas em uma instrução SELECT, INSERT, UPDATE ou DELETE. Ao combinar essas condições, é importante usar parênteses para que o banco de dados saiba qual ordem avaliar cada condição. (Assim como quando você estava aprendendo a ordem das operações na aula de Matemática!) INSERT INTO suppliers (supplier_id, supplier_name) SELECT account_no, customer_name FROM customers WHERE (customer_name = 'Apple' OR customer_name = 'Samsung') AND customer_id > 20; DECODE A função DECODE Oracle / PLSQL possui a funcionalidade de uma instrução IF-THEN-ELSE. SELECT supplier_name, DECODE(supplier_id, 10000, 'IBM', 10001, 'Microsoft', 10002, 'Hewlett Packard', 'Gateway') result FROM suppliers; NVL A função Oracle / PLSQL NVL permite substituir um valor quando um valor nulo é encontrado. SELECT NVL(supplier_city, 'n/a') FROM suppliers; Executing
Compartilhar