Prévia do material em texto
<p>INF - Banco de Dados</p><p>Prof. Rodolfo Migon Favaretto</p><p>T09 •SQL - DQL</p><p>• Comando SELECT</p><p>• Operadores lógicos (AND, OR e NOT)</p><p>• Consultas envolvendo várias tabelas</p><p>• Cláusulas diversas</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>Introdução ao SQL</p><p>SQL é dividida em 3 subconjuntos (principais):</p><p>• 1º DDL - Data Definition Language (Linguagem de Definição de Dados).</p><p>• 2º DML - Data Manipulation Language (Linguagem de Manipulação de Dados).</p><p>• 3º DQL - Data Query Language (Linguagem de Consulta de Dados).</p><p>2</p><p>SQL - Structured Query Language</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>Introdução ao SQL</p><p>SQL é dividida em 3 subconjuntos (principais):</p><p>• 1º DDL - Data Definition Language (Linguagem de Definição de Dados).</p><p>• 2º DML - Data Manipulation Language (Linguagem de Manipulação de Dados).</p><p>• 3º DQL - Data Query Language (Linguagem de Consulta de Dados).</p><p>3</p><p>SQL - Structured Query Language</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>A Linguagem de Consulta de Dados (ou DQL, Data Query Language) é usada</p><p>para obter informações da base de dados.</p><p>4</p><p>Linguagem de Consulta de Dados</p><p>SELECT</p><p>lista de atributos</p><p>FROM</p><p>lista de tabelas</p><p>WHERE</p><p>condições;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>5</p><p>Linguagem de Consulta de Dados</p><p>Para fins de entendimento, o seguinte banco de dados será utilizado no decorrer</p><p>da aula (BD_ACADEMICO):</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>6</p><p>Comando SELECT</p><p>Exemplo 1:</p><p>Listar o nome dos alunos.</p><p>SELECT nome FROM Alunos;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>7</p><p>Comando SELECT</p><p>Exemplo 2:</p><p>Listar o nome e o email dos</p><p>alunos.</p><p>SELECT nome, email FROM Alunos;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>8</p><p>Comando SELECT</p><p>Exemplo 3:</p><p>Listar todos os dados dos alunos.</p><p>• Com o asterisco * selecionamos</p><p>todos os campos da tabela.</p><p>SELECT * FROM Alunos;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>9</p><p>Comando SELECT (com condições)</p><p>Exemplo 4:</p><p>Listar todos os dados do aluno</p><p>de matricula 201365.</p><p>• Com o WHERE é possível definir as</p><p>condições para as consultas.</p><p>SELECT * FROM Alunos WHERE matricula = 201365;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>10</p><p>Comando SELECT (com condições)</p><p>Exemplo 5:</p><p>Listar o nome das disciplinas de</p><p>código maior ou igual a 5.</p><p>• Com o WHERE é possível definir as</p><p>condições para as consultas.</p><p>SELECT nome FROM Disciplinas WHERE codigo >= 5;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>11</p><p>Comando SELECT (operador lógico AND)</p><p>Exemplo 6:</p><p>Listar o nome e a sigla de todas</p><p>as disciplinas com carga horária</p><p>maior que 50 e menor que 100.</p><p>SELECT nome, sigla FROM Disciplinas</p><p>WHERE cargaHoraria > 50 AND cargaHoraria < 100;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>12</p><p>Comando SELECT (operador lógico OR)</p><p>Exemplo 7:</p><p>Listar o nome e a sigla de todas</p><p>as disciplinas com carga horária</p><p>de 45 ou 60 horas.</p><p>SELECT nome, sigla FROM Disciplinas</p><p>WHERE cargaHoraria = 45 OR cargaHoraria = 60;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>13</p><p>Comando SELECT (operador lógico NOT)</p><p>Exemplo 8:</p><p>Listar o nome e a sigla de todas</p><p>as disciplinas cuja carga horária</p><p>não seja de 60 horas.</p><p>SELECT nome, sigla FROM Disciplinas</p><p>WHERE NOT cargaHoraria = 60;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>14</p><p>Comando SELECT (várias tabelas)</p><p>Junção:</p><p>• Uma junção é uma operação para buscar dados de diversas linhas associadas</p><p>pela igualdade de campos (atributos);</p><p>• A consulta que acessa várias linhas da mesma tabela, ou de tabelas</p><p>diferentes, de uma vez, é chamada de consulta de junção;</p><p>• Sempre devemos relacionar a chave primária com a estrangeira.</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>15</p><p>Comando SELECT (várias tabelas)</p><p>BANCO_PANAS:</p><p>• Como listar dados de</p><p>um correntista e de</p><p>suas contas?</p><p>• Ou então, como listar</p><p>o endereço da</p><p>agência de uma</p><p>determinada conta?</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>16</p><p>Comando SELECT (várias tabelas)</p><p>Exemplo 9:</p><p>Listar o número das contas e o endereço da</p><p>agência onde cada conta está hospedada.</p><p>SELECT Contas.numero, Agencias.endereço</p><p>FROM Contas, Agencias</p><p>WHERE Agencias.numero = Contas.numero_agencia;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>17</p><p>Comando SELECT (várias tabelas)</p><p>Exemplo 10:</p><p>Listar o destinatário dos cheques e o número</p><p>da agência de cada cheque.</p><p>SELECT Cheques.destinatario, Contas.numero_agencia</p><p>FROM Cheques, Contas</p><p>WHERE Contas.numero = Cheques.numero_conta;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>18</p><p>Comando SELECT - ORDER BY</p><p>Exemplo 11:</p><p>Listar o destinatário e o valor dos cheques e</p><p>ordenar pelo valor (ordem crescente).</p><p>• Usamos a cláusula ORDER BY para ordenar o</p><p>resultado de uma consulta.</p><p>SELECT destinatario, valor FROM Cheques</p><p>ORDER BY valor;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>19</p><p>Comando SELECT - ORDER BY</p><p>Exemplo 12:</p><p>Listar o destinatário e o valor dos cheques e</p><p>ordenar pelo valor (ordem decrescente).</p><p>• Usamos a cláusula ORDER BY para ordenar o</p><p>resultado de uma consulta.</p><p>SELECT destinatario, valor FROM Cheques</p><p>ORDER BY valor DESC;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>20</p><p>Comando SELECT - DISTINCT</p><p>Exemplo 13:</p><p>Listar os destinatários de todos os cheques</p><p>sem repetir os que receberam vários cheques.</p><p>• Usamos a cláusula DISTINCT para eliminar os</p><p>valores repetidos de uma consulta.</p><p>SELECT DISTINCT destinatário FROM Cheques;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>21</p><p>Comando SELECT - BETWEEN</p><p>Exemplo 14:</p><p>Listar o destinatário e o valor de todos os</p><p>cheques com valor entre 300 e 800.</p><p>• Usamos a cláusula BETWEEN para especificar</p><p>intervalos numéricos e períodos entre datas.</p><p>SELECT destinatário, valor FROM Cheques</p><p>WHERE valor BETWEEN 300 AND 800;</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>22</p><p>Comando SELECT - IN</p><p>Exemplo 15:</p><p>Listar o destinatário e o valor de todos os cheques</p><p>cujo número da conta seja 1, 8, 23, 4 ou 12.</p><p>• Usamos a cláusula IN quando os valores a ser</p><p>comparados estão na forma de uma lista.</p><p>SELECT destinatário, valor FROM Cheques</p><p>WHERE numero_conta IN (1, 8, 23, 4, 12);</p><p>Disciplina: Banco de Dados</p><p>Prof. Rodolfo M. Favaretto</p><p>DQL</p><p>23</p><p>Comando SELECT - NOT IN</p><p>Exemplo 15:</p><p>Listar o destinatário e o valor de todos os cheques</p><p>de qualquer conta, exceto as contas 16, 22, 28 e 32.</p><p>• Usamos a cláusula NOT IN quando os valores a ser</p><p>comparados estão na forma de uma lista.</p><p>SELECT destinatário, valor FROM Cheques</p><p>WHERE numero_conta NOT IN (16, 22, 28, 32);</p>