BANCO DE DADOS 1: AULA 6
OBJETIVOS
• Entender o que é SQL e sua importância como padrão de linguagem estruturada de acesso a bancos de dados
• Conhecer a classificação dos comandos SQL de acordo com as suas funções
• Dominar os comandos SQL
AGENDA
• COMANDOS SQL
• LINGUAGEM DE MANIPULAÇÃO DE DADOS
• INSERT
• SELECT
• CLÁUSULA AS
• ORDER BY
• BETWEEN
• OPERAÇÕES DE CONJUNTOS
• SEQUENCE
TABELAS
•
Professor(id_prof, nome, titulacao)
•
Aluno (matricula, nome, sexo)
•
Disciplina(id_disc, carga, nome, id_prof, id_curso)
•
Curso(id_curso, nome)
•
Cursa(matricula, id_disc, nota1, nota2, nota3)
LINGUAGEM DE MANIPULAÇÃO
DE DADOS (DML)
•
Insert
• Insere novos registros em uma tabela
•
Select
• Seleciona dados de uma ou mais tabelas
•
Delete
• Exclui dados presentes em uma tabela
•
Update
• Atualiza dados já armazenados em uma tabela
INSERT
• Os valores informados serão inseridos nas colunas de acordo com sua disposição na tabela
6
INSERT INTO Aluno( matricula, nome, sexo)
VALUES (3, ‘Camila’, ‘F’)
Matricula Nome Sexo
1 Ana F
2 Bruno M
Matricula Nome Sexo
1 Ana F
2 Bruno M
EXERCÍCIO 1
•
Inserir
aluno
•
Nome: Fábio
•
Sexo: M
•
Matrícula: 15
•
Inserir
professor
•
Nome: Paulo
•
Id professor: 14
•
Titulação: Mestre
•
Inserir
curso
•
Nome: Matemática
•
ID: 4
EXERCÍCIO 1
• Inserir disciplina
• Nome: Álgebra
• Carga: 40
• Id disciplina: 11
• Id professor: 14 (prof. Paulo)
• Id curso: 4 (Matemática)
8
•
Inserir
cursa
• Matricula: 15 (Fábio)
• Id disciplina: 11 (Álgebra)
• Nota1: 7
ÁLGEBRA RELACIONAL: SELEÇÃO
• Seleciona tuplas que satisfaçam à condição de seleção
• σ matricula = 1 (Aluno)
Nome Matricula
Ana 1
Bruno 2
ÁLGEBRA RELACIONAL:
PROJEÇÃO
• Projeta as colunas solicitadas
• π nome (Aluno)
Nome Matricula
Ana 1
Bruno 2
ÁLGEBRA RELACIONAL:
PRODUTO CARTESIANO
• Combina tuplas de duas relações
Curso Id_curso Ciência da Computação 1 Engenharia da Computação 2
Id_disc Carga Nome Id_prof Id_curso
1 20 Banco de Dados 1 1
2 30 Engenharia de Software
ÁLGEBRA RELACIONAL:
PRODUTO CARTESIANO
curso
Id_curso Id_disc carga nome Id_prof Id_cursoCiência da Computação
1 1 20 Banco de Dados 1 1
Ciência da Computação
1 2 30 Eng. Software 2 2
Engenharia da Computação
2 1 20 Banco de Dados 1 1
Engenharia da Computação
2 2 30 Eng. Software 2 2
SELECT
–
FROM
–
WHERE (SQL)
Álgebra Relacional
SQL
Projeção (π)
SELECT
Produto cartesiano
FROM
Seleção (σ) WHERE
SELECT <lista de atributos>
SELECT
–
FROM
–
WHERE (SQL)
Permite
visualizar
,
consultar
,
pesquisar
ou
selecionar
os dados de uma
tabela
•
A instrução SELECT é composta por três cláusulas: SELECT , FROM e
WHERE
•
<lista de atributos>
compõe a lista de atributos que se deseja
consultar (um ou vários, separados por vírgula). Quando se deseja
consultar todos os atributos, substitui-se por um asterisco (*)
•
<lista de tabelas>
informa de qual (ou quais) tabelas os dados serão
recuperados
14
SELECT <lista de atributos>
SELECT
–
FROM
–
WHERE (SQL)
•
A opção WHERE, que é
opcional
, define as
condições
que um
determinado registro deve satisfazer para qualificar a recuperação
dos seus dados. Ela
limita os resultados
, exibindo somente os dados
que são compatíveis com a condição estabelecida
SELECT DISTINCT
• A cláusula SELECT permite duplicatas nas relações bem como nos resultados de consulta
• Inserir o comando SELECT DISTINCT para forçar a eliminação de duplicatas na relação
• SELECT ALL especifica que as duplicatas não serão removidas
EXERCÍCIO 2
1. Selecionar todos os alunos
2. Selecionar as matrículas dos alunos
3. Selecionar todas as alunas
4. Selecionar todos os professores
5. Selecionar as disciplinas e os respectivos cursos (distinct)
ORDER BY
• Ordena as tuplas que aparecem no resultado de uma consulta
• ASC – ordem crescente
• DESC – ordem decrescente
18
SELECT <lista de atributos>
FROM <lista de tabelas>
EXERCÍCIO 3
1. Ordenar notas dos alunos em ordem decrescente 2. Listar todos os alunos pela ordem alfabética
3. Selecionar os alunos e suas respectivas notas nas disciplinas cursadas, ordenado pelo nome do aluno
CLÁUSULA AS
•
Renomeia atributos
• Deve aparecer na cláusula SELECT
20
SELECT
nome
AS
nome_aluno
CLÁUSULA FROM
• Produto cartesiano da Álgebra Relacional
• A cláusula FROM lista todas as relações envolvidas na pesquisa
• Variáveis de tupla podem ser definidas na cláusula FROM por meio da cláusula AS
21
SELECT
*
FROM
Aluno, professor
SELECT
a.nome, nota1
FROM
Aluno
AS
a, Disciplina
AS
d, Cursa
AS
c
CLÁUSULA WHERE
• WHERE especifica condições que o resultado precisa fazer
• Predicado de seleção da álgebra relacional
• Os resultados da comparação podem ser combinados usando os conectivos lógicos AND, OR e NOT
• As comparações podem ser aplicadas aos resultados das expressões aritméticas
22
SELECT
*
FROM
disciplina
EXERCÍCIO 4
• Selecionar e renomear a coluna carga de disciplina para carga_horaria (utilizando AS)
• Selecionar todos os professores doutores
• Selecionar os professores e as respectivas disciplinas ministradas
• Selecionar os alunos da disciplina de Redes
• Selecionar alunos (sexo=M) do curso de Engenharia da Computação
BETWEEN
•
Operador de comparação
•
Retornar
•
nota1
7
e nota1
10
24
SELECT
matricula, nota1
FROM
Cursa
OPERAÇÕES DE STRING
• O termo like é utilizado para comparar padrões
• Porcentagem (%)
• Sublinhado (_)
25
SELECT nome
FROM Aluno
WHERE nome LIKE ‘%i%’
SELECT nome
FROM Aluno
WHERE nome LIKE ‘D%’
SELECT nome
FROM Aluno
EXERCÍCIO 5
•
Inserir
aluno
•
Nome: Eduardo
•
Sexo: M
•
Matrícula: 16
•
Inserir
aluno
•
Nome: Maria
•
Sexo: F
•
Matrícula: 17
•
Inserir
aluno
•
Nome: Camila
•
Sexo: F
•
Matrícula: 18
EXERCÍCIO 5
•
Inserir
professor
•
Nome: Pedro
•
Id professor: 15
•
Titulação: Doutor
•
Inserir
professor
•
Nome: Thalita
•
Id professor: 16
•
Titulação: Doutor
EXERCÍCIO 5
•
Inserir
curso
•
Nome: Ciência da Computação
•
ID: 5
•
Inserir
curso
•
Nome: Engenharia da Computação
•
ID: 6
EXERCÍCIO 5
• Inserir disciplina
• Nome: SQL
• Carga: 40
• Id disciplina: 12
• Id professor: 16
• Id curso: 5
• Inserir disciplina
• Nome: Algoritmos
• Carga: 60
• Id disciplina: 13
• Id professor: 15
• Id curso: 6
• Inserir disciplina
• Nome: Java
• Carga: 60
• Id disciplina: 14
• Id professor: 15
• Id curso: 6
• Inserir disciplina
• Nome: Programacao
• Carga: 40
• Id disciplina: 15
• Id professor: 16
• Id curso: 6
EXERCÍCIO 5
•
Inserir
cursa
• Matricula: 17
• Id disciplina: 13
• Nota1: 8
• Nota2: 9
• Nota3: 10
30
•
Inserir
cursa
• Matricula: 16
• Id disciplina: 12
• Nota1: 7
• Nota2: 8
EXERCÍCIO 5
•
Inserir
cursa
• Matricula: 18
• Id disciplina: 13
• Nota1: 7
• Nota2: 9
• Nota3: 9
31
•
Inserir
cursa
• Matricula: 17
• Id disciplina: 14
• Nota1: 8
• Nota2: 9
EXERCÍCIO 6
1. Selecionar aluno com nota2 acima de 7 2. Selecionar nota3 entre 0 e 10
3. Selecionar no banco de dados alunos que possuam a letra i no nome 4. Selecionar nome de alunos que começam com a letra E
CAMPO INCREMENTAL NO MYSQL
• Sintaxe para a criação de um campo incremental:
33
CREATE TABLE aluno (
nome varchar(45) NOT NULL,
matricula int NOT NULL auto_increment, sexo char NOT NULL,
cidade varchar(45) null default 'Recife', RG int not null,
UNIQUE (RG),
CAMPO INCREMENTAL NO MYSQL
• Sintaxe para a criação de um campo incremental começando com o valor 10:
34
CREATE TABLE aluno (
nome varchar(45) NOT NULL,
matricula int NOT NULL auto_increment, sexo char NOT NULL,
cidade varchar(45) null default 'Recife', RG int not null,
UNIQUE (RG),
CAMPO INCREMENTAL NO MYSQL
CAMPO INCREMENTAL NO MYSQL
• Para alterar o valor de incremento do próximo registro a ser armazenado em uma tabela, use o comando a seguir:
36
CAMPO INCREMENTAL NO MYSQL
• Exemplo:
PRÓXIMA AULA
• Delete
• Update