Administração de Banco de Dados

77
Administração de Banco de dados Introdução Image: FreeDigitalPhotos.net

description

Aulas da disciplina Administração de Banco de dados. 2º semestre TI/RC - 3º semestre ADS Unip.

Transcript of Administração de Banco de Dados

Page 1: Administração de Banco de Dados

Administração de Banco de dados

IntroduçãoImage: FreeDigitalPhotos.net

Page 2: Administração de Banco de Dados

Conteúdo programático

● Introdução à banco de dados○ Histórico○ Definição○ Importância dos sistemas de bancos de dados

nas organizações

Page 3: Administração de Banco de Dados

Introdução: Banco de dados

Page 4: Administração de Banco de Dados

Introdução: Banco de dados

Page 5: Administração de Banco de Dados

Introdução: Banco de dados

● Exemplo de tabela

● Um banco de dados é um conjunto de tabelas.

● Representa aspectos da vida real.

Nome RA Nota

Bonifácio Cubas 125159 9,5

Ana Cintra 125148 8,0

Page 6: Administração de Banco de Dados

Introdução: Banco de dados

● Profissionais envolvidos: Projetistas de Bancos de Dados (DBP)

Image: FreeDigitalPhotos.net

Page 7: Administração de Banco de Dados

Introdução: Banco de dados

● Profissionais envolvidos: Analistas de sistemas e programadores

Image: FreeDigitalPhotos.net

Page 8: Administração de Banco de Dados

Introdução: Banco de dados

● Profissionais envolvidos: Administradores de Bancos de Dados (DBA)

Image: FreeDigitalPhotos.net

Page 9: Administração de Banco de Dados

Introdução: Banco de dados

● Profissionais envolvidos: Usuários

Image: FreeDigitalPhotos.net

Page 10: Administração de Banco de Dados

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

Page 11: Administração de Banco de Dados

Administração de Banco de dados

Modelos LógicosImage: FreeDigitalPhotos.net

Page 12: Administração de Banco de Dados

Modelo logico

● São modelos de dados

● É uma representação teórica de como será a implementação do banco de dados

● Deve ser independente de tecnologia

Image: FreeDigitalPhotos.net

Page 13: Administração de Banco de Dados

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

Page 14: Administração de Banco de Dados

Modelando dados

Image: FreeDigitalPhotos.net

Aluno

Matrícula

Nome

Endereço

Data Nascimento

● Um modelo é formado por:

○ Entidades

○ Atributos

Page 15: Administração de Banco de Dados

Modelando dados

Image: FreeDigitalPhotos.net

Aluno

#Matrícula

Nome

Endereço

Data Nascimento

Atributo identific

ador

(Chave Primária)

Page 16: Administração de Banco de Dados

Modelando dados

Image: FreeDigitalPhotos.net

Aluno:#MatrículaNomeEndereçoData Nascimento

Outra maneira de

representar

Page 17: Administração de Banco de Dados

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 Entidade 2Relacionamento

Page 18: Administração de Banco de Dados

Modelando dados

● DER

Entidade 1 Entidade 2Um ou muitos

Entidade 3

Um e somenteum

Um ou muitos

Um ou nenhum Exemplo de

relacionamento

Page 19: Administração de Banco de Dados

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

Page 20: Administração de Banco de Dados

Modelando dados na prática

● Exemplo: Cliente○ Uma empresa controla os seguintes dados de seus

clientes:■ Código■ Nome■ Endereço■ Telefone

Cliente:#CódigoNomeEndereçoTelefone

Page 21: Administração de Banco de Dados

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ódigoClienteDataValor

Detalhe Pedido:#Código Pedido#Código ProdutoQuantidadeValor

Produto:#CódigoDescriçãoValor

Page 22: Administração de Banco de Dados

Modelando dados na prática● DER

Cliente PedidoN

Produto

1

1

1

Faz

Detalhe Pedido

FormaNN

Compõe

Page 23: Administração de Banco de Dados

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)

Page 24: Administração de Banco de Dados

Fixando conteúdo...

3. Identifique, descreva e relacione, ao menos 3 entidades, em um restaurante.

Page 25: Administração de Banco de Dados

Administração de Banco de dados

Modelos FísicosImage: FreeDigitalPhotos.net

Page 26: Administração de Banco de Dados

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 as limitações do SGBD

Image: FreeDigitalPhotos.net

Page 27: Administração de Banco de Dados

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

Page 28: Administração de Banco de Dados

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

Page 29: Administração de Banco de Dados

Nomenclatura

● Tipos de campos

○ Char(N)○ Varchar(N)○ Numeric(N,P)○ Integer○ Date○ Time○ TimeStamp

N = TamanhoP = Precisão decimal

Page 30: Administração de Banco de Dados

Modelando dados

Page 31: Administração de Banco de Dados

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.

Page 32: Administração de Banco de Dados

Fixando conteúdo...

Ficha de ClienteNumero: __________Nome: _______________________________________________Endereço:______________________________________________Telefone: __________ Fax: __________ Data: ___/___/___

Ficha de ServiçoN. 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:___

Page 33: Administração de Banco de Dados

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.

Page 34: Administração de Banco de Dados

Fixando conteúdo...

Empresa

Colaboradores Clientes

Serviços

Tipos de serviços(setores)

Aptidões

Page 35: Administração de Banco de Dados

Fixando conteúdo...

Page 36: Administração de Banco de Dados

Fixando conteúdo...

Page 37: Administração de Banco de Dados

Fixando conteúdo...

Page 38: Administração de Banco de Dados

Fixando conteúdo...

Page 39: Administração de Banco de Dados

Fixando conteúdo...

Page 40: Administração de Banco de Dados

