Tutorial Completo de MySQL ICMC
Tutorial Completo de MySQL ICMC
ISSN - 0103-2585
Tutorial de MySQL
Enzo Seraphim
André Luís dos Santos Domingues
Adenilso da Silva Simão
No¯ 60
São Carlos
Mar/2003
Este material contém os slides utilizados nos cursos de exten-
são universitária sobre MySQL realizados no Instituto de Ciên-
cias Matemáticas e de Computação da Universidade de São Paulo
(ICMC/USP) nos períodos:
de 31 de março a 7 de abril de 2002; e
de 14 a 18 de setembro de 2002.
Sumário
1 Introdução 1
Histórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Visão Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3 Sistema de Privilégios 2
Esquema Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Tabela host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Tabela user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Tabela db . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Tabela tables_priv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Tabela columns_priv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
5 DbTools 13
Visão Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Tela Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
i
Gerenciador de Servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Gerenciamento de Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Propriedades das Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Criando Índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Criando Chaves Estrangeiras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Editor de Consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Gerenciamento de Grupos e Usuários . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Editor de Consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Área de Tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
A Lista de Exercícios 16
A.1 Descrição do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
A.2 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
A.3 Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
ii
1 Introdução
Histórico Histórico
Banco de Dados Relacional - Open Source A TcX usa o MySQL:
Criado pela empresa sueca T.c.X. DataKonsultAB: desde 1996
David Axmark mais de 40 banco de dados
Allan Larsson contendo 10.000 tabelas
Michael “Monty” Wiedenus 500 dessas tabelas têm mais de 7 milhões de
registros
Criado pela necessidade de um Servidor SQL:
totalizando aproximadamente 100 Gbytes de
que pudesse manipular grande quantidade de
dados
dados
com alta velocidade de acesso
Seraphim, Domingues e Simão – Tutorial de MySQL – p.3/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.4/83
Arquitetura
O Banco de Dados MySQL
Várias Bases de Dados
Várias Tabelas
Vários Registros
Várias Colunas
1
2 Programas e Comandos Administrativos
Programas Comandos
shell> service mysqld start& mysql> show databases;
Inicia o daemon MySQL (server) Linux RedHat Mostra todas as bases de dados criadas
shell> mysqladmin -u <usuário> -p ping mysql> use <base_de_dados>;
Verifica se o servidor está ativo Seleciona uma base de dados para manipular
Parâmetro (-p) para digitar a senha de usuário mysql> show tables from <base_de_dados>;
shell> mysqladmin -u <usuário> -p shutdown Mostra todas as tabelas de uma base de dados
Desliga o daemon do MySQL mysql> show columns from <tabela>; ou
shell> mysqladmin -u <usuário> -p reload mysql> desc <tabela>;
Recarrega as permissões dos usuários Mostra as colunas de uma tabela
shell> mysql -u <usuário> -p <base de dados>
Prompt de interação de comandos SQL
Seraphim, Domingues e Simão – Tutorial de MySQL – p.8/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.9/83
3 Sistema de Privilégios
Seraphim, Domingues e Simão – Tutorial de MySQL – p.10/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.11/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.12/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.13/83
2
Tabela tables_priv Tabela columns_priv
A tabela tables_priv contém as informações A tabela colunms_priv contém as informações
relativas a qual tabela de um banco de dados um relativas a qual coluna da tabela de um banco de
usuário de um certo host pode acessar. dados um usuário de um certo host pode acessar.
Estrutura de colunas Estrutura de colunas
host, db, user, table_name, grantor, host, db, user, table_name, column_name,
timestamp, table_priv, column_priv timestamp, column_priv
table_priv = [‘select’, ‘insert’, ‘update’, column_priv = [‘select’, ‘insert’, ‘update’,
‘delete’, ‘create’, ‘drop’, ‘grant’, ‘references’, ‘references’]
‘index’, ‘alter’]
column_priv = [‘select’, ‘insert’, ‘update’,
‘references’]
Seraphim, Domingues e Simão – Tutorial de MySQL – p.14/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.15/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.16/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.17/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.18/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.19/83
3
create table Exemplo
Cria uma nova tabela com seus campos e define as Criar a tabela autor
restrições de campo
1 create table autor (
Sintaxe completa 2 cod_autor integer(3) not null,
3 nome varchar(70) not null,
[Link] 4 nascimento date not null,
bychapter/manual_Reference.html#CREATE_TABLE 5 primary key (
6 cod_autor) ,
7 unique (
8 nome ,
9 nascimento));
Seraphim, Domingues e Simão – Tutorial de MySQL – p.20/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.21/83
Exemplo Exemplo
Criar a tabela editora Criar a tabela livro
1 create table editora ( 1 create table livro (
2 cod_editora integer(3) not null, 2 titulo char(70) not null,
3 razao varchar(70) , 3 cod_autor integer(3) not null,
4 endereco char(70) , 4 cod_editora integer(3) not null,
5 cidade char(70) , 5 valor float(7,2) ,
6 primary key ( 6 comentario blob ,
7 cod_editora)); 7 publicacao date ,
8 volume integer(2) ,
9 primary key (
10 titulo ,
11 cod_autor) ,
12 foreign key (
13 cod_autor) references autor ,
14 foreign key (
15 cod_editora) references editora);
Seraphim, Domingues e Simão – Tutorial de MySQL – p.22/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.23/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.24/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.25/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.26/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.27/83
4
create index Exemplo
Cria um novo índice em uma tabela existente Criar um índice em ordem descendente para o
Sintaxe completa campo nome para a tabela autor
[Link] 1 create index indNome on
bychapter/manual_Reference.html#CREATE_INDEX 2 autor (nome desc);
Seraphim, Domingues e Simão – Tutorial de MySQL – p.28/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.29/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.30/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.31/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.32/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.33/83
Exemplo Exemplo
Adicionar um registro na tabela autor Inserir na tabela autor2 os autores que nasceram
antes de 01/01/1960
1 insert into autor
2 (cod_autor, nome, nascimento) 1 create table autor2 (
3 values 2 cod_autor integer(3) not null,
4 (1, ’Ramakrishman, R.’, ’1960-01-01’); 3 nome varchar(70) not null,
4 nascimento date not null,
5 primary key (
Adicionar um registro na tabela editora 6 cod_autor) ,
7 unique (
1 insert into editora
8 nome ,
2 (cod_editora, razao, endereco, cidade)
9 nascimento));
3 values
4 (1, ’McGraw - Hill’, ’Av. Trab. S~
ao-Manuelense, 400’, ’S~
ao Manuel’);
Seraphim, Domingues e Simão – Tutorial de MySQL – p.34/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.35/83
5
Exemplo update
Inserir na tabela autor2 os autores que nasceram Altera valores de campos de em uma determinada
antes de 01/01/1970 tabela com base em critérios especificados
1 insert into autor2 Sintaxe completa
2 select * [Link]
3 from autor
4 where
bychapter/manual_Reference.html#UPDATE
5 nascimento < ’1970-01-01’;
Seraphim, Domingues e Simão – Tutorial de MySQL – p.36/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.37/83
Exemplo delete
Alterar o endereco e a cidade da tabela editora Remove registros de uma ou mais tabelas com base
com cod_editora = 1 em critérios especificados
1 update editora
Sintaxe completa
2 set [Link]
3 endereco = ’Av. S~
ao Carlos, 400’,
4 cidade = ’S~
ao Carlos’
bychapter/manual_Reference.html#DELETE
5 where
6 cod_editora = 1;
Seraphim, Domingues e Simão – Tutorial de MySQL – p.38/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.39/83
Exemplo select
Remover da tabela autor o registro com código Realiza busca em uma ou mais tabelas
igual a 1 Extrai determinadas colunas
1 delete Seleciona registros que atendam a determinados
2 from autor critérios
3 where
4 cod_autor = 1; Classifica ou agrupa registros resultantes em uma
determinada ordem
Remover todos os registros da tabela livro Sintaxe completa
[Link]
1 delete
2 from livro; bychapter/manual_Reference.html#SELECT
Seraphim, Domingues e Simão – Tutorial de MySQL – p.40/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.41/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.42/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.43/83
6
Exemplo Cláusula group by
Selecionar todos os livros com valor superior a Combina registros com valores idênticos em uma
R$60,00 determinada lista de campos em um único registro
1 select titulo, valor
Um valor de resumo é criado para cada registro se
2 from livro uma função agregada SQL for incluída na instrução
3 where select
4 valor > 60;
sum
count
Selecionar nome e titulo das tabelas autor e
livro
1 select nome, titulo
2 from autor, livro
3 where
4 autor.cod_autor = livro.cod_autor;
Seraphim, Domingues e Simão – Tutorial de MySQL – p.44/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.45/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.46/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.47/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.48/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.49/83
Exemplo Operador in
Seleciona os campos nome e nascimento da tabela Determina se o valor de uma expressão é igual a
autor ordenados pela idade algum dos vários valores em uma lista especificada
1 select nome, nascimento
Se a expressão for encontrada na lista de valores, o
2 from autor operador in retornará true, caso contrário,
3 order by retornará false.
4 nascimento desc;
Seraphim, Domingues e Simão – Tutorial de MySQL – p.50/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.51/83
7
Exemplo Operador between...and
Selecionar editoras localizada nas cidade de São Determina se o valor de uma expressão se situa
Paulo, São Carlos e São Manuel dentro de um determinado intervalo de valores
1 select *
Se o valor da expressão estiver entre v1 e v2
2 from editora (inclusive), o operador between...and retornará
3 where true, caso contrário, retornará false.
4 cidade in (’S~
ao Paulo’, ’S~
ao Carlos’, ’S~
ao Manuel’);
Seraphim, Domingues e Simão – Tutorial de MySQL – p.52/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.53/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.54/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.55/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.56/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.57/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.58/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.59/83
8
Exemplo Função count
Calcular o preço médio dos livros Conta o número de registros retornados por uma
consulta
1 select avg(valor) as Media
2 from livro; Não conta registros que tenham campos null,
exceto quando a expressão for o caractere curinga
Calcular o preço médio dos livros de cada editora asterisco (*)
Seraphim, Domingues e Simão – Tutorial de MySQL – p.60/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.61/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.62/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.63/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.64/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.65/83
Exemplo
Somar os valores dos livros da editora com código
igual a 1
1 select sum(valor)
2 from livro
3 where
4 cod_editora = 1;
9
5 DbTools
DbTools Requisitos
Ferramenta para gerenciamento de bancos de dados TCP/IP instalado e configurado adequadamente
Plataforma Windows Servidor de Banco de Dados instalado e pronto para
Suporte a MySQL e PostgreSQL aceitar conexões
Versão utilizada neste manual Usuário com privilégio para conectar ao Servidor de
Banco de Dados
1.0.15
localhost
%
Seraphim, Domingues e Simão – Tutorial de MySQL – p.67/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.68/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.69/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.70/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.71/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.72/83
10
Gerenciamento de Tabelas Propriedades das Tabelas
Seraphim, Domingues e Simão – Tutorial de MySQL – p.73/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.74/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.75/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.76/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.77/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.78/83
Seraphim, Domingues e Simão – Tutorial de MySQL – p.79/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.80/83
11
Editor de Consultas Editor de Consultas
Seraphim, Domingues e Simão – Tutorial de MySQL – p.81/83 Seraphim, Domingues e Simão – Tutorial de MySQL – p.82/83
Área de Tabela
12
A Lista de Exercícios
Aluno N
Matricula
Professor 1
Faz parte Curso
N
Contem
Disciplina N
Professor
numFunc nome admissao areapesquisa
45675 Abgair Simon Ferreira 10/04/92 Banco de Dados
45690 Ramon Travanti 20/05/93 Direito Romano
45691 Gustavo Golveia Netto 05/04/93 Sociologia
45692 Marcos Salvador 31/03/93 Matemática Financeira
45693 Cintia Falcão 15/02/93 Engenharia Software
13
Curso
numCurso nome totalcréditos
2142 Engenharia Civil 1500
2143 Ciência da Computação 2000
2144 Direito 1750
2145 Pedagogia 1500
2146 Odontologia 1600
Disciplina
numDiscip nome quantcreditos
1 Banco de Dados 30
2 Estrutura de Dados 30
3 Direito Penal 25
4 Cálculo Numérico 30
5 Psicologia Infantil 25
6 Direito Tributário 33
7 Engenharia de Software 27
DiscipCurso
numDiscip numCurso
1 2143
2 2143
3 2144
4 2143
4 2142
5 2145
6 2144
7 2143
7 2142
14
Aula
numAluno numDiscip numFunc semestre nota
111 1 45675 1/98 5,00
111 2 45675 1/98 6,00
111 2 45675 2/98 7,00
115 3 45690 1/98 8,00
115 3 45690 2/98 9,00
111 4 45692 1/98 10,00
112 4 45692 1/98 8,00
113 5 45691 1/98 8,00
114 1 45675 2/98 8,00
114 2 45675 1/98 9,00
112 1 45675 1/98 7,00
111 7 45693 1/98 10,00
115 6 45690 1/98 9,00
112 7 45693 1/98 5,00
114 4 45692 1/98 6,00
114 4 45692 2/98 8,00
116 4 45692 1/98 3,00
116 4 45692 2/98 9,00
114 7 45693 1/98 9,00
116 7 45693 1/98 8,00
Aluno
numAluno nome endereco cidade telefone numCurso
111 [Link] Av.São Carlos,186 São Carlos (017) 276-9999 2143
112 [Link] [Link]é Bonifácio, 70 São Carlos — 2142
113 [Link] [Link] Camões, 120 Ibaté (017) 278-8568 2145
114 [Link] Av. São Carlos, 176 São Carlos — 2143
115 [Link] [Link] Junior, 180 São Carlos (017) 273-9865 2144
116 [Link] R. Antonio Carlos, 1 Ibaté (017) 274-8568 2142
117 [Link] R. XV de Novembro, 871 São Carlos — 2145
15
A.2 Exercícios
1) Na base de dados do MySQL:
a) Criar as tabelas com as respectivas chaves;
b) Cadastrar os dados das tabelas.
2) Comandos para as seguintes consultas:
a) Todos os cursos da universidade;
b) Quais os nomes e telefones de alunos da cidade de São Carlos em ordem descendente de nome;
c) Quais os nomes de professores que foram contratados antes de 01/jan/1993;
d) Quais os nomes de alunos que iniciam com a letra ’J’;
e) Quais os nomes das disciplinas do curso de Ciência da Computação;
f) Quais os nomes dos cursos que possuem no curriculum a disciplina Cálculo Numérico;
g) Quais os nomes das disciplina que o aluno [Link] cursou no 1o semestre de 1998;
h) Quais os nomes das disciplinas em que o aluno [Link] foi reprovado;
i) Quais os nomes dos alunos reprovados na disciplina de Cálculo Numérico no 1o semestre de 1998;
j) Quais os nomes das disciplinas ministradas pelo prof. Ramon Travanti;
k) Quais os nomes dos professores que já ministraram a disciplina de Banco de Dados;
l) Qual a maior e a menor nota na disciplina de Cálculo Numérico no 1o semestre de 1998;
m) Quais os nomes dos alunos, nomes das disciplinas e nomes dos professores no 1o semestre de
1998 em ordem ascendente de aluno;
n) Quais os nomes dos alunos, nomes das disciplinas e notas do 1o semestre de 1998 dos alunos do
curso de Ciência da Computação;
o) Qual a média de notas do professor Marcos Salvador;
p) Quais nomes de alunos, nomes de disciplinas e notas que tiveram nota entre 5.0 e 7.0 em ordem
de ascendente de disciplina;
q) Qual a média de notas da disciplina Cálculo Numérico no 1o semestre de 1998;
r) Quantos alunos o professor Abgair teve no 1o semestre de 1998;
s) Qual a média de notas e quantidade de aulas do aluno [Link];
t) Quais as médias por nome de disciplina de todos os cursos do 1o semestre de 1998 em ordem
ascendente de disciplina;
u) Quais as médias e quantidades das notas por nome de professor no 1o semestre de 1998;
v) Qual a média por disciplina no 1o semestre de 1998 do curso do Ciência da Computação;
w) Qual a quantidade de créditos concluídos (somente nas disciplinas aprovadas) pelo aluno [Link];
x) Quais nomes dos alunos, e respectiva quantidade de créditos, que completaram no mínimo 70
créditos (somente nas disciplinas aprovadas);
y) Quais nomes dos alunos do curso de Ciência da Computação, nomes das disciplinas e nomes dos
professores no 1o semestre de 1998 e que possuem nota superior a 8.0.
A.3 Respostas
1)
a)
16
1 create table aluno(
2 numAluno integer(5) not null,
3 nome char(50) not null,
4 endereco char(30),
5 cidade char(15),
6 telefone char(15),
7 numCurso integer(5),
8 primary key (numAluno),
9 foreign key (numCurso) references curso);
10
b)
1 insert into aluno values
2 (111,"[Link]","Av.São Carlos, 186","São Carlos","(17)276-9999","2143"),
17
3 (112,"[Link]", "[Link]é Bonifácio, 70","São Carlos","","2142"),
4 (113,"[Link]","[Link] Camões, 120","Ibaté","(17)278-8568","2145"),
5 (114,"[Link]","Av. São Carlos, 176","São Carlos","","2143"),
6 (115,"[Link]","[Link] Junior, 180","São Carlos","(17)273-9865","2144"),
7 (116,"[Link]","R. Antonio Carlos, 1","Ibaté","(17)274-8568","2142"),
8 (117,"[Link]","R. XV de Novembro, 871","São Carlos","","2145");
9
18
53 (3,"Direito Penal",25),
54 (4,"Cálculo Numérico",30),
55 (5,"Psicologia Infantil",25),
56 (6,"Direito Tributário",33),
57 (7,"Engenharia de Software",27);
58
2)
a) Consulta
1 select *
2 from curso;
Resultado:
numCurso nome totaldecreditos
2142 Engenharia Civil 1500
2143 Ciencia da Computação 2000
2144 Direito 1750
2145 Pedagogia 1500
2146 Odontologia 1600
b) Consulta
1 select nome, telefone
2 from aluno
3 where cidade = "São Carlos"
4 order by nome desc;
Resultado:
nome telefone
[Link] (17)273-9865
[Link]
[Link]
[Link]
[Link] (17)276-9999
c) Consulta
1 select nome
2 from professor
3 where admissao < "1993-01-01";
Resultado:
19
nome
Abgair Simon Ferreira
d) Consulta
1 select nome
2 from aluno
3 where nome like "J%";
Resultado:
nome
[Link]
[Link]
e) Consulta
1 select [Link]
2 from curso, disciplina, discipCurso
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = "Ciência da Computação";
Resultado:
nome
Banco de Dados
Estrutura de Dados
Cálculo Numérico
Engenharia de Software
f) Consulta
1 select [Link]
2 from curso, discipCurso, disciplina
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = "Cálculo Numérico";
Resultado:
nome
Engenharia Civil
Ciencia da Computação
g) Consulta
1 select [Link]
2 from aluno, aula, disciplina
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = "[Link]" and
6 [Link] = "1/98"
Resultado:
20
nome
Estrutura de Dados
Cálculo Numérico
Engenharia de Software
h) Consulta
1 select [Link]
2 from aluno, aula, disciplina
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = "[Link]" and
6 [Link] < 7;
Resultado:
nome
Cálculo Numérico
i) Consulta
1 select [Link]
2 from aluno, aula, disciplina
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] < 7 and
6 [Link] = "Cálculo Numérico" and
7 [Link] = "1/98";
Resultado:
nome
[Link]
[Link]
j) Consulta
1 select [Link]
2 from aula, disciplina, professor
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = "Ramon Travanti"
6 group by [Link];
Resultado:
nome
Direito Penal
Direito Tributário
21
k) Consulta
1 select [Link]
2 from aula, disciplina, professor
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = "Banco de Dados"
6 group by [Link];
Resultado:
nome
Abgair Simon Ferreira
l) Consulta
1 select max(nota), min(nota)
2 from aula, disciplina
3 where [Link] = [Link] and
4 [Link] = "1/98" and
5 [Link] = "Cálculo Numérico"
6 group by [Link];
Resultado:
max(nota) min(nota)
10 3
m) Consulta
1 select [Link], [Link], [Link]
2 from aluno, aula, disciplina, professor
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = [Link] and
6 [Link] = "1/98"
7 order by [Link] asc;
22
Resultado:
nome nome nome
[Link] Cálculo Numérico Marcos Salvador
[Link] Engenharia de Software Cintia Falcão
[Link] Psicologia Infantil Gustavo Golveia Netto
[Link] Banco de Dados Abgair Simon Ferreira
[Link] Estrutura de Dados Abgair Simon Ferreira
[Link] Cálculo Numérico Marcos Salvador
[Link] Engenharia de Software Cintia Falcão
[Link] Cálculo Numérico Marcos Salvador
[Link] Engenharia de Software Cintia Falcão
[Link] Estrutura de Dados Abgair Simon Ferreira
[Link] Cálculo Numérico Marcos Salvador
[Link] Engenharia de Software Cintia Falcão
[Link] Direito Penal Ramon Travanti
[Link] Direito Tributário Ramon Travanti
n) Consulta
1 select [Link], [Link], [Link]
2 from aluno, aula, curso, discipCurso, disciplina
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = [Link] and
6 [Link] = [Link] and
7 [Link] = [Link] and
8 [Link] = "1/98" and
9 [Link] = "Ciência da Computação"
Resultado:
nome nome nota
[Link] Banco de Dados 5
[Link] Estrutura de Dados 6
[Link] Cálculo Numérico 10
[Link] Engenharia de Software 10
[Link] Estrutura de Dados 9
[Link] Cálculo Numérico 6
[Link] Engenharia de Software 9
o) Consulta
1 select avg([Link])
2 from aula, professor
3 where [Link] = [Link] and
4 [Link] = "Marcos Salvador"
5 group by [Link];
Resultado:
23
avg([Link])
7.3333
p) Consulta
1 select [Link], [Link], [Link]
2 from aluno, aula, disciplina
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] between 5 and 7
6 order by [Link] asc;
Resultado:
nome nome nota
[Link] Banco de Dados 5
[Link] Banco de Dados 7
[Link] Cálculo Numérico 6
[Link] Engenharia de Software 5
[Link] Estrutura de Dados 6
[Link] Estrutura de Dados 7
q) Consulta
1 select avg([Link])
2 from aula, disciplina
3 where [Link] = [Link] and
4 [Link] = "Cálculo Numérico" and
5 [Link] = "1/98"
6 group by [Link];
Resultado:
avg([Link])
6.7500
r) Consulta
1 select count(*)
2 from aula, professor
3 where [Link] = [Link] and
4 [Link] like "Abgair%" and
5 [Link] = "1/98"
6 group by [Link];
Resultado:
count(*)
3
24
s) Consulta
1 select avg([Link]), count(*)
2 from aluno, aula
3 where [Link] = [Link] and
4 [Link] = "[Link]"
5 group by [Link];
Resultado:
avg([Link]) count(*)
7.6000 5
t) Consulta
1 select [Link], avg([Link])
2 from aula, disciplina
3 where [Link] = [Link] and
4 [Link] = "1/98"
5 group by [Link]
6 order by [Link] asc;
Resultado:
nome avg([Link])
Banco de Dados 5.0000
Cálculo Numérico 6.7500
Direito Penal 8.0000
Direito Tributário 9.0000
Engenharia de Software 8.0000
Estrutura de Dados 7.5000
Psicologia Infantil 8.0000
u) Consulta
1 select [Link], avg([Link]), count(*)
2 from aula, professor
3 where [Link] = [Link] and
4 [Link] = "1/98"
5 group by [Link];
Resultado:
nome avg([Link]) count(*)
Abgair Simon Ferreira 6.6667 3
Cintia Falcão 8.0000 4
Gustavo Golveia Netto 8.0000 1
Marcos Salvador 6.7500 4
Ramon Travanti 8.5000 2
25
v) Consulta
1 select [Link], avg([Link])
2 from aula, curso, discipCurso, disciplina
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = [Link] and
6 [Link] = "1/98" and
7 [Link] = "Ciência da Computação"
8 group by [Link];
Resultado:
nome avg([Link])
Banco de Dados 5.0000
Cálculo Numérico 6.7500
Engenharia de Software 8.0000
Estrutura de Dados 7.5000
w) Consulta
1 select sum([Link])
2 from aluno, aula, disciplina
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = "[Link]" and
6 [Link] >= 7
7 group by [Link];
Resultado:
sum([Link])
87
x) Consulta
1 select [Link], sum([Link])
2 from aluno, aula, disciplina
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] >= 7
6 group by [Link]
7 having sum(quantcreditos) >= 70;
Resultado:
nome sum([Link])
[Link] 87
[Link] 117
[Link] 83
26
y) Consulta
1 select [Link], [Link], [Link]
2 from aluno, aula, curso, discipCurso, disciplina, professor
3 where [Link] = [Link] and
4 [Link] = [Link] and
5 [Link] = [Link] and
6 [Link] = [Link] and
7 [Link] = [Link] and
8 [Link] >= 8 and
9 [Link] = "1/98" and
10 [Link] = "Ciência da Computação";
Resultado:
nome nome nome
[Link] Cálculo Numérico Marcos Salvador
[Link] Engenharia de Software Cintia Falcão
[Link] Cálculo Numérico Marcos Salvador
[Link] Estrutura de Dados Abgair Simon Ferreira
[Link] Engenharia de Software Cintia Falcão
[Link] Engenharia de Software Cintia Falcão
27