Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Criando Instruções SQL Básicas Prof. Msc. Allan CostaProf. Msc. Allan Costa Importanto e exportando SQL • Importar – Mysql –h localhost –u root –p database-name < banco.sql • Exportar – Mysqldump –u root –p --opt database_name > banco.sql Catálogo CATCATÁÁLOGO RELACIONAMENTOS E ATRIBUTOSLOGO RELACIONAMENTOS E ATRIBUTOS NOME_RELNOME_REL NOME_ATRNOME_ATR TIPO_ATRTIPO_ATR MEMBRO_CPMEMBRO_CP MEMBRO_CH_ESTMEMBRO_CH_EST REL_CH_ESTREL_CH_EST EMPREGADO CPF VARCHAR(11) SIM NÃO EMPREGADO NOME VARCHAR(50) NÃO NÃO EMPREGADO DATA_NASC VARCHAR(6) NÃO NÃO EMPREGADO ENDERECO VARCHAR(100) NÃO NÃO EMPREGADO SEXO VARCHAR(1) NÃO NÃO EMPREGADO SALARIO INT NÃO NÃO EMPREGADO N_DEPART INT NÃO SIM DEPART EMPREGADO CPF_SUPERV VARCHAR(11) NÃO SIM EMPREGADO DEPART NUM_DEP INT SIM NÃO DEPART NOME_DEP VARCHAR(50) NÃO NÃO DEPART CPF_GER VARCHAR(11) NÃO SIM EMPREGADO DEPART DATA_IN_GER VARCHAR(6) NÃO NÃO PROJETO NUM_PROJ INT SIM NÃO PROJETO NOME_PROJ VARCHAR(100) NÃO NÃO PROJETO LOCALIZ VARCHAR(50) NÃO NÃO PROJETO NUM_DEPART INT NÃO SIM DEPART TRAB_PARA CPF_EMP VARCHAR(11) SIM SIM EMPREGADO TRAB_PARA NUM_PROJ INT SIM SIM PROJETO TRAB_PARA HORAS INT NÃO NÃO DEPEND CPF_RESP VARCHAR(11) SIM SIM EMPREGADO DEPEND NOME VARCHAR(50) SIM NÃO DEPEND SEXO VARCHAR(1) NÃO NÃO DEPEND DATA_NASC VARCHAR(6) NÃO NÃO Recursos das Instruções SELECT SQL SeleçãoProjeção Tabela 1 Tabela 2 Tabela 1Tabela 1 Junção Instrução SELECT Básica SELECT *|{[DISTINCT] coluna|expressão [apelido],...} FROM tabela; SELECT *|{[DISTINCT] coluna|expressão [apelido],...} FROM tabela; • SELECT identifica quais colunas • FROM identifica qual tabela SELECT * FROM departments; Selecionando Todas as Colunas Selecionando Colunas Específicas SELECT department_id, location_id FROM departments; Criando Instruções SQL • As instruções SQL não fazem distinção entre maiúsculas e minúsculas. • As instruções SQL podem estar em uma ou mais linhas. • As palavras-chave não podem ser abreviadas ou dividas de uma linha para outra. • Normalmente, as cláusulas são colocadas em linhas separadas. • Os recuos são usados para aperfeiçoar a legibilidade. Manipulando Dados DML (Data Manipulation Language) • Uma instrução DML é executada quando você: – Adiciona novas linhas a uma tabela – Modifica linhas existentes em uma tabela – Remove linhas existentes de uma tabela Adicionando uma Nova Linha a uma Tabela DEPARTMENTS Nova linha …insira uma nova linha na tabela DEPARTMENTS… A Sintaxe da Instrução INSERT • Adicione novas linhas a uma tabela usando a instrução INSERT. • Somente uma linha é inserida por vez com esta sintaxe. INSERT INTO tabela [(coluna [, coluna...])] VALUES (valor [, valor...]); INSERT INTO tabela [(coluna [, coluna...])] VALUES (valor [, valor...]); Inserindo Novas Linhas • Insira uma nova linha contendo valores para cada coluna. • Liste valores na ordem default das colunas na tabela. • Opcionalmente, liste as colunas na cláusula INSERT. • Coloque os valores de data e de caractere entre aspas simples. INSERT INTO departments(department_id, department_name, manager_id, location_id) VALUES (70, 'Public Relations', 100, 1700); 1 row created. INSERT INTO departments VALUES (100, 'Finance', NULL, NULL); 1 row created.1 row created. INSERT INTO departments (department_id, department_name ) VALUES (30, 'Purchasing'); 1 row created.1 row created. Inserindo Linhas com Valores Nulos • Método implícito: omite a coluna da lista de colunas. • Método explícito: especifica a palavra-chave NULL na cláusula VALUES. Alterando os Dados em uma Tabela EMPLOYEES Atualize linhas na tabela EMPLOYEES. A Sintaxe da Instrução UPDATE • Modifique linhas existentes com a instrução UPDATE. • Atualize mais de uma linha por vez, se necessário. UPDATE tabela SET coluna = valor [, coluna = valor, ...] [WHERE condição]; UPDATE tabela SET coluna = valor [, coluna = valor, ...] [WHERE condição]; • Uma ou mais linhas específicas serão modificadas se você especificar a cláusula WHERE. • Se você omitir a cláusula WHERE, todas as linhas da tabela serão modificadas. UPDATE employees SET department_id = 70 WHERE employee_id = 113; 1 row updated.1 row updated. Atualizando Linhas em uma Tabela UPDATE copy_emp SET department_id = 110; 22 rows updated. UPDATE copy_emp SET department_id = 110; 22 rows updated.22 rows updated. Delete uma linha da tabela DEPARTMENTS. Removendo uma Linha de uma Tabela DEPARTMENTS A Instrução DELETE Você pode remover linhas de uma tabela usando a instrução DELETE. DELETE [FROM] tabela [WHERE condição]; DELETE [FROM] tabela [WHERE condição]; • Se você especificar a cláusula WHERE, linhas específicas serão deletadas. • Se você omitir a cláusula WHERE, todas as linhas da tabela serão deletadas. Deletando Linhas de uma Tabela DELETE FROM departments WHERE department_name = 'Finance'; 1 row deleted. DELETE FROM departments WHERE department_name = 'Finance'; 1 row deleted.1 row deleted. DELETE FROM copy_emp; 22 rows deleted. DELETE FROM copy_emp; 22 rows deleted.22 rows deleted. • Criando Instruções SQL Básicas - SELECT Expressões Aritméticas Crie expressões com dados numéricos e de datas usando operadores aritméticos. Operador + - * / Descrição Adicionar Subtrair Multiplicar Dividir Usando Operadores Aritméticos SELECT last_name, salary, salary + 300 FROM employees; … Precedência de Operadores • A multiplicação e a divisão têm prioridade sobre a adição e a subtração. • Os operadores com a mesma prioridade são avaliados da esquerda para a direita. • Os parênteses são usados para forçar a avaliação priorizada e para esclarecer as instruções. *** /// +++ _ __ Precedência de Operadores SELECT last_name, salary, 12*salary+100 FROM employees; … Usando Parênteses SELECT last_name, salary, 12*(salary+100) FROM employees; … Definindo um Valor Nulo • Nulo é um valor que não está disponível, não é atribuído, é desconhecido ou não é aplicável. • Um valor nulo não é o mesmo que um zero ou um espaço em branco. SELECT last_name, job_id, salary, commission_pct FROM employees; … … SELECT last_name, 12*salary*commission_pct FROM employees; Valores Nulos nas Expressões Aritméticas As expressões aritméticas que contêm um valor nulo são avaliadas como nulas. … … Definindo um Apelido de Coluna Um apelido de coluna: • Renomeia um cabeçalho de coluna • É útil para cálculos • Segue imediatamente o nome da coluna. Também pode haver a palavra-chave AS opcional entre o nome da coluna e o apelido • Necessita de aspas duplas caso contenha espaços ou caracteres especiais ou faça distinção entre maiúsculas e minúsculas Usando Apelidos de Coluna SELECT last_name "Name", salary*12 "Annual Salary" FROM employees; SELECT last_name AS name, commission_pct comm FROM employees; … … Linhas Duplicadas A exibição default das consultas é de todas as linhas, incluindo linhas duplicadas. SELECT department_id FROM employees; SELECT department_id FROM employees; … Eliminando Linhas Duplicadas Elimine linhas duplicadas usando a palavra-chave DISTINCT na cláusula SELECT. SELECT DISTINCT department_id FROM employees; Exercício • Faca uma consulta para exibir todos os dados da tabela departamentos. • Crie uma consulta para exibir as idades exclusivas na tabela de empregados • De um aumento de 50%(salario) a todos os empregados, exiba um relatório com o nome do empregado, salário antigo e o salário novo. Renomei as colunas para salario_antigo e salario_novo. Respostas • SELECT * FROM DEPARTAMENTOS; • SELECT DISTINCT JOB_ID FROM EMPREGADOS; • SELECT NOME , SALARIO AS “SALARIO_ANTIGO”, SALARIO *1.5 AS “SALARIO_NOVO” FROM EMPREGADOS; Restringindo e Classificando Dados Limitando Linhas Usando uma Seleção "recuperar todos os funcionários do departamento 90" EMPLOYEES … Limitando as Linhas Selecionadas • Restrinja as linhas retornadas usando a cláusula WHERE. • A cláusula WHERE segue a cláusula FROM. SELECT *|{[DISTINCT] coluna|expressão [apelido],...} FROM tabela [WHERE condição(ões)]; Usando a Cláusula WHERE SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90; Strings de Caracteres e Datas • As strings de caracteres e valores de data aparecem entre aspas simples. • Os valores de caractere fazem distinção entre maiúsculas e minúsculas e os valores de data fazem distinção entre formatos. • O formato de data default é DD-MON-RR. SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'Whalen'; Condições de Comparação Operador = > >= < <= <> Significado Igual a Maior que Maior que ou igual a Menor que Menor que ou igual a Diferente de SELECT last_name, salary FROM employees WHERE salary <= 3000; Usando Condições de Comparação Condições Lógicas Operador AND OR NOT Significado Retorna TRUE se ambas as condições de componentes forem verdadeiras Retorna TRUE se uma das condições de componente for verdadeira Retorna TRUE se a condição seguinte for falsa Usando o Operador AND AND exige que ambas as condições sejam verdadeiras. SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 AND job_id LIKE '%MAN%'; Usando o Operador OR OR exige que uma das condições seja verdadeira.OR exige que uma das condições seja verdadeira. SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 OR job_id LIKE '%MAN%'; SELECT last_name, job_id FROM employees WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP'); Usando o Operador NOT SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date; Cláusula ORDER BY • Classifique linhas com a cláusula ORDER BY – ASC: ordem crescente, default – DESC: ordem decrescente • A cláusula ORDER BY aparece por último na instrução SELECT. … Classificando em Ordem Decrescente SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date DESC ; … • A ordem da lista ORDER BY é a ordem de classificação. • Você pode classificar por uma coluna que não esteja na lista SELECT. SELECT last_name, department_id, salary FROM employees ORDER BY department_id, salary DESC; Classificando por Várias Colunas …