Fixando conteúdo...

Page 41: Administração de Banco de Dados

Administração de Banco de dados

Criando o Banco de DadosImage: FreeDigitalPhotos.net

Page 42: Administração de Banco de Dados

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.

Page 43: Administração de Banco de Dados

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.

Page 44: Administração de Banco de Dados

Banco de dados SQL

● Os comandos da linguagem SQL são subdivididos em algumas categorias de comandos como:

○ DDL○ DML○ DCL

Page 45: Administração de Banco de Dados

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.

Page 46: Administração de Banco de Dados

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).

Page 47: Administração de Banco de Dados

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.

Page 48: Administração de Banco de Dados

Criando o banco de dados

Page 49: Administração de Banco de Dados

Criando o banco de dados

Page 50: Administração de Banco de Dados

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);

Page 51: Administração de Banco de Dados

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).

Page 52: Administração de Banco de Dados

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));

Page 53: Administração de Banco de Dados

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));

Page 54: Administração de Banco de Dados

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);

Page 55: Administração de Banco de Dados

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);

Page 56: Administração de Banco de Dados

Principais comandos DDL

CREATE DATABASEEste comando é utilizado para criar um banco de dados. Exemplo: CREATE DATABASE loja;

USESempre 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 TABLECria 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 DEFAULTA 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,

Page 57: Administração de Banco de Dados

Principais comandos DDLCONSTRAINTS (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.

Criação de uma chave primária composta

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));

Sintaxe:Criação de uma chave primária simples

CREATE TABLE contas(numero integer not null primary key,saldo integer default 0,agencia_numero integer not null);OuCREATE TABLE contas(numero integer not null,saldo integer default 0,agencia_numero integer not null,primary key(numero));OuCREATE TABLE contas(numero integer not null,saldo integer default 0,agencia_numero integer not null,constraint pk_conta primary key(numero));

Page 58: Administração de Banco de Dados

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));

Page 59: Administração de Banco de Dados

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));

Page 60: Administração de Banco de Dados

Principais comandos DDLDROP TABLEO comando DROP TABLE é usado para apagar uma tabela do Banco de dados. Sintaxe: DROP TABLE <nome_da_tabela>;

ALTER TABLEPara 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 campoSintaxe: 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 campoSintaxe: 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 tipoSintaxe: 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 tabelaSintaxe: ALTER TABLE <nome_da_tabela> RENAME TO <novo_nome_da_tabela>Exemplo: ALTER TABLE clientes RENAME TO pessoas_fisicas

Apagar um campoSintaxe: ALTER TABLE <nome_da_tabela> DROP COLUMN <nome_do_campo>Exemplo: ALTER TABLE clientes DROP COLUMN endereco;

Page 61: Administração de Banco de Dados

Principais comandos DDLALTER 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;

Page 62: Administração de Banco de Dados

Principais comandos DDLALTER TABLE

Adicionar uma FOREIGN KEYSintaxe: 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 UNIQUESintaxe: 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 qualquerSintaxe: ALTER TABLE <nome_da_tabela> DROP CONSTRAINT <nome_da_constraint>

Exemplo:ALTER TABLE contas DROP CONSTRAINT fk_contaagencia

Comando SHOW TABLESPara visualizar todas as tabelas em um banco de dados, utilize o comando SHOW TABLES.

Exemplo: SHOW TABLES;

Comando DESCPara visualizar a estrutura de uma tabela, utilize o comando DESC (ou DESCRIBE).Exemplo: DESC clientes;

Page 63: Administração de Banco de Dados

Administração de Banco de dados

Manipulando as informações

Image: FreeDigitalPhotos.net

Page 64: Administração de Banco de Dados

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).

Page 65: Administração de Banco de Dados

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

Page 66: Administração de Banco de Dados

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 cidades VALUES (02930000,’São Paulo’,’SP’);

● É possível usar o INSERT para múltiplos registros.● Exemplo:

INSERT INTO cidades_backup SELECT * FROM cidades;

● 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.

Page 67: Administração de Banco de Dados

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’.

Page 68: Administração de Banco de Dados

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;

Page 69: Administração de Banco de Dados

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;

Page 70: Administração de Banco de Dados

Banco de dados SQL● SELECTSintaxe: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;

Page 71: Administração de Banco de Dados

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 clientes WHERE data_nascimento < '1979/03/29';

● 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 valoresSELECT * FROM cidades WHERE UF IN ('SP','RJ','MG');

Page 72: Administração de Banco de Dados

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.

Page 73: Administração de Banco de Dados

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 SET salario = salario + salario*(10/100);Aumenta o salário dos funcionários em 10%.

● IS: Operador especial para comparação de igualdade. Este operador é usado para comparação com o valor NULL.SELECT nome FROM funcionarios WHERE celular IS NULL.

Page 74: Administração de Banco de Dados

Banco de dados SQL

● Cláusula WHERE● AND

SELECT * FROM clientes WHERE nome LIKE ‘a%’ ANDdata_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.

● ORSELECT * 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%.

● NOTSELECT nome FROM funcionarios WHERE NOT(salario < 1000);Seleciona o nome dos funcionários que não possuem salário menor que 1000.

Page 75: Administração de Banco de Dados

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 JOINSELECT cidades.nome, clientes.nome FROM clientesINNER 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.

Page 76: Administração de Banco de Dados

Banco de dados SQL● Junção de tabelas● Usando a cláusula LEFT JOIN

SELECT cidades.nome, clientes.nomeFROM 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 JOINSELECT cidades.nome, clientes.nomeFROM 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.

Page 77: Administração de Banco de Dados

Banco de dados SQL

● Cláusula ORDER BYSintaxe: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;