Revisão de SQL - INF

Propaganda
UFG - Instituto de Informática
Curso: Sistemas de Informação
Arquitetura de Software
Prof.: Fabrízzio A A M N Soares
[email protected]
Aula 6.1 – Revisão de Banco de Dados
(SQL e acesso via aplicativo)
Revisão de SQL

Structured Query Language, ou Linguagem de
Consulta Estruturada ou SQL, é uma
linguagem de pesquisa declarativa para banco
de dados relacional (base de dados relacional).
Revisão de SQL

Principais objetivo:

Manipulação de Metadados (DDL)




Criação, alteração e exclusão de bancos de
dados (Não padronizado)
Criação, alteração e exclusão de tabelas
Criação, alteração e exclusão de índices
Manipulação de Dados (DML)




Inserção (Create)
Recuperação (Retrieve ou Read)
Atualização (Update)
Remoção (Delete)
Revisão de SQL

Principais objetivo:

Manipulação de Metadados (DDL)




Criação, alteração e exclusão de bancos de
dados (Não padronizado)
Criação, alteração e exclusão de tabelas
Criação, alteração e exclusão de índices
Manipulação de Dados (DML)




Inserção (Create)
Recuperação (Retrieve ou Read)
Atualização (Update)
Remoção (Delete)
Tipos principais (base: JavaDB)

Tipos numéricos



Inteiros

SMALLINT: 2 bytes

INTEGER: 4 bytes

BIGINT: 8 bytes
Casas decimais aproximadas

REAL: 4 bytes

DOUBLE PRECISION: 8 bytes

FLOAT: equivale ao DOUBLE PRECISION
Casas decimais exatas

DECIMAL

NUMERIC: equivale ao DECIMAL
Tipos principais (base: JavaDB)


Tipos para Texto

CHAR

VARCHAR
Tipo Lógico


BOOLEAN
Tipo para Data e Hora

DATE

TIME

DATETIME ou TIMESTAMP
Exemplo (Cadastro de usuarios)
codigo
1
2
4
...
nome
João
Maria
Marcos
...
sexo
M
F
M
...
idade
34
32
13
...
Tabela de exemplo
usuario
codigo
nome
sexo
idade
integer
varchar(60)
char(1)
smallint
Criando a tabela usuario
Create table usuario (
codigo
nome
sexo
idade
);
integer
varchar(60)
char(1)
smallint
Criando a tabela usuario
Create table usuario (
Codigo integer not null,
Nome varchar(60),
Sexo char(1),
Idade smallint,
Primary key (codigo)
);
Chave estrangeira


Campo de uma tabela que é chave primária em
outra tabela
Objetivo: permitir que o valor de um campo de
uma tabela seja preenchido apenas com
valores existentes em uma coluna de outra
tabela
Exemplo (Cadastro de dependentes)
codigo
1
2
4
...
Codigo
1
2
3
4
nome
João
Maria
Marcos
...
CodUsuario
1
1
2
2
sexo
M
F
M
...
idade
34
32
13
...
Nome
Sexo
Idade
Parentesco
Marta
F
30
Esposa
José
M
12
Filho
Pedro
M
31
Esposo
Josefina
F
67
Mãe
Tabela dependentes
Dependentes
codigo
codusuario
nome
sexo
idade
parentesco
integer
integer
varchar(60)
char(1)
smallint
char(1)
Criando a tabela dependente
Create table dependente (
Codigo integer not null,
Codusuario integer not null,
Nome varchar(60),
Sexo char(1),
Idade smallint,
Parentesco char(1) not null,
Primary key (codigo),
constraint fkcodusuario foreign key (codusuario) references usuario
(codigo)
);
Inserção de registros
INSERT INTO <tabela>
VALUES (<valor1>, <valor2>, …, <valorN>)
INSERT INTO <tabela>
(<campo1>, <campo2>, …, <campoN>)
VALUES (<valor1>, <valor2>, …, <valorN>)
Exemplo de inserção
INSERT INTO usuario
VALUES (1, 'João', 'M', 34)
INSERT INTO usuario
(codigo, nome, idade)
VALUES (4, 'Marcos', 13)
Atualização de dados
UPDATE <tabela> SET
<campo1> = <novovalor1>,
<campo2> = <novovalor2>,
<campoN> = <novovalorN>
WHERE <campoA> = <valorX>
AND <campoB> = <valorZ>
Exemplo
UPDATE usuario SET
Sexo = 'M'
WHERE codigo = 4
Exclusão de dados
DELETE FROM <tabela>
WHERE <campoA> = <valorX>
AND <campoB> = <valorY>
Exemplo
DELETE FROM usuario
WHERE codigo = 5
Recuperação
SELECT *
FROM <tabela>
WHERE <campoA> = <valorX>
AND <campoB> = <valorY>
SELECT <campo1>, <campo2>
FROM <tabela>
WHERE <campoA> = <valorX>
AND <campoB> = <valorY>
Exemplo
SELECT *
FROM usuario
SELECT codigo, nome, sexo,
idade
FROM usuario
SELECT nome
FROM usuario
WHERE codigo = 1
WHERE sexo = 'M'
SELECT *
FROM usuario
WHERE nome like 'J%'
Acessando banco de dados com
JAVA

Itens fundamentais:

Drivers

Conexão: Connection

Declaração: Statement

Resultados: ResultSet
Drivers
Class.forName("org.apache.derby.jdbc.ClientDriver");


Carregado apenas uma vez, provavelmente, quando a
aplicação iniciar;
Deve ser carregado antes de se criar a conexão, caso
contrário acontecerá o erro:
java.lang.ClassNotFoundException
Conexão (Connection)

Variável de conexão
Connection cn;

Estabelecendo a conexão
cn = DriverManager.getConnection(
"jdbc:derby://localhost:1527/MeuBanco;user=APP;password=app"
);

Encerrando a conexão
cn.close();
Declaração (statement)

Criando o statement
Statement st = cn.createStatement();

Executando uma operação
st.execute(
"insert into cliente (codigo, nome, sexo, idade)
values (1, 'João', 'M', 34)”);

Encerrando o statement
st.close();
Declaração Preparada
PreparedStatement st;
st = cn.prepareStatement(
"insert into cliente (codigo, nome, sexo, idade) values (?, ?, ?, ?)");
st.setInt(1, codigo);
st.setString(2, nome);
st.setString(3, sexo);
st.setInt(4, idade);
st.executeUpdate();
st.close();
Declaração preparada
PreparedStatement st = cn.prepareStatement(
"Select * from cliente where codigo = ?");
st.setInt(1, codigo);
ResultSet rs = st.executeQuery();
if (rs.next()) {
txtNome.setText(rs.getString("nome"));
}
rs.close();
st.close();
Download