Banco de Dados
DIEGO BARCELOS RODRIGUES
dbarcelos@ifes.edu.br
2015 (2015/1) 1
Agenda
● Breve revisão dos Conceitos Básicos
● SQL (Linguagem de Consulta Estruturada)
Subdivisões da Linguagem
DDL (Linguagem de Definição de Dados)
o CREATE
o DROP
o ALTER
Vimos que...
• Banco de Dados (Database)
– consiste em uma estrutura computacional compartilhada e integrada que
armazena dados (em um conjunto de arquivos), sejam eles do usuário ou
metadados.
– pode ser classificado como: • monousuário
• multiusuário
– grupo de trabalho – empresarial
• operacional, transacional ou de produção • homologação
• data warehouse (armazém de dados) • centralizado
• O Sistema de Gerenciamento de Banco de Dados (SGBD)
– é um conjunto de programas que gerenciam Bancos de Dados e controlam o
acesso aos dados armazenados
– age como um intermediário entre o usuário e o Banco de Dados; – é o único modo de acesso aos dados de uma Database;
– transforma o lógico para o físico e o físico para o lógico;
– gerencia a segurança, a integridade dos dados e rotinas de backup e restauração.
• Por consequência, o SGBD fornece vantagens como:
– aprimoramento do compartilhamento, segurança e integração dos dados; – minimização de inconsistências;
– aumento de produtividade do usuário final.
• São basicamente 4 os tipos de usuários de bancos de
dados:
– DBA
• Administra SGBD’s e Bancos de Dados
– Aplicação Externa
• acessa os dados utilizados em operações diárias da empresa.
– Usuário ad hoc
• acessa diretamente o SGBD para realização consultas ou transações sem estar vinculado a uma aplicação que acessa o BD.
– Programador
• desenvolve aplicações utilizando um ambiente de desenvolvimento que integra LP’s e SQL, produzindo geradores de relatório e formulários.
• São basicamente 3 (três) tipos de visões das
estruturas computacionais de armazenamento
que consituem o banco de dados:
– Metadados
– Dados do Usuário (BD)
– Backup e Log de Transações
• Mas que todos os usuários tem a visão de
uma única estrutura devido ao SGBD ser o
único meio de acesso aos dados.
Vimos que...
SQL
● SQL – Structured Query Language ou Linguagem de
Consulta Estruturada
● Consiste no método de acesso básico ao Banco de
Dados através do SGBDR.
● Subdivisões:
o DDL – Linguagem de Definição de Dados
o DML – Linguagem de Manipulação de Dados
o DCL – Linguagem de Controle de Dados
o DTL – Linguagem de Transação de Dados (Begin Tran,
Commit e Rollback)
SQL – DDL
● Constituída por comandos SQL responsáveis pela
definição (criação, alteração ou remoção) de
databases, tabelas, restrições, etc.
● São apenas três comando:
o CREATE – para a criação de um objeto no banco
o DROP – para remoção de um objeto no banco
o ALTER – para alteração de um objeto no banco
● Podem ser aplicados aos mais variados objetos de
um banco de dados: tabelas, views, índices,
SQL – DDL
● Exemplos:
o CREATE TABLE o ALTER TABLE o DROP TABLE o CREATE INDEX o ALTER INDEX o DROP INDEX o CREATE VIEW o ALTER VIEW o DROP VIEW o CREATE SCHEMA o ALTER SCHEMA o DROP SCHEMASQL – DDL
CREATE TABLE
● Sinopse básica:
CREATE TABLE nome_tabela (
nome_coluna_1 tipo_coluna_1 [ [NOT] NULL ] [ DEFAULT <valor> ] . . . /* Os três pontos representam mais definições de colunas */
[, nome_coluna_n tipo_coluna_n [ [NOT] NULL] ]
[, CONSTRAINT PrefixoRestricao_NomeRestricao
Tipo_Restricao ( lista_de_colunas | condicao )
[ REFERENCES NomeTabela_Referenciada ( lista_de_colunas ) ]
]
. . . /* Os três pontos representam mais definições de restrições */
SQL – DDL
CREATE TABLE
● Sinopse básica:
Onde ‘n’ é um número natural e:
- PrefixoRestricao pode ser:
PK – para restrições PRIMARY KEY FKn – para restrições FOREIGN KEY UN – para restrições UNIQUE
CK – para restrições CHECK
- Nome_Restricao será uma abreviação ou o nome da própria tabela quando se tratar de restrições PRIMARY KEY, FOREIGN KEY e UNIQUE. Quando for uma restrição CHECK o Nome_Restricao deve retratar a condição. Exemplo: CONSTRAINT CK_Emp_Salario_Positivo CHECK (Salario > 0)
SQL – DDL
CREATE TABLE
● Sinopse básica:
CREATE TABLE nome_tabela (
nome_coluna_1 tipo_coluna_1 [[NOT] NULL] [, nome_coluna_n tipo_coluna_n [[NOT] NULL] ]
[, CONSTRAINT PK_nome_tabela PRIMARY KEY (lista_de_colunas)] [, CONSTRAINT UN_nome_restricao UNIQUE (lista_de_colunas)] [, CONSTRAINT FK_nome_restricao FOREIGN KEY (lista_de_colunas) references nome_tabela_refenciada(lista_de_colunas)]
[, CONSTRAINT FK_nome_restricao FOREIGN KEY (lista_de_colunas) references nome_tabela_refenciada(lista_de_colunas)]
[, CONSTRAINT CK_nome_restricao CHECK (condição_01)] [, CONSTRAINT CK_nome_restricao CHECK (condição_n)] );
SQL – DDL
CREATE TABLE
● Exemplo
O código abaixo cria uma tabela vazia chamada
‘departamento’:
CREATE TABLE departamento (
Cd_Dpto
INTEGER
NOT NULL,
Nm_Dpto
VARCHAR(40)
NOT NULL,
Ger_Dpto
CHAR(7),
DtInicioGer DATE ,
Local_Dpto CHAR(500)
NOT NULL,
CONSTRAINT PK_Empregado
PRIMARY KEY (Cd_Dpto)
);
SQL – DDL
CREATE TABLE
● Código para criação da tabela empregado:
CREATE TABLE empregado (
Matr_Emp CHAR(7) NOT NULL, Nm_Emp VARCHAR(40) NOT NULL, Cpf_Emp CHAR(11) NOT NULL, Dpto_Emp INTEGER,
Sal_Emp NUMERIC(12,2) NOT NULL,
DtAd_Emp DATE, /* Data de Admissao do Empregado */ CONSTRAINT PK_Empregado
PRIMARY KEY (matricula), CONSTRAINT UN_Empregado UNIQUE (Cpf), CONSTRAINT CK01_salario CHECK (salario > 0) );
SQL – DDL
ALTER TABLE
● Sinopse básica:
ADD {COLUMN def_col | CONSTRAINT def_restr}
DROP {COLUMN | CONSTRAINT}
TYPE novo_tipo_da_coluna
ALTER TABLE nm_tab ALTER COLUMN nm_col DROP {NOT NULL | DEFAULT}
SET {NOT NULL | DEFAULT valor_default}
TO novo_nome_da_tabela
RENAME
COLUMN nm_col TO novo_nome_da_coluna
Onde:
def_col: nome_coluna tipo_coluna [ [[NOT] NULL] | DEFAULT valor_default]
SQL – DDL
ALTER TABLE
● Exemplos:
ALTER TABLE empregado ADD COLUMN End_Emp VARCHAR(500) NOT NULL
ALTER TABLE empregado DROP COLUMN End_Emp
ALTER TABLE empregado ADD CONSTRAINT FK01_Empregado
FOREIGN KEY (Cd_Dpto) REFERENCES Departamento(Cd_Dpto)
ALTER TABLE empregado ALTER COLUMN Dpto_Emp TYPE SMALLINT
ALTER TABLE empregado ALTER COLUMN End_Emp DROP NOT NULL
ALTER TABLE empregado ALTER COLUMN Dpto_Emp SET NOT NULL
ALTER TABLE empregado ALTER COLUMN DtAdmissao_Emp SET DEFAULT now()
ALTER TABLE empregado RENAME TO Employee
• Exemplos:
– DROP TABLE
ALUNO
– DROP TABLE
PROFESSOR
– DROP TABLE
DISCIPLINA
SQL – DDL
SQL – DML
INSERT INTO
● Sinopse básica:
INSERT INTO
nome_tabela (lista_de_colunas)
VALUES
(respectivos_valores_das_colunas)
Exemplo:
INSERT INTO empregado (Matr_Emp,Nm_Emp, Cpf_Emp, Dpto_Emp, Sl_Emp, DtAd_Emp)
VALUES (‘2003509’, ‘Jose Dias’, ‘12312312312’, 9, 1789.00, ‘2011-01-09’)