5. Introdução: Banco de dados
● Exemplo de tabela
Nome
RA
Nota
Bonifácio Cubas
125159
9,5
Ana Cintra
125148
8,0
● Um banco de dados é um conjunto de
tabelas.
● Representa aspectos da vida real.
6. Introdução: Banco de dados
● Profissionais envolvidos: Projetistas de
Bancos de Dados (DBP)
Image: FreeDigitalPhotos.net
7. Introdução: Banco de dados
● Profissionais envolvidos: Analistas de
sistemas e programadores
Image: FreeDigitalPhotos.net
8. Introdução: Banco de dados
● Profissionais envolvidos: Administradores
de Bancos de Dados (DBA)
Image: FreeDigitalPhotos.net
9. Introdução: Banco de dados
● Profissionais envolvidos: Usuários
Image: FreeDigitalPhotos.net
10. Introdução: Banco de dados
● Importância dos sistemas de bancos de dados nas
organizações
○ É realmente necessário?
○ E nas pequenas empresas?
Image: FreeDigitalPhotos.net
12. Modelo logico
● São modelos de dados
● É uma representação teórica
de como será a implementação
do banco de dados
● Deve ser
tecnologia
independente
de
Image: FreeDigitalPhotos.net
13. Porque fazer a modelagem de
dados?
● Informações concisas e necessárias para
o negócio
● Identifica redundâncias
● Identifica dados não utilizados
● Permite estabelecer regras de
integridade de dados
Image: FreeDigitalPhotos.net
14. Modelando dados
● Um modelo é formado
por:
Matrícula
○ Entidades
Nome
Aluno
○ Atributos
Endereço
Data
Nascimento
Image: FreeDigitalPhotos.net
15. Modelando dados
or
ad
fic )
nti ária
de
o i Prim
ut e
trib hav
A (C
#Matrícula
Nome
Aluno
Endereço
Data
Nascimento
Image: FreeDigitalPhotos.net
17. Modelando dados
● Diagramas de entidas
○ Utilizaremos a metodologia DER: Diagrama
Entidade-Relacionamento
○ DER representa a associação de cada entidade
através de relacionamentos
Entidade 1
Relacionamento
Entidade 2
18. Modelando dados
● DER
Entidade 1
Um e somente
um
Um ou muitos
Um ou muitos
Um ou nenhum
Entidade 3
de
lo ento
mp
xe nam
E io
ac
rel
Entidade 2
19. Modelando dados na prática
● Exemplo: Cliente
○ Uma empresa controla os seguintes dados de seus
clientes:
Código
■ Código
■ Nome
■ Endereço
Nome
■ Telefone
Cliente
Endereço
Telefone
20. Modelando dados na prática
● Exemplo: Cliente
○ Uma empresa controla os seguintes dados de seus
clientes:
■ Código
■ Nome
■ Endereço
■ Telefone
Cliente:
#Código
Nome
Endereço
Telefone
21. Modelando dados na prática
● Exemplo: Cliente
○ A empresa vende diversos produtos a seus clientes:
■ Cada cliente pode comprar quantos produtos
precisar
■ Cada pedido de venda pode ser composto por
vários produtos
Pedido:
#Código
Cliente
Data
Valor
Detalhe Pedido:
#Código Pedido
#Código Produto
Quantidade
Valor
Produto:
#Código
Descrição
Valor
22. Modelando dados na prática
● DER
Cliente
1
N
Faz
Pedido
1
Compõe
1
Produto
N
Detalhe
Pedido
N
Forma
23. Fixando conteúdo...
1. Utilizando o exemplo da entidade Aluno,
identifique uma outra entidade em sala de
aula que se relaciona com a entidade aluno:
○ Descreva os atributos dessa outra entidade
○ Faça o DER entre as entidades
2. Agora inclua uma entidade ao exercício
anterior: Universidade.
○ Descreva os atributos da entidade Universidade
○ Faça o DER entre as entidades (as 3 entidades)
26. Modelo físico
● São modelos de dados
● É uma representação teórica
de como será a implementação
do banco de dados
● Deve levar em conta
limitações do SGBD
as
Image: FreeDigitalPhotos.net
27. Porque fazer a modelagem de dados
lógica e outra física?
● Modelo lógico lhe permite a visão de
negócio. O conceito a ser trabalho.
● O modelo físico lhe permite projetar a
implementação do banco de dados.
● O modelo físico pode ser ligeiramente
diferente do modelo lógico (melhorado).
● Requer conhecimento técnico.
Image: FreeDigitalPhotos.net
28. Nomenclatura
● Modelo lógico : Entidades e atributos.
● O modelo físico : Tabelas e campo.
● Modelo lógico : Atributo identificador.
● O modelo físico : Chave primária.
● Modelo físico:
○ Chave estrangeira
○ Cardinalidade
○ Tipo de campo
29. Nomenclatura
● Tipos de campos
○
○
○
○
○
○
○
Char(N)
Varchar(N)
Numeric(N,P)
Integer
Date
Time
TimeStamp
N = Tamanho
P = Precisão decimal
31. Fixando conteúdo...
A empresa MãosAObra, Ltda é uma agência que se dedica exclusivamente à subcontratação de trabalho
temporário. Os clientes desta empresa são normalmente outras empresas ou mesmo particulares que
necessitam de mão de obra temporária para executar tarefas pontuais.
Esta empresa não possui mão-de-obra em regime permanente, limitando-se a entrar em contato com
indivíduos que constam em seu catálogo, no sentido de os alocar temporariamente a determinados serviços.
Sempre que um novo cliente solicita os serviços desta empresa, os seus dados são recolhidos numa ficha de
cliente. Da mesma forma, quando um candidato se inscreve na bolsa de emprego desta empresa preenche um
impresso (ficha de contato) onde refere nomeadamente as suas aptidões e os setores de atividade em que se
inscreve.
Um setor de atividade define basicamente um tipo de trabalho que um candidato está disposto a executar.
Como é evidente, a inscrição em alguns setores de atividade irá depender das suas aptidões específicas.
Quando um cliente solicita um serviço é preenchida uma ficha de serviço onde se descreve o serviço a efetuar
e a sua data de inicio.
A ficha de serviço é depois analisada para decidir quais os setores de atividade implicados naquele serviço,
quantos indivíduos são necessários e, previsivelmente por quanto tempo. Posteriormente selecionam-se para
cada setor de atividade os possíveis colaboradores que serão chamados para saber se aceitam ou não o
trabalho.
Desta forma constituem-se então equipes de trabalho (uma por cada setor de atividade) no entanto, cada
colaborador apenas estará destacado para uma delas. Com base nos exemplos, assim como esta breve
descrição, desenvolva o respectivo modelo FÍSICO de dados juntamente com seus relacionamentos.
32. Fixando conteúdo...
Ficha de Cliente
Numero: __________
Nome: _______________________________________________
Endereço:______________________________________________
Telefone: __________ Fax: __________ Data: ___/___/___
Ficha de Serviço
N. Cliente: ___________
Data recepção: ___/___/____
Descrição: ________________________________________
Data inicio: ___/___/___
Ficha de Contato
N. Colaborador: _______
Nome: ____________________________________________
Endereço: ___________________________________________
Telefone: ____________ Data: ____/____/_____
Aptidões:
Escolaridade: ____________________________ Linguas Estrangeiras: __________________
Aptidões Profissionais: ______________________
Setores de Atividade em que se inscreve (coloca um X)
Trabalhos agricolas: ___ Limpeza/Higiene: ___ Carpintaria: ___ Soldadura:___
33. Fixando conteúdo…
Resolvendo...
A empresa MãosAObra, Ltda é uma agência que se dedica exclusivamente à subcontratação de trabalho
temporário. Os clientes desta empresa são normalmente outras empresas ou mesmo particulares que
necessitam de mão de obra temporária para executar tarefas pontuais.
Esta empresa não possui mão-de-obra em regime permanente, limitando-se a entrar em contato com
indivíduos que constam em seu catálogo, no sentido de os alocar temporariamente a determinados serviços.
Sempre que um novo cliente solicita os serviços desta empresa, os seus dados são recolhidos numa ficha de
cliente. Da mesma forma, quando um candidato se inscreve na bolsa de emprego desta empresa preenche um
impresso (ficha de contato) onde refere nomeadamente as suas aptidões e os setores de atividade em que se
inscreve.
Um setor de atividade define basicamente um tipo de trabalho que um candidato está disposto a executar.
Como é evidente, a inscrição em alguns setores de atividade irá depender das suas aptidões específicas.
Quando um cliente solicita um serviço é preenchida uma ficha de serviço onde se descreve o serviço a efetuar
e a sua data de inicio.
A ficha de serviço é depois analisada para decidir quais os setores de atividade implicados naquele serviço,
quantos indivíduos são necessários e, previsivelmente por quanto tempo. Posteriormente selecionam-se para
cada setor de atividade os possíveis colaboradores que serão chamados para saber se aceitam ou não o
trabalho.
Desta forma constituem-se então equipes de trabalho (uma por cada setor de atividade) no entanto, cada
colaborador apenas estará destacado para uma delas. Com base nos exemplos, assim como esta breve
descrição, desenvolva o respectivo modelo FÍSICO de dados juntamente com seus relacionamentos.
42. Banco de dados SQL
●
A linguagem SQL (Structured Query Language – Linguagem de Consulta
Estruturada) é uma linguagem declarativa utilizada por Sistemas Gerenciadores
de Bancos de Dados Relacionais como: Oracle, SQL Server, MySQL,
PostgreSQL, Firebird, e outros.
●
Devido à sua ampla utilização por diversos SGBDs, surgiram vários dialetos
para os comandos, que geraram a necessidade de criação de um padrão para a
linguagem. Essa tarefa foi realizada pela American National Standards Institute
(ANSI) em 1986 e ISO em 1987. Em 1992, foi realização uma revisão da
linguagem que recebeu o nome de SQL-92.
●
43. Banco de dados SQL
●
Em 1999 e 2003, ocorreram novas revisões. Na revisão de 1999, foram
adicionados padrões para expressões regulares, consultas recursivas, triggers e
algumas características de orientação a objeto. Na revisão de 2003, foram
introduzidas características relacionadas a XML, sequências padronizadas e
colunas com valores de auto-numeração.
●
Uma dificuldade encontrada na utilização da linguagem SQL por parte dos
desenvolvedores ou administradores de bancos de dados é a diferença entre os
comandos nos diversos SGBDs, mesmo após a definição dos padrões. Porém,
as diferenças não são grandes.
44. Banco de dados SQL
● Os comandos da linguagem SQL são subdivididos em
algumas categorias de comandos como:
○ DDL
○ DML
○ DCL
45. Banco de dados SQL
● DDL (Data Definition Language – Linguagem de Definição
de Dados).
○ Os comandos DDL são usados para definir a estrutura
do banco de dados, organizando em tabelas que são
compostas por campos (colunas). Comandos que
compõem a DDL: CREATE, ALTER, DROP.
46. Banco de dados SQL
● DML (Data Manipulation Language – Linguagem de
Manipulação de Dados).
○ Os comandos DML permitem realizar operações de
inserção, alteração, exclusão e seleção sobre os
registros (linhas) das tabelas. Comandos que compõem
a DML: INSERT, UPDATE, DELETE e SELECT.
○ Alguns autores definem que o comando SELECT faz
parte de uma subdivisão chamada DQL (Data Query
Language – Linguagem de Consulta de Dados).
47. Banco de dados SQL
● DCL (Data Control Language – Linguagem de Controle de
Dados). Os comandos DCL são usados para gerenciar
usuários e permissões de acesso ao Sistema Gerenciador
de Banco de Dados. Comandos que compõem a DCL:
GRANT e REVOKE.
● Alguns autores ainda definem uma subdivisão da linguagem
SQL chamada DTL (Data Transaction Languagem –
Linguagem de Transação de Dados). Uma transação pode
ser compreendida como um conjunto de comandos que é
executado de forma atômica, ou seja, ou todos os
comandos são executados com sucesso ou nenhum dos
resultados obtidos por eles será mantido no banco de
dados.
50. Criando o banco de dados
CREATE TABLE LIVRO (
idLIVRO INTEGER UNSIGNED NOT NULL
AUTO_INCREMENT,
EXEMPLAR VARCHAR(20) NULL,
ISBN NUMERIC(20) NULL,
TITULO VARCHAR(200) NULL,
AUTORES VARCHAR(500) NULL,
PRIMARY KEY(idLIVRO)
);
CREATE TABLE INSCRICAO (
idINSCRICAO INTEGER UNSIGNED NOT NULL
AUTO_INCREMENT,
NOME VARCHAR(100) NULL,
ENDERECO VARCHAR(500) NULL,
TELEFONE VARCHAR(15) NULL,
DATA_INSCRICAO DATE NULL,
PRIMARY KEY(idINSCRICAO)
);
CREATE TABLE RESERVA (
idRESERVA INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
LIVRO_idLIVRO INTEGER UNSIGNED NOT NULL,
INSCRICAO_idINSCRICAO INTEGER UNSIGNED NOT NULL,
DATA_RESERVA DATE NULL,
PRIMARY KEY(idRESERVA),
INDEX RESERVA_FKIndex1(INSCRICAO_idINSCRICAO),
INDEX RESERVA_FKIndex2(LIVRO_idLIVRO),
FOREIGN KEY(INSCRICAO_idINSCRICAO)
REFERENCES INSCRICAO(idINSCRICAO)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(LIVRO_idLIVRO)
REFERENCES LIVRO(idLIVRO)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE TABLE REQUISICAO (
idREQUISICAO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
INSCRICAO_idINSCRICAO INTEGER UNSIGNED NOT NULL,
LIVRO_idLIVRO INTEGER UNSIGNED NOT NULL,
DATA_REQUISICAO DATE NULL,
DATA_ENTREGA DATE NULL,
PRIMARY KEY(idREQUISICAO),
INDEX REQUISICAO_FKIndex1(INSCRICAO_idINSCRICAO),
INDEX REQUISICAO_FKIndex2(LIVRO_idLIVRO),
FOREIGN KEY(INSCRICAO_idINSCRICAO)
REFERENCES INSCRICAO(idINSCRICAO)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(LIVRO_idLIVRO)
REFERENCES LIVRO(idLIVRO)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
51. Criando o banco de dados - Como funciona?
CREATE TABLE <nome_da_tabela> (
<nome_do_campo> <tipo_do_campo> <opções>,
<nome_do_campo> <tipo_do_campo> <opções>,
<nome_do_campo> <tipo_do_campo> <opções>,
...
PRIMARY KEY(<nome_do_campo>)
INDEX <nome_do_índice>(<nome_do_campo>),
FOREIGN KEY(<nome_do_campo>)
REFERENCES <nome_da_tabela_origem>(<nome_do_campo_origem>)
ON DELETE <opção_de_referencia>
ON UPDATE <opção_de_referencia>,
);
●
●
●
●
●
●
●
<nome_da_tabela>: Nome da tabela a ser criada, não pode haver espaços e acentuações.
<nome_do_campo>: Nome do campo da tabela, não pode haver espaços e acentuações.
<tipo_do_campo>: Tipo do campo. Existem tipos padrões, porém existem tipos de campos específicos de cada
SGBD.
<opções>: Padronização do campo (valor padrão, auto incremento, limite numérico, etc...).
Chave primária: Deve constar o nome do campo (se forma mais de um, separar por vírgula) que compões a chave
primária. Caso a tabela não contenha uma chave primária, basta suprimir essa linha.
Índices: Deve constar o nome do índice e o nome do campo (se forma mais de um campo, separar por vírgula) que
compões o índice. Caso a tabela não contenha uma chave primária, basta suprimir essa linha. A tabela pode conter
quantos índices forem necessários.
Chave estrangeira: Deve constar o nome do campo que compões a chave, o nome da tabela de origem e o nome do
campo da tabela de origem . Caso a tabela não contenha uma chave primária, basta suprimir essa linha. A opção de
referência define o comportamento entre os registros da tabela (Se apagar na tabela-pai, apaga na tabela-filho, por
exemplo).
52. Criando o banco de dados - Como funciona?
CREATE TABLE INSCRICAO (
idINSCRICAO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
NOME VARCHAR(100) NULL,
ENDERECO VARCHAR(500) NULL,
TELEFONE VARCHAR(15) NULL,
DATA_INSCRICAO DATE NULL,
PRIMARY KEY(idINSCRICAO)
);
53. Criando o banco de dados - Como funciona?
CREATE TABLE LIVRO (
idLIVRO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
EXEMPLAR VARCHAR(20) NULL,
ISBN NUMERIC(20) NULL,
TITULO VARCHAR(200) NULL,
AUTORES VARCHAR(500) NULL,
PRIMARY KEY(idLIVRO)
);
54. Criando o banco de dados - Como funciona?
CREATE TABLE REQUISICAO (
idREQUISICAO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
INSCRICAO_idINSCRICAO INTEGER UNSIGNED NOT NULL,
LIVRO_idLIVRO INTEGER UNSIGNED NOT NULL,
DATA_REQUISICAO DATE NULL,
DATA_ENTREGA DATE NULL,
PRIMARY KEY(idREQUISICAO),
INDEX REQUISICAO_FKIndex1(INSCRICAO_idINSCRICAO),
INDEX REQUISICAO_FKIndex2(LIVRO_idLIVRO),
FOREIGN KEY(INSCRICAO_idINSCRICAO)
REFERENCES INSCRICAO(idINSCRICAO)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(LIVRO_idLIVRO)
REFERENCES LIVRO(idLIVRO)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
55. Criando o banco de dados - Como funciona?
CREATE TABLE RESERVA (
idRESERVA INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
LIVRO_idLIVRO INTEGER UNSIGNED NOT NULL,
INSCRICAO_idINSCRICAO INTEGER UNSIGNED NOT NULL,
DATA_RESERVA DATE NULL,
PRIMARY KEY(idRESERVA),
INDEX RESERVA_FKIndex1(INSCRICAO_idINSCRICAO),
INDEX RESERVA_FKIndex2(LIVRO_idLIVRO),
FOREIGN KEY(INSCRICAO_idINSCRICAO)
REFERENCES INSCRICAO(idINSCRICAO)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(LIVRO_idLIVRO)
REFERENCES LIVRO(idLIVRO)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
56. Principais comandos DDL
CREATE DATABASE
Este comando é utilizado para criar um banco de dados. Exemplo: CREATE DATABASE loja;
USE
Sempre que for necessário manipular as tabelas de um banco de dados no SGBD MySQL, será necessário selecionar o banco
de dados que se deseja manipular. Para isso, deve ser utilizado o comando USE. Exemplo: USE loja;
CREATE TABLE
Cria uma tabela de dados. Sintaxe: CREATE TABLE <nome_da_tabela> (definição dos campos);
Exemplo:
CREATE TABLE clientes(
cpf integer unsigned not null,
nome varchar(100) not null,
data_nascimento date not null,
sexo char(1) default ‘M’,
salario decimal(10,2) default 0,
profissao varchar(30),
primary key(cpf)
);
Cláusula DEFAULT
A cláusula DEFAULT permite definir um valor padrão para um campo, que será utilizado caso não seja informado nenhum
valor para esse campo na inserção de um registro na tabela. Exemplo: sexo char(1) default ‘M’,
No exemplo acima, caso o campo “sexo” da tabela não seja preenchido com um valor durante a inserção de um registro, será
assumido o valor ‘M’ para o campo. Para campos do tipo NUMÉRICO, o valor DEFAULT é escrito sem aspas.
Exemplo: salario decimal(10,2) default 0,
57. Principais comandos DDL
CONSTRAINTS (limitações, restrições)
● NOT NULL: define que um campo da tabela é obrigatório (deve receber um valor na inserção de um registro);
● PRIMARY KEY: define que um campo ou conjunto de campos para garantir a identidade de cada registro. Quando um
campo é definido como chave primária, seu valor não pode se repetir em registros diferentes. Cada tabela só pode ter
uma única chave primária.
○ CHAVE PRIMÁRIA SIMPLES: composta por um único campo. Exemplo: se for definido que em um sistema de
hotéis não podem existir dois clientes com o mesmo CPF, portanto este campo deverá ser definido como CHAVE
PRIMÁRIA.
○ CHAVE PRIMÁRIA COMPOSTA: formada por dois ou mais campos. Exemplo: se for definido em um sistema de
Agências bancárias que não podem existir duas contas com o mesmo número da mesma agência, então esses
dois campos formarão uma CHAVE PRIMÁRIA COMPOSTA, pois a combinação deles não pode se repetir.
Sintaxe:
Criação de uma chave primária simples
Criação de uma chave primária composta
CREATE TABLE contas(
numero integer not null primary key,
saldo integer default 0,
agencia_numero integer not null
);
Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero)
);
Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
constraint pk_conta primary key(numero)
);
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero,agencia_numero)
);
Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
constraint pk_conta primary key (numero,
agencia_numero)
);
58. Principais comandos DDL
CONSTRAINTS
● FOREIGN KEY: Uma chave estrangeira é definida quando se deseja relacionar tabelas do banco de dados.
Sintaxe:
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero,agencia_numero),
foreign key(agencia_numero) references agencias(numero)
);
Ou
CREATE TABLE contas(
numero integer not null,
saldo integer default 0,
agencia_numero integer not null,
primary key(numero,agencia_numero),
constraint fk_contaagencia foreign key(agencia_numero) references agencias(numero)
);
59. Principais comandos DDL
CONSTRAINTS
● UNIQUE: Uma constraint UNIQUE definie que o valor de um campo ou de uma sequência de campos não pode se
repetir em registros da mesma tabela. Essa constraint é criada de forma implícita quando é definida uma chave primária
para uma tabela. Como só é possível ter uma chave primária por tabela, a utilização de constraints UNIQUE é uma
solução quando se deseja restringir valores repetidos em outros campos.
Exemplo:
CREATE TABLE clientes(
cpf integer not null,
nome varchar(100) not null,
data_nascimento date not null,
sexo char(1) default ‘M’,
salario decimal(10,2) default 0,
profissao varchar(30),
rg integer not null,
estado char(2) not null,
primary key(cpf),
constraint un_rgestado unique(rg,estado)
);
60. Principais comandos DDL
DROP TABLE
O comando DROP TABLE é usado para apagar uma tabela do Banco de dados. Sintaxe: DROP TABLE <nome_da_tabela>;
ALTER TABLE
Para não se apagar uma tabela e recriá-la, é possível fazer alterações em sua estrutura por meio do comando ALTER TABLE.
Isso é importante pois a execução do comando DROP TABLE apaga (obviamente) todos os registros da tabela, já a execução
do comando ALTER TABLE não exclui nenhum registro.
Adicionar um campo
Sintaxe: ALTER TABLE <nome_da_tabela> ADD <nome_do_campo> <tipo_de_dado> <atributos>
Exemplo: ALTER TABLE clientes ADD endereco varchar(90) not null;
Alterar o tipo de dado de um campo
Sintaxe: ALTER TABLE <nome_da_tabela> MODIFY <nome_do_campo> <tipo_de_dado>
Exemplo: ALTER TABLE clientes MODIFY endereco varchar(200);
Renomear um campo e modificar o tipo
Sintaxe: ALTER TABLE <nome_da_tabela> CHANGE COLUMN <nome_do_campo novo_nome> <tipo>;
Exemplo para mudar apenas o nome (o tipo do campo é mantido):
ALTER TABLE clientes CHANGE COLUMN data_nascimento datanasc date;
Exemplo para mudar o nome e o tipo do campo:
ALTER TABLE clientes CHANGE COLUMN data_nascimento datahoranasc datetime;
Renomear uma tabela
Sintaxe: ALTER TABLE <nome_da_tabela> RENAME TO <novo_nome_da_tabela>
Exemplo: ALTER TABLE clientes RENAME TO pessoas_fisicas
Apagar um campo
Sintaxe: ALTER TABLE <nome_da_tabela> DROP COLUMN <nome_do_campo>
Exemplo: ALTER TABLE clientes DROP COLUMN endereco;
61. Principais comandos DDL
ALTER TABLE
Adicionar uma PRIMARY KEY
Sintaxe:
ALTER TABLE <nome_da_tabela> ADD CONSTRAINT <nome_da_constraint> PRIMARY KEY(campo1[,campo2,campo3,...,
campoN])
Exemplo:
ALTER TABLE clientes ADD CONSTRAINT pk_cpf PRIMARY KEY(cpf)
Apagar uma PRIMARY KEY
Sintaxe:
ALTER TABLE <nome_da_tabela> DROP PRIMARY KEY
Ou
ALTER TABLE <nome_da_tabela> DROP CONSTRAINT <nome_da_constraint_da_primary_key>
Exemplo:
ALTER TABLE clientes DROP PRIMARY KEY;
Ou
ALTER TABLE clientes DROP CONSTRAINT pk_cpf;
62. Principais comandos DDL
ALTER TABLE
Adicionar uma FOREIGN KEY
Sintaxe: ALTER TABLE <nome_da_tabela> ADD CONSTRAINT <nome_da_constraint> FOREIGN KEY(campo1[,campo2,
campo3,...,campoN]) REFERENCES <nome_da_tabela>(campo1[,campo2,campo3,...,campoN]);
Exemplo:
ALTER TABLE contas ADD CONSTRAINT fk_contaagencia FOREIGN KEY(agencia_numero) REFERENCES
agencias(numero);
Adicionar uma constraint UNIQUE
Sintaxe: ALTER TABLE <nome_da_tabela> ADD CONSTRAINT <nome_da_constraint> UNIQUE(campo1[,campo2,
campo3,...,campoN])
Exemplo:
ALTER TABLE clientes ADD CONSTRAINT un_rgestado UNIQUE(rg,estado)
Apagar uma CONSTRAINT qualquer
Sintaxe: ALTER TABLE <nome_da_tabela> DROP CONSTRAINT <nome_da_constraint>
Exemplo:
ALTER TABLE contas DROP CONSTRAINT fk_contaagencia
Comando SHOW TABLES
Para visualizar todas as tabelas em um banco de dados, utilize o comando SHOW TABLES.
Exemplo: SHOW TABLES;
Comando DESC
Para visualizar a estrutura de uma tabela, utilize o comando DESC (ou DESCRIBE).
Exemplo: DESC clientes;
64. Banco de dados SQL
● A subdivisão da linguagem SQL denominada
DML (Data Manipulation Language) é composta
pelos seguintes comandos:
○ INSERT: Inclui registro na tabela.
○ UPDATE: Atualiza registros já existentes na
tabela.
○ DELETE: Exclui registros da tabela.
○ SELECT: Recupera registros armazenados
na tabela (uma ou mais, simultâneamente).
65. Banco de dados SQL
● INSERT
Sintaxe:
INSERT INTO <nome_da_tabela> (<campo1,campo2,
campo3,...,campoN>) VALUES (<valor1, valor2,
valor3, ..., valorN>);
● Exemplo:
INSERT INTO cidades (cep, nome, estado) VALUES
(02930000,’São Paulo’,’SP’);
●
Observações:
1) Valores do tipo TEXTO devem ser envolvidos por aspas simples ( ‘ );
2) Valores do tipo numéricos (INTEGER, NUMERIC, DECIMAL, etc..) não são
envolvidos por aspas simples e devem utilizar o ponto decimal para separação
das casas decimais no lugar na vírgula. Ex.: 3.25
66. Banco de dados SQL
● Outra sintaxe do comando INSERT permite ocultar os
campos e escrever somente os valores que serão inseridos.
● Exemplo:
INSERT
INTO
Paulo’,’SP’);
cidades
VALUES
(02930000,’São
● É possível usar o INSERT para múltiplos registros.
● Exemplo:
INSERT INTO
cidades;
●
cidades_backup
SELECT
*
FROM
Observações: Para a execução do comando acima é necessário que os tipos de
dados dos campos da tabela cidades_backup estejam na mesma ordem dos
tipos de dados dos campos da tabela cidades.
67. Banco de dados SQL
● UPDATE
Sintaxe:
UPDATE <nome_da_tabela> SET <campo1 = valor1>,
<campo2 = valor2>, <campo3 = valor3>, ...,
<campoN = valorN> [ WHERE condições]
● Exemplo:
UPDATE cidades SET nome = ‘Sampa’;
●
O comando UPDATE acima altera o campo nome de todas as cidades para
‘Sampa’.
68. Banco de dados SQL
● Para restringir a alteração dos registros a um subconjunto
deles, é utilizada a cláusula WHERE, que permite processar
uma ou mais condições.
● Exemplo:
UPDATE cidades SET
nome = ‘Sampa’,
estado = ‘SP’
WHERE cep = 02930000;
69. Banco de dados SQL
● DELETE
Sintaxe:
DELETE FROM <nome_da_tabela> [WHERE condições];
● Exemplo:
DELETE FROM cidades;
● O comando acima exclui todos os registros da tabela
cidades. Para excluir apenas um subconjunto dos registros,
é necessário utilizar a cláusula WHERE.
● Exemplo:
DELETE FROM cidades WHERE cep = 02930000;
70. Banco de dados SQL
● SELECT
Sintaxe:
SELECT <campo1>, <campo2>, ..., <campoN> FROM <tabela1>,
<tabela2>, ..., <tabelaN> [ JOIN <tabela> ON condições]
[ WHERE condições ] [ORDER BY <campos>];
●
Exemplos:
Exibir todos os campos de uma tabela
SELECT * FROM cidades;
Exibir um campo de uma tabela
SELECT nome FROM cidades;
Exibir mais de um campo de uma tabela
SELECT nome, cep FROM cidades;
Apelidando campos
SELECT nome as nome_cidade, cep as cep_cidade FROM cidades;
Apelidando tabelas
SELECT nome, cep FROM cidades as cid;
Selecionando campos a partir do nome da tabela
SELECT cidades.nome, cidades.cep FROM cidades;
Selecionando campos a partir do apelido da tabela
SELECT cid.nome, cid.cep FROM cidades as cid;
71. Banco de dados SQL
● Cláusula WHERE
●
Igual: =
UPDATE clientes SET endereco = ‘Rua dos Bobos 0’
WHERE cpf = 123456789;
●
Diferente: <>
UPDATE clientes SET endereco = ‘Rua dos Bobos 0’, bairro =
‘Centro’ WHERE cpf <> 123456789;
●
Maior: >
SELECT * FROM funcionarios WHERE salario > 1000.50;
●
Menor: <
SELECT
*
FROM
'1979/03/29';
clientes
WHERE
data_nascimento
●
Maior ou igual: <
SELECT * FROM funcionarios WHERE data_adm >= '2006/01/01';
●
Menor ou igual: <
SELECT * FROM funcionarios WHERE data_adm <= '2006/01/01';
●
IN: Comparação de igualdade com múltiplos valores
<
72. Banco de dados SQL
● Cláusula WHERE
●
LIKE: Comparação de partes do texto
SELECT * FROM funcionarios WHERE nome LIKE ‘a%’;
Seleciona todos os funcionários cujos nomes iniciam pela letra “a”.
SELECT * FROM funcionarios WHERE nome LIKE ‘%o’;
Seleciona todos os funcionários cujos nomes terminam pela letra “o”.
SELECT * FROM funcionarios WHERE nome LIKE ‘%a%’;
Seleciona todos os funcionários cujos nomes possuem a letra “a” em qualquer posição (início, meio ou fim).
SELECT * FROM funcionarios WHERE nome LIKE ‘_a%’;
Seleciona todos os funcionários cujos nomes iniciam por qualquer letra e possuem a letra “a” no segundo caractere.
SELECT * FROM funcionarios WHERE nome LIKE ‘__u%’;
Seleciona todos os funcionários cujos nomes possuem a letra “u” na terceira posição.
SELECT * FROM funcionarios WHERE nome LIKE ‘%o_’;
Seleciona todos os funcionários cujos nomes possuem a letra “o” na penúltima posição.
73. Banco de dados SQL
● Cláusula WHERE
●
Soma: +
UPDATE funcionarios SET salario = salario + 10;
Acrescenta R$ 10,00 ao salário dos funcionários.
●
Subtração: UPDATE funcionarios SET salario = salario – 5 WHERE salario
>
1000;
Subtrai R$ 5,00 do salário dos funcionários que ganham mais de R$ 1000,00.
●
Multiplicação: *
UPDATE funcionarios SET salario = salario*1.1;
Aumenta o salário dos funcionários em 10%.
●
Divisão: /
UPDATE funcionarios
(10/100);
SET
salario
=
salario
+
salario*
Aumenta o salário dos funcionários em 10%.
●
IS: Operador especial para comparação de igualdade. Este operador é usado
74. Banco de dados SQL
● Cláusula WHERE
●
AND
SELECT * FROM clientes WHERE nome LIKE ‘a%’ AND
data_nascimento <= ‘1980/01/01’;
Seleciona todos os clientes cujos nomes iniciam pela letra “a” e cujas datas de nascimento são anteriores a 01/01/1980.
●
OR
SELECT * FROM cidades WHERE UF='SP' OR UF ='MG';
Seleciona as cidades dos estados de SP ou Minas Gerais.
●
Multiplicação: *
UPDATE funcionarios SET salario = salario*1.1;
Aumenta o salário dos funcionários em 10%.
●
NOT
SELECT nome FROM funcionarios WHERE NOT(salario < 1000);
Seleciona o nome dos funcionários que não possuem salário menor que 1000.
75. Banco de dados SQL
● Junção de tabelas
●
Usando a cláusula WHERE
SELECT * FROM clientes, cidades
WHERE clientes.cep = cidades.cep;
Para a junção de tabelas, sempre devem ser escritas as condições entre os campos que estão
relacionados nas tabelas. Geralmente, essas condições envolvem os campos que são chaves
estrangeiras de uma tabela e os que são chaves primárias da outra, porém nada impede de serem
feitas condições entre campos que não são chaves.
●
Usando a cláusula JOIN
SELECT cidades.nome, clientes.nome FROM clientes
INNER JOIN cidades ON cidades.cep = clientes.cep;
A cláusula INNER JOIN define que serão selecionados somente os registros de uma tabela que
possuem relação com os registros da outra tabela. No exemplo acima, serão selecionados todos os
clientes cujos CEPs dos endereços existam na tabela cidades.
76. Banco de dados SQL
● Junção de tabelas
●
Usando a cláusula LEFT JOIN
SELECT cidades.nome, clientes.nome
FROM clientes
LEFT JOIN cidades ON cidades.cep = clientes.cep;
Para interpretar o LEFT JOIN, faz-se a pergunta: qual tabela está à esquerda do JOIN? No comando
acima, a tabela que está à esquerda da cláusula JOIN é a tabela clientes. Portanto, serão selecionados
todos os registros da tabela clientes estando ou não relacionados com a tabela cidades pelo campo
cep.
●
Usando a cláusula RIGHT JOIN
SELECT cidades.nome, clientes.nome
FROM clientes
RIGHT JOIN cidades ON cidades.cep = clientes.cep;
A cláusula RIGHT JOIN possui o mesmo funcionamento da cláusula LEFT JOIN, com a exceção de
que seleciona todos os registros da tabela que está à direita do JOIN estando ou não relacionados com
os registros da tabela que está à esquerda do JOIN.
Para interpretar o RIGHT JOIN, faz-se a pergunta: qual tabela está à direita do JOIN? A tabela cidades.
Portanto, serão selecionados todos os registros da tabela cidades que estão ou não relacionados com
os registros da tabela clientes.
77. Banco de dados SQL
● Cláusula ORDER BY
Sintaxe:
SELECT ... ORDER BY <campo1>, <campo2>, <campoN> ... [desc|asc]
●
Exemplos:
Seleciona as cidades cujos nomes iniciam pela letra “a” e ordena a lista primeiramente pelo CEP e, em seguida, pelo nome.
SELECT * FROM cidades WHERE nome LIKE ‘a%’ ORDER BY cep, nome;
Seleciona todos os clientes ordenando decrescentemente pelo nome e, se houver repetição de valores, obedece à ordem crescente da data de
nascimento.
SELECT * FROM clientes ORDER BY nome DESC, data_nascimento;
Seleciona todos os clientes ordenando crescentemente pelo nome e, se houver repetição de valores, obedece à ordem decrescente da data de
nascimento.
SELECT * FROM clientes ORDER BY nome, data_nascimento DESC;