


































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostila de SQL
Tipologia: Notas de estudo
1 / 42
Esta página não é visível na pré-visualização
Não perca as partes importantes!



































SQL e Modelo Relacional
- 30 de julho de Sobre a K
A K19 é uma empresa especializada na capacitação de desenvolvedores de software. Sua equipe
é composta por profissionais formados em Ciência da Computação pela Universidade de São Paulo
(USP) e que possuem vasta experiência em treinamento de profissionais para área de TI.
O principal objetivo da K19 é oferecer treinamentos de máxima qualidade e relacionados às prin-
cipais tecnologias utilizadas pelas empresas. Através desses treinamentos, seus alunos se tornam
capacitados para atuar no mercado de trabalho.
Visando a máxima qualidade, a K19 mantém as suas apostilas em constante renovação e melho-
ria, oferece instalações físicas apropriadas para o ensino e seus instrutores estão sempre atualizados
didática e tecnicamente.
Termo de Uso
Termo de Uso
Todo o conteúdo desta apostila é propriedade da K19 Treinamentos. A apostila pode ser utilizada
livremente para estudo pessoal. Além disso, este material didático pode ser utilizado como material
de apoio em cursos de ensino superior desde que a instituição correspondente seja reconhecida pelo
MEC (Ministério da Educação) e que a K19 seja citada explicitamente como proprietária do material.
É proibida qualquer utilização desse material que não se enquadre nas condições acima sem
o prévio consentimento formal, por escrito, da K19 Treinamentos. O uso indevido está sujeito às
medidas legais cabíveis.
K01- Lógica de Programação
K11 - Orientação a Objetos em Java
K12 - Desenvolvimento Web com JSF2 e JPA
K21 - Persistência com JPA2 e Hibernate
K22 - Desenvolvimento Web Avançado com JFS2, EJB3.1 e CDI
K23 - Integração de Sistemas com Webservices, JMS e EJB
K31 - C# e Orientação a Objetos
K32 - Desenvolvimento Web com ASP.NET MVC
TREINAMENTOSTREINAMENTOSTREINAMENTOS Conheça os nossos cursos
www.k19.com.br/cursos
Suponha que os dados fossem mantidos sem nenhuma separação lógica. Implementar regras
de segurança específicas seria extremamente complexo. Tais regras criam restrições quanto ao con-
teúdo que pode ser acessado por cada usuário. Por exemplo, determinado usuário poderia ter per-
missão de acesso aos dados dos clientes do banco, mas não às informações dos produtos da loja
virtual, ou dos livros da livraria.
Para obter uma organização melhor, os dados são armazenados separadamente em um SGBD.
Daí surge o conceito de base de dados (database). Uma base de dados é um agrupamento lógico das
informações de um determinado domínio.
Criando uma base de dados no MySQL Server
Para criar uma base de dados no MySQL Server, podemos utilizar o comando CREATE DATA-
BASE.
mysql > CREATE DATABASE livraria ; Query OK , 1 row affected (0.02 sec )
Terminal 1.1: Criando uma base de dados.
Podemos utilizar o comando SHOW DATABASES para listar as bases de dados existentes.
mysql > show databases ;
Terminal 1.2: Listando as bases de dados existentes.
Repare que, além da base de dados livraria , há outras três bases. Essas bases foram criadas au-
tomaticamente pelo próprio MySQL Server para teste ou para armazenar configurações.
Quando uma base de dados não é mais necessária, ela pode ser removida através do comando
DROP DATABASE.
mysql > DROP DATABASE livraria ; Query OK , 0 rows affected (0.08 sec )
Terminal 1.3: Destruindo uma base de dados.
Tabelas
Um servidor de banco de dados é dividido em bases de dados com o intuito de separar as infor-
mações de domínios diferentes. Nessa mesma linha de raciocínio, podemos dividir os dados de uma
base a fim de agrupá-los segundo as suas correlações. Essa separação é feita através de tabelas. Por
exemplo, no sistema de um banco, é interessante separar o saldo e o limite de uma conta, do nome e
CPF de um cliente. Então, poderíamos criar uma tabela para os dados relacionados às contas e outra
para os dados relacionados aos clientes.
Cliente
nome idade cpf
José 27 31875638735
Maria 32 30045667856
Conta
numero saldo limite
1 1000 500
2 2000 700
Tabela 1.1: Tabelas para armazenar os dados relacionados aos clientes e às contas
Uma tabela é formada por registros (linhas) e os registros são formados por campos (colunas).
Por exemplo, considere uma tabela para armazenar as informações dos clientes de um banco. Cada
registro dessa tabela armazena em seus campos os dados de um determinado cliente.
Tabelas no MySQL Server
As tabelas no MySQL Server são criadas através do comando CREATE TABLE. Na criação de uma
tabela, é necessário definir quais são os nomes e os tipos das colunas.
mysql > CREATE TABLE ‘ livraria ‘. ‘ Livro ‘ ( -> ‘ titulo ‘ VARCHAR (255) , -> ‘ preco ‘ DOUBLE -> ) -> ENGINE = MyISAM ; Query OK , 0 rows affected (0.14 sec )
Terminal 1.4: Criando uma tabela.
As tabelas de uma base de dados podem ser listadas através do comando SHOW TABLES. Antes
de utilizar esse comando, devemos selecionar uma base de dados através do comando USE.
mysql > USE livraria ; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed mysql > SHOW TABLES ;
Terminal 1.5: Listando as tabelas de uma base de dados.
Se uma tabela não for mais desejada, ela pode ser removida através do comando DROP TABLE.
mysql > DROP TABLE Livro ; Query OK , 0 rows affected (0.00 sec )
Terminal 1.6: Destruindo uma tabela.
Também podemos alterar a estrutura de uma tabela com o comando ALTER TABLE.
mysql > ALTER TABLE Livro RENAME livros ; Query OK , 0 rows affected (0.00 sec )
Terminal 1.7: Alterando o nome da tabela.
mysql > ALTER TABLE Livro ADD paginas INTEGER ; Query OK , 0 rows affected (0.00 sec )
Restrições
Podemos estabelecer algumas restrições sobre os valores armazenados nas tabelas para manter a
consistência dos dados. Por exemplo, é possível obrigar que um determinado campo possua sempre
um valor não nulo.
No MySQL Server, quando criamos uma tabela, podemos adicionar a restrição NOT NULL nas
colunas que são obrigatórias.
mysql > CREATE TABLE ‘ livraria ‘. ‘ Livro ‘ ( -> ‘ titulo ‘ VARCHAR (255) NOT NULL , -> ‘ preco ‘ DOUBLE NOT NULL -> ) -> ENGINE = MyISAM ; Query OK , 0 rows affected (0.14 sec )
Também podemos definir, no MySQL Server, que uma coluna não pode possuir valores repetidos
através do comando UNIQUE.
mysql > CREATE TABLE ‘ livraria ‘. ‘ Livro ‘ ( -> ‘ titulo ‘ VARCHAR (255) NOT NULL UNIQUE , -> ‘ preco ‘ DOUBLE NOT NULL -> ) -> ENGINE = MyISAM ; Query OK , 0 rows affected (0.14 sec )
Exercícios de Fixação
(^1) Abra um terminal, crie e acesse uma pasta com o seu nome.
cosen@k19 :~ $ mkdir rafael cosen@k19 :~ $ cd rafael / cosen@k19 :~/ rafael$
Terminal 1.18: Criando e acessando uma pasta com o seu nome.
(^2) Estando dentro da sua pasta, acesse o MySQL Server utilizando o usuário root e a senha root.
k19@k19 -11:~/ rafael$ mysql -u root -p Enter password :
Terminal 1.19: Logando no MySQL Server.
(^3) Caso exista uma base de dados chamada livraria , remova-a. Utilize o comando SHOW DATA-
BASES para listar as bases de dados existentes e o comando DROP DATABASE para remover a base
livraria se ela existir.
mysql > SHOW DATABASES ;
| mysql | | test |
mysql > DROP DATABASE livraria ; Query OK , 1 row affected (0.12 sec )
(^4) Crie uma nova base de dados chamada livraria. Utilize o comando CREATE DATABASE. Você
vai utilizar esta base nos exercícios seguintes.
mysql > CREATE DATABASE livraria ; Query OK , 1 row affected (0.00 sec )
(^5) Abra um editor de texto e digite o código abaixo para criar uma tabela com o nome Editora.
Depois salve o arquivo com o nome create-table-editora.sql dentro da pasta com o seu nome.
(^6) Dentro do terminal, use o comando source para executar o arquivo que você acabou de criar.
mysql > source create - table - editora. sql Database changed Query OK , 0 rows affected (0.08 sec )
(^7) Abra um novo editor de texto e digite o código abaixo para criar uma tabela com o nome Livro.
Em seguida, salve o arquivo com o nome create-table-livro.sql dentro da pasta com o seu nome.
Código SQL 1.2: Criando a tabela Livro
(^8) Dentro do terminal, use o comando source para executar o código do arquivo create-table-livro.sql.
mysql > source create - table - livro. sql Database changed Query OK , 0 rows affected (0.08 sec )
(^9) Abra um novo editor de texto e digite o código abaixo para adicionar alguns registros na tabela
| id | titulo | preco |+ - - - -+ - - - - - - - - - - - - - - - - - - - - - - -+ - - - - - - -+| 1 | Aprendendo C# ←- | 89.9 || 2 | Introdução ao JSF 2 | 122.9 || 3 | JSF 2 Avançado | 149.9 |+ - - - -+ - - - - - - - - - - - - - - - - - - - - - - -+ - - - - - - 3 rows in set (0.00 sec )
Terminal 1.27: Selecionando os livros.
(^14) Altere alguns dos registros da tabela Livro. Utilize o comando UPDATE.
mysql > UPDATE Livro SET preco =92.9 WHERE id =1; Query OK , 1 row affected (0.07 sec ) Rows matched : 1 Changed : 1 Warnings : 0
Terminal 1.28: Alterando livros.
(^15) Altere alguns dos registros da tabela Editora. Utilize o comando UPDATE.
mysql > UPDATE Editora SET nome =’ OReilly ’ WHERE id =1; Query OK , 1 row affected (0.09 sec ) Rows matched : 1 Changed : 1 Warnings : 0
Terminal 1.29: Alterando editoras.
(^16) Remova alguns registros da tabela Livro. Utilize o comando DELETE.
mysql > DELETE FROM Livro WHERE id =2; Query OK , 1 row affected (0.07 sec )
Terminal 1.30: Removendo livros.
CONSULTAS
C
SELECT
Através do comando SELECT, podemos recuperar as informações armazenadas em um banco
de dados. Para utilizar o comando SELECT, devemos indicar as tabelas que serão consultadas e as
colunas que queremos recuperar.
No exemplo abaixo, as colunas nome e email são recuperadas da tabela Aluno.
Aluno
nome email
Rafael Cosentino [email protected]
Jonas Hirata [email protected]
Quando todas as colunas devem ser recuperadas, é mais prático utilizar o caractere “ ***** ”. Veja o
exemplo abaixo:
Aluno
nome email telefone altura
Rafael Cosentino [email protected] 11 23873791 1.
Jonas Hirata [email protected] 11 23873791 1.
É possível recuperar colunas de várias tabelas. Nesse caso, os registros das tabelas consultadas
são “cruzados”. Veja o exemplo abaixo:
Aluno
nome email telefone altura
Rafael Cosentino [email protected] 11 23873791 1.
Eis uma lista de algumas funções e operadores de comparação do MySQL Server que podem ser
utilizados com o comando WHERE:
=
Eis uma lista dos operadores lógicos do MySQL Server que também podem ser utilizados com o
comando WHERE.
Exercícios de Fixação
(^1) Crie uma tabela Aluno com as colunas nome (VARCHAR(255)), email (VARCHAR(255)) telefone
(VARCHAR(10)), altura (DECIMAL(3,2)) e aprovado (TINYINT(1)).