Baixe o app para aproveitar ainda mais
Prévia do material em texto
Manual de introdução ao SQL Pedro Teixeira. Sistemas de Informação – Universidade Federal do Mato Grosso do Sul(UFMS) {Patrick Garcia de Freitas} patrickfreitas110@gmail.com {Pedro Teixeira} preisteixeira@gmail.com Resumo. Este artigo tem o objetivo de levar à introdução da Linguagem SQL e seu uso na prática, dando condições ao leitor da mesma de criar bancos e tabelas, editar bancos, tabelas e tuplas, inserir tuplas e dados e remover dados em qualquer Banco de Dados que faça uso desta linguagem (podendo haver mudanças na linguagem de acordo com o Banco). Sumário – 1. Introdução 2. Criando um Banco de Dados 3. Restrições 1 4. Inserindo Dados à Tabela 5. Alterações 6. Atualizações e Remoção de Dados 7. Select 8. Joins 9. Order By 10. Count 11. Group By e Funções Agregadas 12. Like 13. Between 14. Having 15. Conclusão 16. Referências 1 1. Introdução O SQL é utilizado quando se trabalha com bancos de dados, é utilizada em várias linguagens que reúnem o Structured Query Language seguindo o exemplo de SQL Server, Oracle, Mysql e etc. Atualmente o SQL é considerado o padrão para manipulação de dados em um banco de dados. A padronização do SQL é cuidada por duas entidades a ANSI (American National Standards Institute) e a ISO (International Standards Organization). 2. Criando um Banco de Dados A criação de um Banco de Dados é dada pelo comando CREATE DATABASE seguido do nome do banco, sendo sua sintaxe definida nesta forma: CREATE DATABASE BANCO; Feito isso nosso próximo passo é criar as tabelas que formarão nosso banco, faremos isso através do comando CREATE TABLE seguido do nome da tabela. Sua sintaxe será definida da seguinte forma: CREATE TABLE tabela; Na criação de cada tabela devemos acrescentar os atributos logo após o comando de criação da tabela, sendo que estes serão dispostos na tabela na ordem em que forem escritos no comando de criação. Os atributos devem ser precedidos pelo tipo de dados que será armazenado neste. CREATE TABLE tabela ( INTEGER atributo1, VARCHAR(30) atributo2, DATE atributo3, BIT atributoN 2 ); Os atributos devem ser separados por vírgula e estar entre parênteses, devendo haver um ponto e vírgula ao fim do comando (isto vale para todos os comandos em linguagem SQL). Não sendo necessário a utilização da vírgula após o ultimo atributo. Caso seja necessário, deve- se incluir a quantidade de caracteres aceitos pelo atributo entre parênteses. Este comando deverá gerar uma tabela com o seguinte aspecto: atributo1 atributo2 atributo3 atributo4 Como foi citado anteriormente, os atributos estarão dispostos na tabela na ordem em que foram inclusos no código. 3. Restrições 1 Ao criar nosso Banco de Dados, nós podemos criar restrições que obriguem o usuário a inserir apenas valores válidos ao nosso banco, como por exemplo o bom uso dos tipos de atributos. Entretanto isso nem sempre é o suficiente, nesse caso nos utilizamos restrições, que são formas de garantir a integridade do nosso banco e a validade das suas informações. Algumas dessas restrições podem ser incluídas ao criarmos a tabela, como por exemplo o NOT NULL, que restringe q a tupla seja criada sem que este atributo receba algum valor válido. O NOT NULL é muito útil caso haja algum atributo que deva obrigatoriamente ser preenchido como no caos de login e senha, Nome de usuário, código ou nome de algum produto, enfim. Outra cláusula muito utilizada, e necessária, é o comando UNIQUE, este é utilizado para que um determinado atributo possa receber um valor apenas uma vez, ou seja se a sua tabela recebeu um valor “Pedro” em um atributo login, e este esteja utilizando a clausula UNIQUE, o valor “Pedro” nesta tabela será único, como o nome sugere o atributo não poderá receber mais de uma vez o mesmo valor. Vejamos como fica a sintaxe das duas cláusulas deste tópico: CREATE TABLE funcionário ( INTEGER codigo NOT NULL UNIQUE, VARCHAR(30) nome NOT NULL, DATE data_de_registro, 3 BIT sexo ); Como podemos observar no Exemplo um mesmo atributo pode receber as duas cláusulas, neste caso o atributo “codigo” deverá ser único em toda a tabela e não pode receber o valor nulo, ou seja deve ser preenchido com um valor válido. Podemos ainda criar chaves para que sejam mais fáceis as restrições e as pesquisas, vejamos como criar uma chave primaria: CREATE TABLE funcionário ( INTEGER codigo PRIMARY KEY, VARCHAR(30) nome NOT NULL, DATE data_de_registro, BIT sexo ); Como pudemos observar a cláusula PRIMARY KEY (chave primária), não recebe as cláusulas NOT NULL e UNIQUE, por ser obrigatoriamente única e não nula. Ainda utilizando as chaves vamos observar a utilização de chaves estrangeiras em uma outra tabela: CREATE TABLE dependentes ( INTEGER codigo_funcionario NOT NULL, INTEGER codigo_dependente PRIMARY KEY, VARCHAR(30) nome NOT NULL, DATE nome_funcionário, BIT sexo, FOREIGN KEY (codigo_funcionario) REFERENCES funiconario(codigo) ); Se observarmos o exemplo podemos observar a chave estrangeira “código_funcionario” (FOREING KEY), porém para que esta funcione de forma a fazer a referência correta devemos acrescentar uma linha extra à nossa query,nessa linha nós dizemos que a nossa chave estrangeira faz referência (REFERENCES) ao atributo “código” da tabela “funcionário”. Podemos fazer também esta referência através de uma constraint, que vai nos ajudar a manter a integridade do nosso banco, vamos ver: 4 CREATE TABLE qualificação( INTEGER código_funcionario NOT NULL, cargo VARCHAR(30) NOT NULL, SETOR VARCHAR(30), CONSTRAINT pk_codigo PRIMARY KEY (código_funcionário) REFERENCES funcionario (código) ); Ao declarar uma constraint nós devemos dar a ela um nome (CONSTRAINT nome), referenciar qual será a chave de referencia na própria como chave primária (PRIMARY KEY atributo_chave) e referenciar qual tabela e qual o atributo será o parâmetro de referencia (REFERENCES tabela 2 (atributo_chave_t2)). Ficando assim uma fórmula genérica: CONSTRAINT nome PRIMARY KEY atributo_chave REFERENCES tabela 2 (atributo_chave_t2) Dado isto já podemos começar a preencher nossa tabela. 4. Inserindo Dados à Tabela Após criada a nossa tabela nós podemos preenche-la, para isso utilizamos o comando INSERT, este deve receber alguns parâmetros para inserir os valores nas tuplas corretamente, por exemplo para determinar em qual tabela o valor será inserido utilizamos o comando INTO seguido do nome da tabela: INSERT INTO tabela. E definimos os parâmetros a serem inseridos na ordem em que eles ficaram dispostos na tabela através da clausula VALUES. Neste caso a sintaxe fica assim: INSERT INTO tabela VALUES ( 115172, Varcharexemplo, 01/01/2015, 0 ); Nós também podemos especificar em que ordem queremos inserir os atributos, para isso definimos a ordem deles antes da clausula VALUES: INSERT INTO tabela 5 (atributo3,atributo2,atributo4,atributo1) VALUES ( 01/01/2015, 115172, 0, Varcharexemplo ); Desta mesma forma podemos definir quais atributos queremos inserir, ou seja nós podemos especificar quais atributos queremos inserir à tabela, sem a obrigatoriedade de inserirtodos eles todas as vezes que desejarmos inserir um valor, basta definirmos quais atributos vamos inserir e através da clausula VALUES inserir apenas os valores necessários: INSERT INTO tabela (atributo2) VALUES (115172); 5. Alterações Após criarmos um banco de dados nós podemos modificar sua configuração sem que seja necessário criar um novo banco ou uma nova tabela, para isso usaremos o comando ALTER que deve ser seguido de o que desejamos alterar. Vamos começar inserindo um atributo à tabela com a cláusula ADD: ALTER TABLE nome_da_tabela ADD nome_do_atributo tipo; Como se pode ver devemos indicar em qual tabela faremos a alteração e adicionar (ADD) o atributo, declarando seu tipo. Podemos ainda alterar o tipo de atributo da tabela, neste caso utilizaremos a clausula ALTER COLUMN: ALTER TABLE nome_tabela ALTER COLUMN nome_do_atributo novo_tipo; A única observação é que neste caso devemos declarar o tipo de atributo que desejamos que substitua o antigo. No caso de deletar um atributo utilizamos o DROP COLUMN: 6 ALTER TABLE nome_tabela DROP COLUMN nome_atributo; Para Alterar o nome da tabela usamos o RENAME TABLE TO: RENAME TABLE nome_tabela TO novo_nome_tabela; Em alguns Bancos pode-se encontrar esta sintaxe: ALTER TABLE nome_tabela RENAME TO novo_nome_tabela; Para alterar o nome do banco de dados a sintaxe é bem parecida: ALTER DATABASE nome_banco RENAME TO novo_nome; 6. Atualizações e Remoção de Dados Após criar e customizar nossa tabela nós ainda precisaremos alterar as informações nela contidas. Para isso faremos uso do comanto UPDATE, ou seja não estaremos alterando e sim atualizando a nossa tabela, mudando valores que já haviam sido inseridos anteriormente. Entretanto para que isso funcione é necessário que seja passado um parâmetro para que o banco identifique qual é a tupla e o atributo a ser alterado para isso utilizaremos as clausulas SET e WHERE: UPDATE nome_tabela SET atributo1=valor1, atributo2=valor2; WHERE atributo=valorX; Como podemos observar a cláusula SET é onde iremos definir qual atributo irá receber novos valores e a clausula WHERE é onde iremos informar qual a condição onde deve ser feita a atualização. Para remover alguma tupla da nossa tabela usamos o comando DELET da seguinte forma: DELET FROM tabela; Para especificar quais tuplas devem ser removidas podemos utilizar a clausula WHERE e inserir uma condição para que as tuplas sejam removidas: 7 DELET FROM tabela WHERE condição; 7. Select Após concluirmos a parte estrutural do banco nós iremos trabalhar com ele e começaremos pelo comando SELECT. O comando SELECT tem a função de pesquisar entre a tabela as tuplas que atendem a uma determinada condição, sua sintaxe genérica seria: SELECT * FROM tabela; Essa pesquisa retorna todas as tuplas de uma tabela, o caractere especial ‘*’ indica que não foi especificado nenhum atributo, portanto todos eles retornam no resultado da pesquisa. Para especificar um ou mais atributos devemos inserir eles na seleção desta forma: SELECT atributo1,atributo2,... FROM tabela; Também podemos selecionar tuplas específicas, determinando um parâmetro que identifique-a através da cláusula WHERE: SELECT * FROM tabela WHERE condição; Com esta cláusula podemos comparar um ou mais atributo com algum valor desejado: SELECT * FROM tabela WHERE atributo1=valor1 OR atributo2=valor2 Observe que foi utilizado a clausula OR (ou) que indica que a pesquisa deve retornar valores onde qualquer uma das duas condições seja verdadeira, também é válido o AND (e) onde as duas condições devem ser atendidas. Podemos também selecionar na tabela apenas as tuplas onde um ou mais atributos não possuam valores repetidos, para isso utilizamos o DISTINCT: SELECT DISTINCT atributo1, atributo2 FROM tabela; 8 8. Join O join é o comando responsável pela união de tabelas para que possamos visualizar e pesquisar itens em duas ou mais tabelas utilizando uma condição, por exemplo: SELECT * FROM tabela1 JOIN tabela2; Para identificar quais atributos devem ser exibidos utilizamos o comando SELECT: SELECT atributo1,atributoF FROM tabela1 JOIN tabela2 ON atributo1 = atributoF; Isso retornará os atributos ‘atributo1’ e ‘atributoF’ em todas as tuplas onde ‘atributo1’ for igual ao ‘atributoF’, caso não exista correspondência de uma tabela na outra ele não retornara nada, para criar esta condição utilizamos a clausula ON seguida da condição desejada, entretanto esta impede que ele seja mais complexo do que isso. Caso seja necessário podemos utilizar mais de uma cláusula para filtrar mais, como as cláusulas WHERE e DISTINCT, que já estudamos nos SELECTS. O comando JOIN ou INNER JOIN são comandos de equivalência, ou seja todas as tabelas que serão unidas tem o mesmo peso e valor na pesquisa. LEFT JOIN e RIGHT JOIN são usados caso seja necessário que retornem na pesquisa todos os itens da tabela direita (RIGHT JOIN) ou da tabela da esquerda (LEFT JOIN), além, claro dos itens correspondentes à pesquisa. Ou seja, ao contrário do INNER JOIN, estes dois fazem uma pesquisa onde uma tabela retorna todos os seus valores independente de satisfazer ou não a condição, e a outra retorna apenas quando a satisfaz. Onde não houver itens correspondentes, de uma tabela à outra, os campos serão preenchidos com o valor nulo (NULL). FULL OUTER JOIN, ou só FULL JOIN e usado quando você há a necessidade de retornar tudo de todas as tabelas, a partir da validade da condição que foi utilizada, como por exemplo: SELECT atributo1,atributoF FROM tabela1 FULL OUTER JOIN tabela2 ON atributo1=atributoF; 9 Isso vai relacionar todas as colunas de ambas as tabelas onde a condição for satisfeita. 9. Union Usado para unir o resultado de dois os mais Select’s, muito parecido com os Joins já apresentados mais ele necessita que ambas tabelas tenham as os mesmos tipos de atributos e estejam na mesma ordem: SELECT atributo1,atributo2,atributo3 FROM table1 UNION SELECT atributoF,atributoS,atributoT; O UNION suprime todos os resultados repetidos, eliminando todas as tuplas repetidas, caso queira os resultados repetidos terá de usar o UNNION ALL: SELECT atributo1, atributo2, atributo3 FROM table1 UNION ALL SELECT atributoF, atributoS, atributoT; 10. Order by O comando Order By tem a função de ordenar o resultado dos Select à partir de uma determinada condição, caso sejam numérico temos ASC (acendente) e DESC (descendente): SELECT atributo1,atributo2,atributo3 FROM table1 ORDER BY atributo1 ASC; SELECT atributoF,atributoS,atributoT FROM table2 ORDER BY atributoF DESC; Ou só pelo atributo escolhido, neste caso ele irá ordenar na ordem crescente (ascendente): SELECT atributo1,atributo2,atributo3 FROM table1 ORDER BY atributo1; Podemos ainda usar ASC e DESC ao mesmo tempo: SELECT atributo1,atributo2,atributo3 FROM table1 UNION ALL SELECT atributoF,atributoS,atributoT ORDER BY atributo1 ASC, atributoT DESC; 10 Neste caso seria ordenado primeiramente pelo ‘atributo1’ (ascendente) e logo depois pelo ‘atributoT’ (descendente). 11. Count O comando COUNT conta um determinado atributo, e devolve esta contagem na forma de outro atributo. Quando não há qualquer espéciede condição ele conta a quantidade de linhas de uma coluna: SELECT COUNT atributo1 FROM tabela1; Entretanto este comando pode ser usado junto com as clausulas DISTINCT para não contar valores repetidos, ou WHERE para determinar uma condição, conforme já vimos anteriormente. SELECT COUNT atributo1 FROM tabela1 WHERE atributo1=100; 12. Group by e Funções Agregadas Este tem uso semelhante ao Order By, que pode ser usado em conjunto. o GROUP BY serve para agrupar os valores que se repetem nas colunas, utilizando como parâmetro o próprio atributo: SELECT * FROM tabela GROUP BY atributoX; ELE funciona em conjunto com algumas das funções agregadoras, sendo elas o AVG() que retorna a média aritmética, o MAX() que retorna o valor máximo, o MIN() o valor mínimo, o FIRST() traz o primeiro valor, o LAST() o último valor, SUM() a somados valores da coluna, e COUNT() anteriormente explicado. Agora alguns exemplos: SELECT MAX(atributo1) FROM tabela1; SELECT MIN(atributo2) FROM tabela1; SELECT LAST(atributo3) FROM tabela1; SELECT FIRST(atributoT) FROM tabela2; SELECT AVG(atributoF) FROM tabela2; SELECT SUM(atributoF) FROM tabela2; Agora usado em conjunto com o Order By: 11 SELECTatributo1,atributo2,atributo3 FROM table1 GROUP BY(atributo1) ORDER BY (atributo3); 13. Like O operador Like e usado em conjunto com o WHERE para buscar em tuplas valores que você tem exatamente certeza do que é, mais e algo e parecido, com por exemplo, você sabe que tem nomes na coluna, então você quer todos os que se parecem com Pedro, então você faz uma busca parecida com isso: SELECT atributo2 FROM table1 WHERE atributo2 LIKE 'Pe%”; 14. Between O operador Between tem funcionamento parecido com o Like, usado junto com WHERE, só que nele você quer todos os valores entre uma faixa que você define como esta aqui: SELECT atributo1 FROM table1 WHERE atributo1 BETWEEN 7 AND 17; 15. Having A cláusula Having é usada junto com WHEERE para possibilitar usar alguma função de agregação como o neste exemplo: SELECT atributo1 FROM table 1 JOIN ON table2 WHERE atributo1=atributoF HAVING COUNT (atributo1)>5; 16. Conclusão A linguagem SQL nos permite uma gama enorme de possibilidades, ela foi criada com a intenção de padronizar e simplificar o uso e a manipulação de dados, entretanto é necessário um conhecimento mínimo sobre banco de dados para que seja feito o bom e correto uso dessa linguagem e suas ferramentas. Este Artigo não traz à pratica a criação de um banco de dados real, com esquemas e relacionamentos, nosso objetivo é de apresentar o básico sobre a Linguagem de Consulta Estruturada (SQL) e suas funções. 12 17. Referências Souza, Marco Aurelio de (2004) “Mais sobre Sql , Pl / Sql , Sql Plus - Manual de Referência Completo e Objetivo”, Editora Ciencia Moderna. Junior, Ary dos Saton Rocha (2013) “SQL Passo a Passo”, Editora Ciencia Moderna. Site: “http://www.w3schools.com/sql/default.asp”, Acesso: junho de 2015.
Compartilhar